Jina AI

Jina AI / jina-embeddings-v3

Un modello di incorporazione del testo multilingue; supporta 89 lingue in totale; può elaborare fino a 8192 token per sequenza.

jina-embeddings-v3 Panoramica

Il modello jina-embeddings-v3 è il nuovo strumento di incorporazione del testo multilingue di JinaAI con 570 milioni di parametri e una lunghezza massima di input di 8192 token. È in grado di gestire l'elaborazione di dati multilingue e il reperimento di testi lunghi, raggiungendo prestazioni allo stato dell'arte (SOTA) in 94 lingue. Questo modello crea incorporazioni adatte a una serie di compiti, tra cui il reperimento di query e documenti, il clustering, la [classificazione] (https://zilliz.com/glossary/classification) e la corrispondenza tra testi.

Jina-embeddings-v3 supporta anche Matryoshka Embeddings, che consente di personalizzare la dimensione dell'embedding in uscita in base alle proprie esigenze. Mentre la dimensione di uscita predefinita è 1024, è possibile ridurla a 32, 64, 128, 256, 512 o 768 senza perdere troppe prestazioni, rendendola adattabile a varie applicazioni.

Confronta jina-embeddings-v3 con i modelli Jina v2:

ModelloDimensione dei parametriDimensione dell'incorporamentoTesto
jina-embeddings-v3570Mdimensione di incorporamento flessibile (predefinita: 1024)incorporazioni di testo multilingue; supporta 94 lingue in totale
jina-embeddings-v2-small-en33M512incorporazioni monolingui in inglese
jina-embeddings-v2-base-en137M768embeddings monolingue inglese
jina-embeddings-v2-base-zh161M768Abbinamenti bilingue cinese-inglese
jina-embeddings-v2-base-de161M768Embeddings bilingue tedesco-inglese
jina-embeddings-v2-base-code161M768Inglese e linguaggi di programmazione

Come creare embeddings con jina-embeddings-v3

Esistono due modi principali per generare embeddings vettoriali:

  • PyMilvus: l'SDK Python per Milvus che integra perfettamente il modello jina-embeddings-v3.
  • 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:

  • Iscriversi per un account Zilliz Cloud gratuito.
  • Configurare un cluster serverless](https://docs.zilliz.com/docs/create-cluster#set-up-a-free-cluster) e ottenere Endpoint pubblico e chiave API.
  • Creare una collezione di vettori e inserire gli embeddings vettoriali.
  • Eseguire una ricerca semantica sugli embeddings memorizzati.

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

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

ef = SentenceTransformerEmbeddingFunction("jinaai/jina-embeddings-v3", trust_remote_code=True)

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 maggiori dettagli, consultare questa pagina di documentazione di Jina AI.

Creare embeddings tramite Sentence Transformer e inserirli in Zilliz Cloud per la ricerca semantica

da sentence_transformers import SentenceTransformer
da pymilvus import MilvusClient

model = SentenceTransformer("jinaai/jina-embeddings-v3", trust_remote_code=True)

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 = ["query: Quando è stata fondata l'intelligenza artificiale",
           "query: Wo wurde Alan Turing geboren?" ]
# Generare le incorporazioni 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=512,
    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"])

Ulteriori letture