Microsoft

Microsoft / e5-large-v2

Ideale per ottenere buone prestazioni mantenendo l'open source e requisiti hardware minimi. Funziona bene su dati disordinati. Ottimo per query brevi che dovrebbero restituire passaggi di testo di media lunghezza (1-2 paragrafi).

Introduzione al modello di incorporazione e5-large-v2

e5-large-v2 è una versione migliorata del modello e5-base-v2, che fornisce prestazioni superiori in vari compiti di elaborazione del linguaggio naturale (NLP), tra cui ricerca semantica, retrieval augmented generation (RAG) e clustering. Si basa inoltre su un pre-training contrastivo debolmente supervisionato ed è particolarmente efficace per la gestione di dati disordinati e di interrogazioni brevi che restituiscono brani di testo di media lunghezza.

Il modello richiede che i testi in ingresso siano preceduti da "query: " per le query e "passage: " per i passaggi. Può essere utilizzato attraverso librerie come Hugging Face's Transformers e Sentence Transformers, consentendo una facile integrazione nelle applicazioni.

Confronto tra e5-large-v2 e e5-base-v2:

Caratteristica/Capacitàe5-base-v2e5-large-v2
Strati1224
Dimensione di incorporamento7681024
Max Tokens512512
PerformanceBuono per compiti generali di text embeddingOttime prestazioni su benchmark come BEIR e MTEB, spesso superando modelli più piccoli
Requisiti del prefisso di ingresso"query: " per le query, "passage: " per i passaggi"query: " per le interrogazioni, "passage: " per i passaggi

Come creare le incorporazioni vettoriali con il modello e5-large-v2

Esistono due modi principali per creare le incorporazioni vettoriali:

  1. PyMilvus: l'SDK Python per Milvus che integra perfettamente il modello e5-large-v2.
  2. Libreria SentenceTransformer: la libreria Python sentence-transformer.

Una volta generate le incorporazioni vettoriali, queste possono essere archiviate in Zilliz Cloud (un servizio di database vettoriale completamente gestito da Milvus) e utilizzate per la ricerca di similarità semantica. Ecco i quattro passaggi chiave:

  1. Iscriviti per un account Zilliz Cloud gratuito.
  2. Configurare un cluster serverless e ottenere il Public Endpoint and API Key.
  3. Creare una collezione di vettori e inserire i propri embeddings vettoriali.
  4. Eseguire una ricerca semantica sugli embeddings memorizzati.

Generare embeddings vettoriali tramite PyMilvus e inserirli in Zilliz Cloud per la ricerca semantica.

da pymilvus.model.dense import SentenceTransformerEmbeddingFunction
da pymilvus import MilvusClient

ef = SentenceTransformerEmbeddingFunction("intfloat/e5-large-v2")
docs = [
   "L'intelligenza artificiale è stata fondata come disciplina accademica nel 1956",
   "Alan Turing è stato il primo a condurre una ricerca sostanziale sull'intelligenza artificiale",
   "Nato a Maida Vale, Londra, Turing è cresciuto nel sud dell'Inghilterra".
]
# Generare le incorporazioni per i documenti
docs_embeddings = ef(docs)

queries = ["Quando è stata fondata l'intelligenza artificiale",
          "Dove è nato Alan Turing?"]
# Generare embeddings per le query
query_embeddings = ef(queries)

# Connettersi a Zilliz Cloud con l'endpoint pubblico e la chiave API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLEZIONE = "documenti"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(nome_raccolta=COLLEZIONE)
client.create_collection(
    nome_collezione=COLLEZIONE,
    dimensione=ef.dim,
    auto_id=True)

per doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
risultati = client.search(
    nome_collezione=COLLEZIONE,
    dati=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Per ulteriori informazioni, consultare la nostra [documentazione sul modello di inclusione di PyMilvus] (https://milvus.io/docs/embeddings.md).

Generare embeddings vettoriali tramite la libreria SentenceTransformer e inserirli in Zilliz Cloud per la ricerca semantica

da sentence_transformers import SentenceTransformer
da pymilvus import MilvusClient

model = SentenceTransformer("intfloat/e5-large-v2")

docs = [
   "L'intelligenza artificiale è stata fondata come disciplina accademica nel 1956",
   "Alan Turing è stato il primo a condurre una ricerca sostanziale sull'intelligenza artificiale",
   "Nato a Maida Vale, Londra, Turing è cresciuto nel sud dell'Inghilterra".
]
# Generare le incorporazioni per i documenti
docs_embeddings = model.encode(docs, normalize_embeddings=True)

query = ["Quando è stata fondata l'intelligenza artificiale",
          "Dove è nato Alan Turing?"]
# Generare embeddings per le query
query_embeddings = model.encode(queries, normalize_embeddings=True)

# Connettersi a Zilliz Cloud con l'endpoint pubblico e la chiave API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLEZIONE = "documenti"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(nome_raccolta=COLLEZIONE)
client.create_collection(
    nome_collezione=COLLEZIONE,
    dimensione=1024,
    auto_id=True)

per doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
risultati = client.search(
    nome_collezione=COLLEZIONE,
    dati=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Per ulteriori informazioni, consultare SentenceTransformer documentation.