Utiliser des modèles d'embedding avec le moteur de classification Vertex AI

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
  )

Étapes suivantes