Cette page décrit les modèles d'embedding que vous pouvez choisir et vous explique comment créer un corpus RAG à l'aide de votre choix. L'association entre votre modèle et le corpus RAG reste fixe pendant toute la durée de vie de votre corpus RAG.
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 permettent de convertir du texte, des images et des 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'embeddings 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é avec laquelle le modèle d'intégration mappe les relations dans vos données.
LlamaIndex sur Vertex AI pour le RAG implémente la génération augmentée de récupération (RAG) et vous propose les modèles d'intégration suivants à utiliser dans un corpus RAG :
- Modèles d'embedding textuel Vertex AI : modèles entraînés par l'éditeur, tel que 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 : modèles entraînés pour disposer de connaissances spécialisées ou de performances très personnalisées.
- Modèles d'intégration OSS : modèles d'intégration Open Source tiers en anglais uniquement et en variantes multilingues.
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 le sens du texte, contrairement aux vecteurs clairsemés, qui ont tendance à mapper directement les mots sur 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.
Les modèles Gecko sont disponibles en anglais uniquement et en versions multilingues. 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 le plus facile à utiliser avec LlamaIndex sur Vertex AI pour le RAG. Les modèles Gecko suivants sont recommandés pour un corpus RAG :
text-embedding-004
text-multilingual-embedding-002
textembedding-gecko@003
textembedding-gecko-multilingual@001
Si vous ne spécifiez pas de modèle d'embedding lorsque vous créez votre corpus RAG, LlamaIndex sur Vertex AI pour le RAG attribue par défaut le modèle text-embedding-004
à votre corpus RAG.
Les modèles Gecko de l'éditeur peuvent être obsolètes. Dans ce cas, les modèles Gecko de l'éditeur ne peuvent pas être utilisés avec LlamaIndex sur Vertex AI pour le RAG, même pour un corpus RAG créé avant l'abandon. Lorsque votre modèle Gecko est obsolète, vous devez migrer le corpus RAG, ce qui signifie que vous devez créer un corpus RAG et importer les données. Vous pouvez également utiliser un modèle Gecko affiné ou un modèle d'intégration OSS auto-déployé, qui est compatible après la mise au rebut du modèle.
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.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
)
Utiliser des modèles d'embedding textuel Vertex AI affinés
Bien que les modèles de fondation de l'éditeur 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 ayant des connaissances spécialisées ou des performances très personnalisées. Dans ce cas, le réglage du modèle 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 obtenue 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 la section Obtenir des embeddings textuels.
Pour affiner un modèle Gecko, consultez la section Régler les embeddings textuels.
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.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
)
Utiliser des modèles d'embedding OSS
LlamaIndex sur Vertex AI pour le RAG est compatible avec les modèles d'embeddings Open Source tiers en anglais uniquement et dans des variantes 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 des modèles E5 avec LlamaIndex sur Vertex AI pour le RAG, le modèle E5 doit être déployé à partir de Model Garden. Consultez Embedding textuel E5 dans la console Google Cloud pour déployer votre modèle E5.
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.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
)
Étape suivante
- Pour en savoir plus sur les langues compatibles avec les modèles d'embeddings textuels, consultez la section Langues de texte compatibles.
- Pour en savoir plus sur l'ancrage, consultez la section Présentation de l'ancrage.
- Pour en savoir plus sur LlamaIndex sur Vertex AI pour le RAG, consultez la section Utiliser LlamaIndex sur Vertex AI pour le RAG.
- Pour en savoir plus sur l'ancrage et le RAG, consultez la section Ancrer les réponses à l'aide du RAG.