Questa pagina descrive le scelte dei modelli di incorporamento e mostra come utilizzare il modello di incorporamento per creare un corpus RAG. L'associazione tra il modello di incorporamento e il corpus RAG rimane fissa per tutta la durata del corpus RAG.
Introduzione agli incorporamenti
Gli incorporamenti sono rappresentazioni numeriche degli input. Puoi utilizzare gli embedding nelle tue applicazioni per riconoscere significati complessi e relazioni semantiche e per elaborare e produrre il linguaggio.
Gli incorporamenti funzionano convertendo testo, immagini e video in array di numeri in virgola mobile chiamati vettori. Più due vettori sono vicini nello spazio di incorporamento, maggiore è la somiglianza dei loro input.
I modelli di incorporamento sono un componente importante dei sistemi di recupero semantico. Le prestazioni di un sistema di recupero dipendono dalla qualità della mappatura delle relazioni nei dati del modello di incorporamento.
Scelte del modello di embedding
Vertex AI RAG Engine implementa la generazione RAG (Retrieval-Augmented Generation) e ti offre la possibilità di scegliere tra i seguenti modelli di incorporamento da utilizzare in un corpus RAG:
Tipo di modello di embedding | Descrizione |
---|---|
Modelli di text embedding Vertex AI | Modelli addestrati dall'editore, ad esempio Google. I modelli vengono addestrati su un ampio set di dati di testo e forniscono una solida base di riferimento per molte attività. |
Modelli di text embedding Vertex AI ottimizzati | I modelli di text embedding di Vertex AI sono ottimizzati per avere conoscenze specializzate o prestazioni altamente personalizzate. |
Modelli di incorporamento OSS | Modelli di incorporamento open source di terze parti in varianti solo in inglese e multilingue. |
Modelli di embedding supportati
I modelli di incorporamento vengono utilizzati per creare un corpus e per la ricerca e il recupero durante la generazione della risposta. Questa sezione elenca i modelli di incorporamento supportati.
Versione del modello | Descrizione |
---|---|
text-embedding-005 |
Modello di embedding predefinito. Consigliato per l'utilizzo con un corpus RAG. |
text-embedding-004 |
|
text-multilingual-embedding-002 |
Consigliato per l'utilizzo con un corpus RAG. |
Modelli di incorporamento open source
Sono supportati anche i seguenti modelli di incorporamento aperti. Puoi trovarli in Model Garden.
e5-base-v2
e5-large-v2
e5-small-v2
multilingual-e5-large
multilingual-e5-small
Utilizzare i modelli di text embedding Vertex AI
L'API Vertex AI Text Embedding utilizza i modelli di embedding Gecko, che producono un vettore di embedding denso con 768 dimensioni. Gli incorporamenti densi memorizzano il significato del testo a differenza dei vettori sparsi, che tendono a mappare direttamente le parole ai numeri. Il vantaggio di utilizzare incorporamenti vettoriali densi nell'AI generativa è che, anziché cercare corrispondenze dirette di parole o sintassi, puoi cercare meglio passaggi che si allineano al significato della query, anche se i passaggi non utilizzano la stessa lingua.
Modelli Gecko
I modelli Gecko sono disponibili in versioni solo in inglese e multilingue. A differenza dei modelli Gecko ottimizzati, i modelli Gecko per publisher non devono essere sottoposti a deployment, il che li rende il set di modelli preferito da utilizzare con Vertex AI RAG Engine.
Per identificare il modello di embedding predefinito utilizzato o se hai bisogno di un elenco di modelli Gecko consigliati per l'utilizzo con un corpus RAG, consulta Modelli di embedding supportati.
Quando i modelli Gecko non sono più disponibili
I modelli Gecko dell'editore potrebbero non essere più disponibili. In questo caso, i modelli Gecko dell'editore non possono essere utilizzati con Vertex AI RAG Engine, nemmeno per un corpus RAG creato prima del ritiro. Quando il modello Gecko non è più disponibile, devi eseguire la migrazione del corpus RAG, ovvero creare un nuovo corpus RAG e reimportare i dati. Un'alternativa è utilizzare un modello Gecko ottimizzato o un modello di incorporamento OSS autodeployato, supportato dopo l'interruzione del modello.
Crea un corpus RAG con un modello Gecko publisher
Questi esempi di codice mostrano come creare un corpus RAG con un modello Gecko del publisher.
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 Vertex AI 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 modelli di text embedding Vertex AI ottimizzati
Sebbene i modelli di publisher di base siano addestrati su un ampio set di dati di testo e forniscano una base solida per molte attività, potrebbero esserci scenari in cui potresti richiedere che i modelli abbiano una conoscenza specializzata o un rendimento altamente personalizzato. In questi casi, l'ottimizzazione del modello ti consente di perfezionare le rappresentazioni del modello utilizzando i tuoi 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 scoprire di più su questi modelli, consulta Recuperare gli incorporamenti di testo.
Per ulteriori informazioni sull'ottimizzazione dei modelli di embedding, consulta Ottimizzare gli embedding di testo.
Questi esempi di codice mostrano come creare un corpus RAG con il modello Gecko di cui è stato eseguito il deployment e che è stato ottimizzato.
curl
ENDPOINT=us-central1-aiplatform.googleapis.com
PROJECT_ID=YOUR_PROJECT_ID
// Your Vertex AI 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 Vertex AI 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 modelli di embedding OSS
Vertex AI RAG Engine supporta modelli di incorporamento open source di terze parti in varianti solo in inglese e multilingue. Questa tabella elenca i modelli E5 supportati.
Versione del modello | Modello di base | Parametri | dimensione di incorporamento | Solo in inglese |
---|---|---|---|---|
e5-base-v2 |
MiniLM |
109 Mln | 768 | ✔ |
e5-large-v2 |
MiniLM |
335 Mln | 1024 | ✔ |
e5-small-v2 |
MiniLM |
33 Mln | 384 | ✔ |
multilingual-e5-large |
xlm-roberta-large |
560 MLN | 1024 | ✗ |
multilingual-e5-small |
microsoft/Multilingual-MiniLM-L12-H384 |
118 mln | 384 | ✗ |
Per utilizzare i modelli E5 con il motore RAG di Vertex AI, il modello E5 deve essere sottoposto a deployment da Model Garden. Per eseguire il deployment del modello E5, consulta Incorporamento di testo E5 nella console Google Cloud .
Questi esempi di codice mostrano come creare un corpus RAG con il modello E5 di cui è stato eseguito il 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 Vertex AI 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
)