Cette page décrit les choix de modèles d'embedding et vous montre 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 leurs entrées sont similaires.
Les modèles d'embedding sont un élément 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 de Vertex AI implémente la génération augmentée par récupération (RAG) et vous permet de choisir parmi les modèles d'embedding suivants à utiliser dans un corpus RAG :
Type de modèle d'embedding | Description |
---|---|
Modèles d'embedding textuel Vertex AI | 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 référence solide pour de nombreuses tâches. |
Modèles d'embedding textuel Vertex AI affinés | Les modèles d'embedding textuel Vertex AI 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 en variantes unilingues (anglais uniquement) et multilingues. |
Modèles d'embeddings compatibles
Les modèles d'embedding 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'embedding 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'embedding Open Source
Les modèles d'embedding ouverts suivants sont également acceptés. Vous les trouverez dans Model Garden.
e5-base-v2
e5-large-v2
e5-small-v2
multilingual-e5-large
multilingual-e5-small
Utiliser des modèles d'embedding textuel Vertex AI
L'API Vertex AI d'embedding textuel utilise les modèles d'embedding Gecko, 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 à des nombres. L'utilisation d'embeddings 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.
Modèles Gecko
Les modèles Gecko sont disponibles en version unilingue (anglais uniquement) et multilingue. Contrairement aux modèles Gecko affinés, les modèles Gecko pour les éditeurs n'ont pas besoin d'être déployés. Ils constituent donc l'ensemble de modèles à privilégier avec le moteur RAG Vertex AI.
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'embedding compatibles.
Arrêt des modèles Gecko
Les modèles Gecko de l'éditeur peuvent être abandonnés. Dans ce cas, les modèles Gecko de l'éditeur ne peuvent pas être utilisés avec le moteur RAG Vertex AI, 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. Cela 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 sera compatible après l'arrêt du modèle.
Créer un corpus RAG avec un modèle Gecko d'éditeur
Ces exemples de code montrent comment créer un corpus RAG avec un modèle Gecko d'é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 Vertex AI 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 Vertex AI affinés
Bien que les modèles d'éditeur de base soient entraînés sur un grand ensemble de données textuelles et fournissent une référence solide pour de nombreuses tâches, il peut arriver que vous ayez besoin de modèles disposant 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'arrêt 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 la section Obtenir des embeddings textuels.
Pour en savoir plus sur le réglage des modèles d'embedding, consultez Régler les embeddings de texte.
Ces exemples de code montrent comment créer un corpus RAG avec votre modèle Gecko déployé et affiné.
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 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 Vertex AI est compatible avec les modèles d'embedding Open Source tiers dans des variantes en anglais uniquement et multilingues. 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 de Vertex AI, le modèle E5 doit être déployé à partir de Model Garden. Pour déployer votre modèle E5, consultez Embedding textuel E5 dans la console Google Cloud .
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 Vertex AI 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
)