Cara de abrazo

Cara de abrazo / all-MiniLM-L12-v2

Un codificador de frases y párrafos cortos ideal para la búsqueda semántica y la RAG; se basa en el modelo preentrenado Microsoft/MiniLM-L12-H384-uncased y se afinó en un gran conjunto de datos de más de 1.000 millones de pares de frases.

Introducción al modelo de incrustación all-MiniLM-L12-v2

  • all-MiniLM-L12-v2` es un codificador de frases y párrafos cortos que genera un vector que captura la información semántica del texto de entrada.
  • El modelo se basa en el modelo preentrenado Microsoft/MiniLM-L12-H384-uncased y se ajustó mediante un objetivo de aprendizaje contrastivo en un gran conjunto de datos de más de mil millones de pares de frases.
  • Asigna frases y párrafos a un espacio vectorial denso de 384 dimensiones, que puede utilizarse para tareas como la recuperación de información, la agrupación y la búsqueda semántica.

Cómo crear incrustaciones vectoriales con el modelo all-MiniLM-L12-v2

Hay dos formas principales de crear incrustaciones vectoriales:

    1. PyMilvus: el SDK de Python para Milvus que integra perfectamente el modelo sentence-transformer.
  1. SentenceTransformer library: la biblioteca Python de sentence-transformer.

Una vez generadas las incrustaciones vectoriales, pueden almacenarse en Zilliz Cloud (un servicio de base de datos vectorial totalmente gestionado e impulsado por Milvus) y utilizarse para la búsqueda de similitud semántica. He aquí cuatro pasos clave:

  1. Inscríbete para obtener una cuenta de Zilliz Cloud de forma gratuita.
  2. Configura un clúster sin servidor y obtén el Public Endpoint and API Key.
  3. Crea una colección de vectores e inserta tus incrustaciones vectoriales.
  4. Ejecuta una búsqueda semántica en las incrustaciones almacenadas.

Generar incrustaciones vectoriales a través de PyMilvus e insertarlas en Zilliz Cloud para la búsqueda semántica.

from pymilvus.model.dense import SentenceTransformerEmbeddingFunction

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

docs = [
   "La inteligencia artificial se fundó como disciplina académica en 1956",
   "Alan Turing fue la primera persona en llevar a cabo una investigación sustancial en IA",
   "Nacido en Maida Vale, Londres, Turing se crió en el sur de Inglaterra."
]
# Generar incrustaciones para documentos
docs_embeddings = ef(docs)

queries = ["¿Cuándo se fundó la inteligencia artificial?
          "¿Dónde nació Alan Turing?"]
# Generar incrustaciones para consultas
incrustaciones_consulta = ef(consultas)

# Conectarse a Zilliz Cloud con el punto final público y la clave API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLECCIÓN = "documentos"
if client.has_collection(nombre_coleccion=COLECCION):
    client.drop_collection(nombre_coleccion=COLECCION)
client.create_collection(
    nombre_colección=COLECCIÓN,
    dimensión=ef.dim,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"texto": doc, "vector": incrustación})
    
resultados = client.search(
    nombre_colección=COLECCIÓN,
    data=consulta_incrustaciones,
    output_fields=["texto"])

Para más información, consulte nuestra Documentación sobre el modelo de incrustación de PyMilvus.

Generar incrustaciones vectoriales mediante SentenceTransformer e insertarlas en Zilliz Cloud para la búsqueda semántica.

from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient

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

docs = [
   "La inteligencia artificial se fundó como disciplina académica en 1956",
   "Alan Turing fue la primera persona en llevar a cabo una investigación sustancial en IA",
   "Nacido en Maida Vale, Londres, Turing se crió en el sur de Inglaterra."
]
# Generar incrustaciones para documentos
docs_embeddings = model.encode(docs, normalize_embeddings=True)

queries = ["query: ¿Cuándo se fundó la inteligencia artificial?
           "query: Wo wurde Alan Turing geboren?" ]
# Generar incrustaciones para las consultas
query_embeddings = model.encode(queries, normalize_embeddings=True)

# Conectarse a Zilliz Cloud con el punto final público y la clave API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLECCIÓN = "documentos"
if client.has_collection(nombre_coleccion=COLECCION):
    client.drop_collection(nombre_coleccion=COLECCION)
client.create_collection(
    nombre_colección=COLECCIÓN,
    dimensión=384,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"texto": doc, "vector": incrustación})
    
resultados = client.search(
    nombre_colección=COLECCIÓN,
    datos=consulta_incrustaciones,
    consistency_level="Strong",
    output_fields=["text"])

Para más información, consulte la documentación de SentenceTransformer.