Visage étreint

Visage étreint / all-MiniLM-L12-v2

Un codeur de phrases et de paragraphes courts idéal pour la recherche sémantique et le RAG ; basé sur le modèle pré-entraîné Microsoft/MiniLM-L12-H384-uncased, il a été affiné sur un grand ensemble de données de plus d'un milliard de paires de phrases.

Introduction au modèle d'intégration all-MiniLM-L12-v2

  • all-MiniLM-L12-v2 est un encodeur de phrases et de paragraphes courts qui produit un vecteur capturant l'information sémantique du texte d'entrée.
  • Le modèle est basé sur le modèle pré-entraîné Microsoft/MiniLM-L12-H384-uncased et a été affiné en utilisant un objectif d'apprentissage contrastif sur un grand ensemble de données de plus d'un milliard de paires de phrases.
  • Il associe les phrases et les paragraphes à un espace vectoriel dense de 384 dimensions, qui peut être utilisé pour des tâches telles que la [recherche d'informations] (https://zilliz.com/learn/what-is-information-retrieval), le regroupement et la [recherche sémantique] (https://zilliz.com/glossary/semantic-search).

Comment créer des encastrements vectoriels avec le modèle all-MiniLM-L12-v2

Il existe deux façons principales de créer des encastrements vectoriels :

  1. PyMilvus : le SDK Python pour Milvus qui intègre de manière transparente le modèle sentence-transformer.
  2. SentenceTransformer library : la bibliothèque Python de sentence-transformer.

Une fois les encastrements vectoriels générés, ils peuvent être stockés dans [Zilliz Cloud] (https://zilliz.com/cloud) (un service de base de données vectorielles entièrement géré par Milvus) et utilisés pour [la recherche de similarité sémantique] (https://zilliz.com/glossary/semantic-search). Voici les quatre étapes clés :

  1. Sign up pour un compte Zilliz Cloud gratuit.
  2. Configurer un cluster sans serveur et obtenir le Point de terminaison public et la clé API.
  3. Créer une collection de vecteurs et insérer vos embeddings vectoriels.
  4. Lancez une recherche sémantique sur les embeddings stockés.

Générer des embeddings vectoriels via PyMilvus et les insérer dans Zilliz Cloud pour une recherche sémantique.

from pymilvus.model.dense import SentenceTransformerEmbeddingFunction

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

docs = [
   "L'intelligence artificielle a été fondée en tant que discipline universitaire en 1956",
   "Alan Turing a été la première personne à mener des recherches substantielles sur l'IA,
   "Né à Maida Vale, Londres, Turing a grandi dans le sud de l'Angleterre."
]
# Générer des embeddings pour les documents
docs_embeddings = ef(docs)

queries = ["Quand l'intelligence artificielle a-t-elle été créée",
          "Où est né Alan Turing ?"]
# Génère des embeddings pour les requêtes
query_embeddings = ef(queries)

# Se connecter au nuage Zilliz avec le point de terminaison public et la clé API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "documents"
if client.has_collection(collection_name=COLLECTION) :
    client.drop_collection(nom_de_la_collection=COLLECTION)
client.create_collection(
    nom_de_la_collection=COLLECTION,
    dimension=ef.dim,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings) :
    client.insert(COLLECTION, {"text" : doc, "vector" : embedding})
    
results = client.search(
    nom_de_la_collection=COLLECTION,
    data=query_embeddings,
    output_fields=["text"])

Pour plus d'informations, consultez notre [documentation sur le modèle d'intégration PyMilvus] (https://milvus.io/docs/embeddings.md).

Générer des embeddings vectoriels via SentenceTransformer et les insérer dans Zilliz Cloud pour la recherche sémantique

from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient

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

docs = [
   "L'intelligence artificielle a été fondée en tant que discipline universitaire en 1956",
   "Alan Turing a été la première personne à mener des recherches substantielles sur l'IA,
   "Né à Maida Vale, Londres, Turing a grandi dans le sud de l'Angleterre."
]
# Générer des embeddings pour les documents
docs_embeddings = model.encode(docs, normalize_embeddings=True)

queries = ["query : Quand l'intelligence artificielle a-t-elle été fondée ?
           "requête : Wo wurde Alan Turing geboren ?" ]
# Générer des embeddings pour les requêtes
query_embeddings = model.encode(queries, normalize_embeddings=True)

# Se connecter au nuage Zilliz avec le point de terminaison public et la clé API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "documents"
if client.has_collection(collection_name=COLLECTION) :
    client.drop_collection(nom_de_la_collection=COLLECTION)
client.create_collection(
    nom_de_la_collection=COLLECTION,
    dimension=384,
    auto_id=True)

pour doc, embedding dans zip(docs, docs_embeddings) :
    client.insert(COLLECTION, {"text" : doc, "vector" : embedding})
    
results = client.search(
    nom_de_la_collection=COLLECTION,
    data=query_embeddings,
    niveau de cohérence="Fort",
    output_fields=["text"])

Pour plus d'informations, consultez [SentenceTransformer documentation] (https://sbert.net/docs/sentence_transformer/pretrained_models.html).