Obtenir des embeddings de texte

Ce document explique comment créer un embedding de texte à l'aide de l'API Text embeddings de Vertex AI.

Les embeddings de texte sont des représentations vectorielles denses de texte. Par exemple, le modèle gemini-embedding-001 génère des vecteurs à 3 072 dimensions pour un texte donné. Ces embeddings vectoriels denses sont créés à l'aide de méthodes de deep learning semblables à celles utilisées par les grands modèles de langage.

Contrairement aux vecteurs creux qui mappent les mots à des nombres, les vecteurs denses sont conçus pour représenter la signification sémantique du texte. L'avantage principal de l'utilisation d'embeddings vectoriels denses est la possibilité d'effectuer une recherche sémantique. Au lieu de rechercher des correspondances directes de mots ou de syntaxe, vous pouvez rechercher des passages de texte correspondant au sens de votre requête, même si les passages n'utilisent pas la même formulation.

Les vecteurs d'embedding sont normalisés. Vous pouvez donc utiliser la similarité cosinus, le produit scalaire ou la distance euclidienne pour obtenir les mêmes classements de similarité.

Les questions et leurs réponses ne sont pas sémantiquement similaires
Figure 1. Obtenir un embedding de texte

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. Choisissez un type de tâche pour votre job d'embeddings.
  7. Modèles compatibles

    Vous pouvez obtenir des embeddings textuels à l'aide des modèles suivants :

    Nom du modèle Description Dimensions de sortie Longueur maximale de la séquence Langues de texte compatibles
    gemini-embedding-001 Performances de pointe pour les tâches en anglais, multilingues et de code. Il unifie les modèles spécialisés précédents, tels que text-embedding-005 et text-multilingual-embedding-002, et offre de meilleures performances dans leurs domaines respectifs. Pour en savoir plus, consultez notre rapport technique. Jusqu'à 3 072 2 048 jetons Langues de texte disponibles
    text-embedding-005 Spécialisé dans les tâches en anglais et de code. Jusqu'à 768 2 048 jetons Anglais
    text-multilingual-embedding-002 Spécialisé dans les tâches multilingues. Jusqu'à 768 2 048 jetons Langues de texte disponibles

    Pour une qualité d'embedding supérieure, gemini-embedding-001 est notre grand modèle conçu pour offrir les meilleures performances. Notez que gemini-embedding-001 accepte une instance par requête.

    Obtenir des embeddings textuels pour un extrait de texte

    Vous pouvez obtenir des embedding textuels pour un extrait de texte à l'aide de l'API Vertex AI ou du SDK Vertex AI pour Python.

    Limites d'API

    Pour chaque requête, vous êtes limité à 250 textes d'entrée pour les modèles non Gemini et à un seul texte d'entrée pour les modèles Gemini Embedding. L'API a une limite maximale de jetons d'entrée de 20 000. Les entrées qui dépassent cette limite entraînent une erreur 400. Chaque texte d'entrée individuel est également limité à 2 048 jetons. Tout excès est tronqué en mode silencieux. Vous pouvez également désactiver la troncature en mode silencieux en définissant autoTruncate sur false.

    Pour en savoir plus, consultez Limites des embeddings de texte.

    Choisir une dimension d'embedding

    Par défaut, tous les modèles produisent un vecteur d'embedding complet. Pour gemini-embedding-001, ce vecteur comporte 3 072 dimensions, et les autres modèles produisent des vecteurs à 768 dimensions. Toutefois, en utilisant le paramètre output_dimensionality, les utilisateurs peuvent contrôler la taille du vecteur d'intégration de sortie. En sélectionnant une dimensionnalité de sortie plus petite, vous pouvez économiser de l'espace de stockage et augmenter l'efficacité de calcul pour les applications en aval, tout en sacrifiant peu de qualité.

    Les exemples suivants utilisent le modèle gemini-embedding-001.

    Python

    Installer

    pip install --upgrade google-genai

    Pour en savoir plus, lisez la documentation de référence du SDK.

    Définissez les variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

    # Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
    # with appropriate values for your project.
    export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
    export GOOGLE_CLOUD_LOCATION=global
    export GOOGLE_GENAI_USE_VERTEXAI=True

    from google import genai
    from google.genai.types import EmbedContentConfig
    
    client = genai.Client()
    response = client.models.embed_content(
        model="gemini-embedding-001",
        contents="How do I get a driver's license/learner's permit?",
        config=EmbedContentConfig(
            task_type="RETRIEVAL_DOCUMENT",  # Optional
            output_dimensionality=3072,  # Optional
            title="Driver's License",  # Optional
        ),
    )
    print(response)
    # Example response:
    # embeddings=[ContentEmbedding(values=[-0.06302902102470398, 0.00928034819662571, 0.014716853387653828, -0.028747491538524628, ... ],
    # statistics=ContentEmbeddingStatistics(truncated=False, token_count=13.0))]
    # metadata=EmbedContentMetadata(billable_character_count=112)

    Ajouter un embedding à une base de données vectorielle

    Une fois que vous avez généré votre embedding, vous pouvez en ajouter à une base de données vectorielle, telle que Vector Search. Cela permet une récupération à faible latence, ce qui devient essentiel à mesure que la taille de vos données augmente.

    Pour en savoir plus sur Vector Search, consultez Présentation de Vector Search.

    Étapes suivantes