Utiliser des modèles d'embedding avec le moteur RAG

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-v2
  • e5-large-v2
  • e5-small-v2
  • multilingual-e5-large
  • multilingual-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
  )

Étape suivante