I modelli di embedding sono reti neurali basate su transformer che trasformano blocchi di documenti (cioè passaggi di testo) in una rappresentazione numerica o vettoriale. I contenuti con significato o semantica simili saranno mappati su una rappresentazione simile nello spazio latente, come si vede nell'immagine sottostante.
La vettorializzazione del linguaggio consente applicazioni basate su AI, come la "chat con i documenti" o la ricerca semantica, anziché la tradizionale ricerca per parole chiave (lessicale).
Il modello di embedding che scegli influenzerà significativamente l'accuratezza del recupero, la latenza e il costo computazionale del tuo sistema RAG. La scelta del modello di embedding sarà in gran parte influenzata dalla sua dimensione, che dipende da due caratteristiche: la dimensione di embedding e il numero di parametri del modello.
Un modello di embedding più grande tipicamente migliora le prestazioni di recupero, ma a costo di latenza, storage e costi computazionali (finanziari) aumentati. Al contrario, un modello di embedding più piccolo di solito offre prestazioni di recupero ridotte ma occupa meno memoria, richiede meno potenza di calcolo ed è più veloce in tempo reale. Scegli un modello di embedding che bilanci i requisiti di prestazione con le risorse disponibili.
Alcuni modelli di embedding sono specifici per linguaggio (ad esempio, modelli di embedding spagnoli costruiti per clienti spagnoli) e specifici per dominio (ad esempio, un modello addestrato sulla terminologia oncologica per abilitare la RAG sui file medici).
Si consiglia di utilizzare modelli di embedding distribuiti in watsonx: i modelli Slate sviluppati da IBM® o i modelli di terze parti elencati di seguito. Leggi questa documentazione per i dettagli su ciascun modello. Per maggiori informazioni sulle classi di fatturazione, consulta i piani di fatturazione watsonx.
Modelli IBM Slate
| Nome del modello | API model_id | Classe di fatturazione | Numero massimo di token di input | Numero di dimensioni | Maggiori informazioni |
|---|---|---|---|---|---|
| slate-125m-english-rtrvr | ibm/slate-125m-english-rtrvr | Classe C1 | 512 | 768 | Model card1 |
| slate-30m-english-rtrvr | ibm/slate-30m-english-rtrvri | Classe C1 | 512 | 384 | Model card1 |
Il foundation model slate-125m-english-rtrvr è fornito da IBM. Il foundation model slate-125m-english-rtrvr genera embedding per vari input come query, passaggi o documenti. L'obiettivo formativo è massimizzare la somiglianza del coseno tra una domanda e un passaggio. Questo processo produce due embedding, uno che rappresenta la domanda e uno che rappresenta il passaggio, consentendo il confronto dei due attraverso la somiglianza del coseno.
Utilizzo: da due a tre volte più lento, ma con prestazioni leggermente migliori rispetto al modello slate-30m-english-rtrvr. Lingue supportate: inglese
Il foundation model slate-30m-english-rtrvr è una versione distillata di slate-125m-english-rtrvr, entrambi forniti da IBM. Il modello di embedding slate-30m-english-rtrvr è addestrato per massimizzare la similarità del coseno tra due input di testo, in modo che gli embedding possano essere valutati in seguito in base alla similarità.
Utilizzo: da due a tre volte più veloce e con punteggi di prestazioni leggermente inferiori rispetto al modello slate-125m-english-rtrvr. Lingue supportate: inglese
Modelli di embedding di terze parti disponibili con watsonx
| Nome del modello | API model_id | Fornitore | Classe di fatturazione | Numero massimo di token di input | Numero di dimensioni | Maggiori informazioni |
|---|---|---|---|---|---|---|
| all-minilm-l12-v2 | sentence-transformers/all-minilm-l12-v2 | Comunità open source di elaborazione del linguaggio naturale (NLP) e computer vision (CV) | Classe C1 | 256 | 384 | Model card1 |
| multilingual-e5-large | intfloat/multilingual-e5-large | Microsoft | Classe C1 | 512 | 1024 | Scheda modello, articolo di ricerca |
Il modello di embedding all-minilm-l12-v2 è costruito dalla comunità open source di elaborazione del linguaggio naturale (NLP) e computer vision (CV) e fornito da HuggingFace.
Lingue supportate: inglese
Utilizzo: per casi d'uso in cui si vuole generare embedding di testo per testi in una lingua diversa dall'inglese.
Lingue naturali supportate: fino a 100 lingue. Consulta la scheda modello per i dettagli.
Per maggiori informazioni sui modelli di embedding supportati, consulta la documentazione di watsonx.
Installazione libreria Python ibm-watsonx-ai
Installazione pip -U ibm-watsonx-ai
Usa l'API di embedding watsonx e i modelli di embedding disponibili per generare embedding di testo.
from ibm_watsonx_ai.metanames import EmbedTextParamsMetaNames as EmbedParams
from ibm_watsonx_ai.foundation_models.utils.enums import EmbeddingTypes
from ibm_watsonx_ai.foundation_models import Embeddings
# Imposta truncate_input_tokens su un valore uguale o inferiore al numero massimo di token consentiti per il modello di embedding in uso. Se non specifichi questo valore e l'input ha più token di quanti il modello ne possa elaborare, si genera un errore.
embed_params = {
EmbedParams.TRUNCATE_INPUT_TOKENS: 128,
EmbedParams.RETURN_OPTIONS: {
'input_text': True
}
}
embedding = Embeddings(
model_id=EmbeddingTypes.IBM_SLATE_30M_ENG,
credentials=credentials,
params=embed_params,
project_id=project_id,
space_id=None,
verify=False
)
q = [
"Un modello di fondazione è un modello di AI generativa su larga scala che può essere adattato a una vasta gamma di compiti a valle.",
"L'AI generativa è una classe di algoritmi di AI che possono produrre vari tipi di contenuti, inclusi testo, codice sorgente, immagini, audio e dati sintetici."
]
embedding_vectors = embedding.embed_documents(texts=q)
print(embedding_vectors)
Utilizza watsonx Granite Model Series ed embedding, Chroma e LangChain per rispondere alle domande (RAG) e LangChain
Data di aggiornamento: 15 novembre 2024