Questa pagina descrive le scelte dei modelli di embedding e mostra come utilizzare il modello di embedding per creare un corpus RAG. L'associazione tra il modello di embedding e il corpus RAG rimane fissa per la durata del corpus RAG.
Introduzione agli embedding
Gli embedding sono rappresentazioni numeriche degli input. Puoi utilizzare gli embedding nelle tue applicazioni per riconoscere significati complessi e relazioni semantiche, nonché per elaborare e produrre linguaggio.
Gli embedding funzionano convertendo testo, immagini e video in array di numeri in virgola mobile chiamati vettori. Più due vettori sono vicini nel loro spazio di embedding, maggiore è la somiglianza dei loro input.
I modelli di embedding sono una componente importante dei sistemi di recupero semantico. Il rendimento di un sistema di recupero dipende dalla qualità della mappatura delle relazioni nei dati da parte del modello di embedding.
Scelte del modello di embedding
RAG Engine implementa la generazione Retrieval-Augmented Generation (RAG) e ti offre la possibilità di scegliere i seguenti modelli di embedding da utilizzare all'interno di un corpus RAG:
| Tipo di modello di embedding | Descrizione |
|---|---|
| Modelli di text embedding Gemini Enterprise Agent Platform | Modelli addestrati dall'editore, ad esempio Google. I modelli vengono addestrati su un set di dati di testo di grandi dimensioni e forniscono una base solida per molte attività. |
| Modelli di text embedding Agent Platform ottimizzati | I modelli di text embedding Agent Platform vengono ottimizzati per avere conoscenze specializzate o un rendimento altamente personalizzato. |
| Modelli di embedding OSS | Modelli di embedding open source di terze parti nelle varianti solo in inglese e multilingue. |
Modelli di embedding supportati
I modelli di embedding vengono utilizzati per creare un corpus e per la ricerca e il recupero durante la generazione di risposte. In questa sezione sono elencati i modelli di embedding supportati.
| Versione del modello | Descrizione |
|---|---|
text-embedding-005 |
Modello di embedding predefinito. Consigliato per l'uso con un corpus RAG. |
text-embedding-004 |
text-embedding-004 è accessibile direttamente tramite l'API Embedding
e non è disponibile in Model Garden.
|
text-multilingual-embedding-002 |
Consigliato per l'uso con un corpus RAG. |
Modelli di embedding open source
Sono supportati anche i seguenti modelli di embedding open. Puoi trovarli in Model Garden.
e5-base-v2e5-large-v2e5-small-v2multilingual-e5-largemultilingual-e5-small
Utilizzare i modelli di text embedding Agent Platform
L'API Text Embedding di Agent Platform supporta diversi modelli di embedding, che producono un vettore di embedding denso con 768 dimensioni. Gli embedding densi memorizzano il significato del testo a differenza dei vettori sparsi, che tendono a mappare direttamente le parole ai numeri. Il vantaggio dell'utilizzo di embedding di vettori densi nell'AI generativa è che, anziché cercare corrispondenze dirette di parole o sintassi, puoi cercare meglio i passaggi che si allineano al significato della query, anche se i passaggi non utilizzano la stessa lingua.
Per un elenco dei modelli supportati, consulta Modelli di embedding.
Modelli Gecko
I modelli Gecko sono disponibili nelle versioni solo in inglese e multilingue. A differenza dei modelli Gecko ottimizzati, i modelli Gecko dell'editore non devono essere sottoposti a deployment, il che li rende il set di modelli preferito da utilizzare con RAG Engine.
Per identificare il modello di embedding predefinito utilizzato o se hai bisogno di un elenco di modelli Gecko consigliati per l'uso con un corpus RAG, consulta Modelli di embedding supportati.
Quando i modelli Gecko vengono ritirati
I modelli Gecko dell'editore potrebbero essere ritirati. In questo caso, i modelli Gecko dell'editore non possono essere utilizzati con RAG Engine, nemmeno per un corpus RAG creato prima del ritiro. Quando il modello Gecko viene ritirato, devi eseguire la migrazione del corpus RAG, il che significa che devi creare un nuovo corpus RAG e reimportare i dati. In alternativa, puoi utilizzare un modello Gecko ottimizzato o un modello di embedding OSS con deployment autonomo, che è supportato dopo il ritiro del modello.
Creare un corpus RAG con un modello Gecko dell'editore
Questi esempi di codice mostrano come creare un corpus RAG con un modello Gecko dell'editore.
curl
ENDPOINT=us-central1-aiplatform.googleapis.com
PROJECT_ID=YOUR_PROJECT_ID
// Set this to your choice of publisher Gecko model. Note that the full resource name of the publisher model is required.
// Example: projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/text-embedding-004
ENDPOINT_NAME=YOUR_ENDPOINT_NAME
// Set a display name for your corpus.
// For example, "my test corpus"
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
// CreateRagCorpus
// Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_embedding_model_config" : {
"vertex_prediction_endpoint": {
"endpoint": '\""${ENDPOINT_NAME}"\"'
}
}
}'
SDK Agent Platform per Python
import vertexai
from vertexai import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=${PROJECT_ID}, location="us-central1")
# Configure a Google first-party embedding model
embedding_model_config = rag.RagEmbeddingModelConfig(
publisher_model="publishers/google/models/text-embedding-004"
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=DISPLAY_NAME, rag_embedding_model_config=embedding_model_config
)
Utilizzare i modelli di text embedding Agent Platform ottimizzati
Sebbene i modelli di base dell'editore vengano addestrati su un set di dati di testo di grandi dimensioni e forniscano una base solida per molte attività, potrebbero esistere scenari in cui i modelli devono avere conoscenze specializzate o un rendimento altamente personalizzato. In questi casi, l'ottimizzazione del modello ti consente di ottimizzare le rappresentazioni del modello utilizzando i dati pertinenti. Un ulteriore vantaggio di questo approccio è che, quando il modello viene ottimizzato, l'immagine risultante è di tua proprietà e non è interessata dal ritiro del modello Gecko. Tutti i modelli di embedding Gecko ottimizzati producono embedding con vettori a 768 dimensioni. Per saperne di più su questi modelli, consulta Ottenere text embedding.
Per ulteriori informazioni sull'ottimizzazione dei modelli di embedding, consulta Ottimizzare i text embedding.
Questi esempi di codice mostrano come creare un corpus RAG con il modello Gecko ottimizzato e sottoposto a deployment.
curl
ENDPOINT=us-central1-aiplatform.googleapis.com
PROJECT_ID=YOUR_PROJECT_ID
// Your Agent Platform endpoint resource with the deployed fine-tuned Gecko model
// Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
ENDPOINT_NAME=YOUR_ENDPOINT_NAME
// Set a display name for your corpus.
// For example, "my test corpus"
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
// CreateRagCorpus
// Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_embedding_model_config" : {
"vertex_prediction_endpoint": {
"endpoint": '\""${ENDPOINT_NAME}"\"'
}
}
}'
SDK Agent Platform per Python
import vertexai
from vertexai import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=${PROJECT_ID}, location="us-central1")
# Your Vertex Endpoint resource with the deployed fine-tuned Gecko model
ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
MODEL_ENDPOINT = "projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT_ID}"
embedding_model_config = rag.RagEmbeddingModelConfig(
endpoint=${MODEL_ENDPOINT},
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=${DISPLAY_NAME}, rag_embedding_model_config=embedding_model_config
)
Utilizzare i modelli di embedding OSS
RAG Engine supporta modelli di embedding open source di terze parti nelle varianti solo in inglese e multilingue. Questa tabella elenca i modelli E5 supportati.
| Versione del modello | Modello di base | Parametri | Dimensione dell'embedding | Solo in inglese |
|---|---|---|---|---|
e5-base-v2 |
MiniLM |
109M | 768 | ✔ |
e5-large-v2 |
MiniLM |
335M | 1024 | ✔ |
e5-small-v2 |
MiniLM |
33M | 384 | ✔ |
multilingual-e5-large |
xlm-roberta-large |
560M | 1024 | ✗ |
multilingual-e5-small |
microsoft/Multilingual-MiniLM-L12-H384 |
118M | 384 | ✗ |
Per utilizzare i modelli E5 con RAG Engine, il modello E5 deve essere sottoposto a deployment da Model Garden. Per eseguire il deployment del modello E5, consulta E5 Text Embedding nella Google Cloud console.
Questi esempi di codice mostrano come creare un corpus RAG con il modello E5 sottoposto a deployment.
curl
ENDPOINT=us-central1-aiplatform.googleapis.com
PROJECT_ID=YOUR_PROJECT_ID
// Your Vertex Endpoint resource with the deployed E5 model
// Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
ENDPOINT_NAME=YOUR_ENDPOINT_NAME
// Set a display name for your corpus.
// For example, "my test corpus"
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
// CreateRagCorpus
// Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME</var>}"\"',
"rag_embedding_model_config" : {
"vertex_prediction_endpoint": {
"endpoint": '\""${ENDPOINT_NAME}"\"'
}
}
}'
SDK Agent Platform per Python
import vertexai
from vertexai import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=PROJECT_ID, location="us-central1")
# Your Vertex Endpoint resource with the deployed E5 model
ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
MODEL_ENDPOINT = "projects/{PROJECT_ID}/locations/us-central1/endpoints/{ENDPOINT_ID}"
embedding_model_config = rag.RagEmbeddingModelConfig(
endpoint=MODEL_ENDPOINT,
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=DISPLAY_NAME, rag_embedding_model_config=embedding_model_config
)