Cara de abraço

Cara de abraço / all-MiniLM-L12-v2

Um codificador de frases e parágrafos curtos ideal para pesquisa semântica e RAG; baseado no modelo pré-treinado Microsoft/MiniLM-L12-H384-uncased e foi ajustado num grande conjunto de dados com mais de mil milhões de pares de frases.

Introdução ao modelo de incorporação all-MiniLM-L12-v2

  • O "all-MiniLM-L12-v2" é um codificador de frases e parágrafos curtos que produz um vetor que capta a informação semântica do texto de entrada.
  • O modelo baseia-se no modelo pré-treinado Microsoft/MiniLM-L12-H384-uncased e foi aperfeiçoado utilizando um objetivo de aprendizagem contrastiva num grande conjunto de dados com mais de mil milhões de pares de frases.
  • Mapeia frases e parágrafos para um espaço vetorial denso de 384 dimensões, que pode ser utilizado para tarefas como [recuperação de informação] (https://zilliz.com/learn/what-is-information-retrieval), agrupamento e [pesquisa semântica] (https://zilliz.com/glossary/semantic-search).

Como criar embeddings vectoriais com o modelo all-MiniLM-L12-v2

Há duas maneiras principais de criar embeddings vetoriais:

  1. PyMilvus: o Python SDK para Milvus que integra perfeitamente o modelo sentence-transformer.
  2. Biblioteca SentenceTransformer: a biblioteca Python do sentence-transformer.

Uma vez gerados os embeddings vectoriais, estes podem ser armazenados na Zilliz Cloud (um serviço de base de dados vetorial totalmente gerido pela Milvus) e utilizados para pesquisa de similaridade semântica. Eis quatro passos fundamentais:

  1. Inscreva-se para obter uma conta Zilliz Cloud gratuitamente.
  2. Configurar um cluster sem servidor e obter o Ponto de extremidade público e chave de API.
  3. Crie uma coleção de vectores e insira os seus embeddings vectoriais.
  4. Execute uma pesquisa semântica nos embeddings armazenados.

Gerar embeddings vectoriais através do PyMilvus e inseri-los no Zilliz Cloud para pesquisa semântica

from pymilvus.model.dense import SentenceTransformerEmbeddingFunction

ef = SentenceTransformerEmbeddingFunction("sentence-transformers/all-MiniLM-L12-v2")

docs = [
   "A inteligência artificial foi fundada como disciplina académica em 1956",
   "Alan Turing foi a primeira pessoa a efetuar investigação substancial em IA.",
   "Nascido em Maida Vale, Londres, Turing foi criado no sul de Inglaterra."
]
# Gerar embeddings para os documentos
docs_embeddings = ef(docs)

consultas = ["Quando foi fundada a inteligência artificial",
          "Onde nasceu Alan Turing?"]
# Gerar incorporações para consultas
consultas_embeddings = ef(consultas)

# Ligar ao Zilliz Cloud com o ponto de extremidade público e a chave da API
cliente = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "documents" (coleção)
if client.has_collection(nome_da_colecção=COLLECTION):
    cliente.drop_collection(nome_da_colecção=COLLECTION)
client.create_collection(
    nome_da_colecção=COLLECTION,
    dimension=ef.dim,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vetor": embedding})
    
resultados = cliente.search(
    nome_da_colecção=COLLECTION,
    data=query_embeddings,
    output_fields=["text"])

Para mais informações, consulte a nossa PyMilvus Embedding Model documentation.

Gerar embeddings vectoriais via SentenceTransformer e inseri-los no Zilliz Cloud para pesquisa semântica

from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient

model = SentenceTransformer("sentence-transformers/all-MiniLM-L12-v2")

docs = [
   "A inteligência artificial foi fundada como disciplina académica em 1956",
   "Alan Turing foi a primeira pessoa a efetuar investigação substancial em IA.",
   "Nascido em Maida Vale, Londres, Turing foi criado no sul de Inglaterra."
]
# Gerar embeddings para documentos
docs_embeddings = model.encode(docs, normalize_embeddings=True)

consultas = ["consulta: Quando é que a inteligência artificial foi fundada",
           "consulta: Wo wurde Alan Turing geboren?" ]
# Gerar embeddings para as consultas
consultas_embeddings = model.encode(consultas, normalize_embeddings=True)

# Ligar ao Zilliz Cloud com o ponto final público e a chave API
cliente = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "documents" (coleção)
if client.has_collection(nome_da_colecção=COLLECTION):
    cliente.drop_collection(nome_da_colecção=COLLECTION)
client.create_collection(
    nome_da_colecção=COLLECTION,
    dimension=384,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vetor": embedding})
    
resultados = cliente.search(
    nome_da_colecção=COLLECTION,
    data=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Para mais informações, consulte a SentenceTransformer documentation.