Cette page décrit les choix de modèles d'embedding et explique comment utiliser votre modèle d'embedding pour créer un corpus RAG. L'association entre votre modèle d'embedding et le corpus RAG reste fixe pendant toute la durée de vie de votre corpus RAG.
Présentation des embeddings
Les embeddings sont des représentations numériques des entrées. Vous pouvez utiliser des embeddings dans vos applications pour reconnaître des significations complexes et des relations sémantiques, et pour traiter et produire du langage.
Les embeddings fonctionnent en convertissant le texte, les images et les vidéos en tableaux de nombres à virgule flottante appelés vecteurs. Plus deux vecteurs sont proches dans leur espace d'embedding, plus la similarité de leurs entrées est élevée.
Les modèles d'embedding sont un composant important des systèmes de récupération sémantique. Les performances d'un système de récupération dépendent de la qualité de la cartographie des relations dans vos données par le modèle d'embedding.
Choix du modèle d'embedding
Le moteur RAG implémente la génération augmentée par récupération (RAG) et vous offre le choix des modèles d'embedding suivants à utiliser dans un corpus RAG :
| Type de modèle d'embedding | Description |
|---|---|
| Modèles d'embedding textuel Gemini Enterprise Agent Platform | Modèles entraînés par l'éditeur, comme Google. Les modèles sont entraînés sur un grand ensemble de données textuelles et fournissent une base de référence solide pour de nombreuses tâches. |
| Modèles d'embedding textuel Agent Platform affinés | Les modèles d'embedding textuel Agent Platform sont affinés pour disposer de connaissances spécialisées ou de performances très personnalisées. |
| Modèles d'embedding OSS | Modèles d'embedding Open Source tiers dans des variantes multilingues et en anglais uniquement. |
Modèles d'embeddings compatibles
Les modèles d'embeddings sont utilisés pour créer un corpus, et pour la recherche et la récupération pendant la génération des réponses. Cette section liste les modèles d'embeddings compatibles.
| Version de modèle | Description |
|---|---|
text-embedding-005 |
Modèle d'embedding par défaut. Recommandé pour une utilisation avec un corpus RAG. |
text-embedding-004 |
|
text-multilingual-embedding-002 |
Recommandé pour une utilisation avec un corpus RAG. |
Modèles d'embeddings Open Source
Les modèles d'embeddings Open Source suivants sont également compatibles. Vous pouvez les trouver dans Model Garden.
e5-base-v2e5-large-v2e5-small-v2multilingual-e5-largemultilingual-e5-small
Utiliser des modèles d'embedding textuel Agent Platform
L'API d'embedding textuel Agent Platform est compatible avec plusieurs modèles d'embeddings, qui produisent un vecteur d'embedding dense à 768 dimensions. Les embeddings denses stockent la signification du texte, contrairement aux vecteurs creux, qui ont tendance à mapper directement les mots aux nombres. L'utilisation d'embeddings vectoriels denses dans l'IA générative fait qu'au lieu de rechercher des correspondances directes de mots ou de syntaxe, vous pouvez mieux rechercher des passages correspondant au sens de la requête, même si les passages n'utilisent pas la même langue.
Pour obtenir la liste des modèles compatibles, consultez Modèles d'embeddings.
Modèles Gecko
Les modèles Gecko sont disponibles dans des versions multilingues et en anglais uniquement. Contrairement aux modèles Gecko affinés, les modèles Gecko de l'éditeur ne doivent pas être déployés, ce qui en fait l'ensemble de modèles préféré à utiliser avec le moteur RAG.
Pour identifier le modèle d'embedding par défaut utilisé ou obtenir la liste des modèles Gecko recommandés pour une utilisation avec un corpus RAG, consultez Modèles d'embeddings compatibles.
Arrêt des modèles Gecko
Les modèles Gecko de l'éditeur peuvent être arrêtés. Dans ce cas, les modèles Gecko de l'éditeur ne peuvent pas être utilisés avec le moteur RAG, même pour un corpus RAG créé avant l'arrêt. Lorsque votre modèle Gecko est arrêté, vous devez migrer le corpus RAG, ce qui signifie que vous devez créer un corpus RAG et réimporter les données. Vous pouvez également utiliser un modèle Gecko affiné ou un modèle d'embedding OSS auto-déployé, qui est compatible après l'arrêt du modèle.
Créer un corpus RAG avec un modèle Gecko de l'éditeur
Ces exemples de code montrent comment créer un corpus RAG avec un modèle Gecko de l'éditeur.
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 pour 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
)
Utiliser des modèles d'embedding textuel Agent Platform affinés
Bien que les modèles de l'éditeur de base soient entraînés sur un grand ensemble de données textuelles et fournissent une base de référence solide pour de nombreuses tâches, il peut arriver que vous ayez besoin que les modèles disposent de connaissances spécialisées ou de performances très personnalisées. Dans ce cas, le réglage des modèles vous permet d'affiner les représentations du modèle à l'aide de vos données pertinentes. Un autre avantage de cette approche est que lorsque le modèle est affiné, l'image résultante vous appartient et n'est pas affectée par l'abandon du modèle Gecko. Tous les modèles d'embedding Gecko affinés produisent des embeddings avec des vecteurs à 768 dimensions. Pour en savoir plus sur ces modèles, consultez Obtenir des embeddings de texte.
Pour en savoir plus sur le réglage des modèles d'embeddings, consultez Régler les modèles de texte.
Ces exemples de code montrent comment créer un corpus RAG avec votre modèle Gecko affiné et déployé.
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 pour 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
)
Utiliser des modèles d'embedding OSS
Le moteur RAG est compatible avec les modèles d'embedding Open Source tiers dans des variantes multilingues et en anglais uniquement. Ce tableau liste les modèles E5 compatibles.
| Version de modèle | Modèle de base | Paramètres | Dimension d'embedding | Anglais uniquement |
|---|---|---|---|---|
e5-base-v2 |
MiniLM |
109M | 768 | ✔ |
e5-large-v2 |
MiniLM |
335M | 1 024 | ✔ |
e5-small-v2 |
MiniLM |
33M | 384 | ✔ |
multilingual-e5-large |
xlm-roberta-large |
560M | 1 024 | ✗ |
multilingual-e5-small |
microsoft/Multilingual-MiniLM-L12-H384 |
118M | 384 | ✗ |
Pour utiliser les modèles E5 avec le moteur RAG, le modèle E5 doit être déployé à partir de Model Garden. Pour déployer votre modèle E5, consultez E5 Embedding textuel dans la Google Cloud console.
Ces exemples de code montrent comment créer un corpus RAG avec votre modèle E5 déployé.
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 pour 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
)