Questa pagina descrive le opzioni di modelli di embedding e mostra come utilizzare la tua scelta per creare un corpus RAG. L'associazione tra il modello e Il corpus RAG rimane fisso per l'intera durata del corpus RAG.
Gli incorporamenti sono rappresentazioni numeriche degli input. Puoi utilizzare gli embedding nelle tue applicazioni per riconoscere significati complessi e relazioni semantiche, nonché per elaborare e produrre il linguaggio.
Gli incorporamenti funzionano convertendo testo, immagini e video in array di dati mobili numeri in punti denominati vettori. Più due vettori sono vicini nello spazio di embedding, maggiore è la somiglianza dei relativi input.
I modelli di incorporamento sono una componente importante dei sistemi di recupero semantico. Le prestazioni di un sistema di recupero dipendono dalla qualità con cui il modello di embedding mappa le relazioni nei dati.
RAG Engine implementa RAG (Retrieval Augmented Generation) e offre la scelta dei seguenti modelli di incorporamento da utilizzare all'interno di un corpus RAG:
- Modelli di incorporamento di testo di Vertex AI: modelli addestrati dall'editore, ad esempio Google. I modelli vengono addestrati su un grande set di dati di testo, e forniscono una solida base per molte attività.
- Modelli di incorporamento di testo Vertex AI ottimizzati: modelli addestrati per avere una conoscenza specializzata o prestazioni altamente personalizzate.
- Modelli di incorporamento OSS: modelli di incorporamento open source di terze parti in Varianti solo in inglese e multilingue.
Utilizzare i modelli di embedding di testo di Vertex AI
L'API Vertex AI per l'embedding del testo utilizza i modelli di embedding Gecko, che producono un vettore di embedding denso con 768 dimensioni. Gli embedding densi memorzzano il significato del testo, a differenza dei vettori sparsi, che tendono a mappare direttamente le parole ai numeri. Il vantaggio dell'utilizzo di incorporamenti vettoriali densi nell'IA generativa è che, invece di cercare una parola diretta o corrispondenze di sintassi, puoi cerca passaggi in linea con il significato della query, anche se non usano la stessa lingua.
I modelli Gecko sono disponibili in versioni solo in inglese e multilingue. Non mi piace modelli Gecko perfezionati, i modelli Gecko degli editori non devono essere distribuiti, il che li rende il set di modelli più semplice da usare con RAG Engine. I seguenti modelli Gecko sono consigliati per l'utilizzo con un corpus RAG:
text-embedding-004
text-multilingual-embedding-002
textembedding-gecko@003
textembedding-gecko-multilingual@001
Se non specifichi un modello di embedding quando crei il corpus RAG,
RAG Engine assegna per impostazione predefinita il modello text-embedding-004
per il
corpus RAG.
I modelli Gecko del publisher potrebbero essere ritirati. In questo caso, i modelli Gecko del publisher non possono essere utilizzati con RAG Engine, anche per un corpus RAG creato prima del ritiro. Quando il modello Gecko viene ritirato, devi eseguire la migrazione del corpus RAG, ovvero creare un corpus RAG e importare i dati. Un'alternativa è utilizzare un modello Gecko ottimizzato o un sistema operativo di cui è stato eseguito il deployment autonomo di incorporamento, supportata dopo il ritiro del modello.
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.preview 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.EmbeddingModelConfig(
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, embedding_model_config=embedding_model_config
)
Utilizzare modelli di embedding di testo Vertex AI ottimizzati
Sebbene i modelli publisher di base siano addestrati su un grande set di dati e forniscono una solida base per molte attività, potrebbero verificarsi scenari in cui potrebbero richiedere che i modelli abbiano una conoscenza specializzata o altamente personalizzati le prestazioni dei dispositivi. In questi casi, l'ottimizzazione del modello consente di mettere a punto rappresentazioni grafiche utilizzando i dati pertinenti. Un ulteriore vantaggio di questo approccio è che quando il modello viene perfezionato, l'immagine risultante è di tua proprietà ed è non interessate dal ritiro del modello Gecko. Tutti i modelli di incorporamento Gecko ottimizzati produrre incorporamenti con vettori a 768 dimensionali. Per scoprire di più su questi modelli, consulta Ottenere gli embedding di testo.
Per ottimizzare un modello Gecko, consulta Ottimizzare gli incorporamenti di testo.
Questi esempi di codice mostrano come creare un corpus RAG con il modello Gecko ottimizzato e di cui è stato eseguito il deployment.
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.preview 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.EmbeddingModelConfig(
endpoint=${MODEL_ENDPOINT},
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=${DISPLAY_NAME}, embedding_model_config=embedding_model_config
)
Utilizza modelli di incorporamento OSS
RAG Engine supporta i modelli di incorporamento open source di terze parti in Varianti solo in inglese e multilingue. In questa tabella sono elencati i modelli E5 supportati.
Versione del modello | Modello di base | Parametri | dimensione di embedding | 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 RAG Engine, è necessario eseguire il deployment del modello E5 da Model Garden. Consulta Incorporamento del testo E5 nella console Google Cloud per eseguire il deployment del tuo modello E5.
Questi esempi di codice mostrano come creare un corpus RAG con l'E5 di cui è stato eseguito il deployment un modello di machine learning.
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.preview 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.EmbeddingModelConfig(
endpoint=MODEL_ENDPOINT,
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=DISPLAY_NAME, embedding_model_config=embedding_model_config
)
Passaggi successivi
- Per saperne di più sulle lingue supportate dai modelli di incorporamento del testo, consulta Lingue di testo supportate.
- Per scoprire di più sul grounding, consulta Messa a terra. Panoramica.
- Per scoprire di più su RAG Engine, consulta Utilizzare RAG Engine.
- Per scoprire di più sul grounding e sul RAG, consulta Eseguire il grounding delle risposte utilizzando RAG.