Aller au contenu principal

Les embeddings de texte

Mis à jour le 30 juillet 2026

Le document est découpé en segments ; reste le cœur du problème RAG : pour une question donnée, trouver lesquels de ces segments sont pertinents. C’est un problème de recherche — mais pas n’importe laquelle. La réponse moderne s’appelle la recherche sémantique, et son ingrédient central est l’embedding.

Qu’est-ce qu’un embedding ?

Un embedding est une représentation numérique du sens contenu dans un texte : une longue liste de nombres — typiquement entre -1 et +1 — générée par un modèle spécialisé, dit modèle d’embedding. L’intuition : chaque nombre agit comme un « score » pour une qualité du texte, bien que ces qualités ne soient pas explicitement nommées — le modèle les a découvertes seul pendant son entraînement. Ce qui compte, c’est la propriété géométrique qui en résulte : deux textes de sens proche produisent des vecteurs proches, deux textes sans rapport produisent des vecteurs éloignés. Le sens devient une position dans un espace, et la proximité de sens devient une distance mesurable.

Recherche sémantique

Cette propriété change la nature de la recherche. Contrairement à la recherche par mots-clés, qui exige que les termes correspondent, la recherche sémantique compare les sens : elle trouve du contenu conceptuellement lié même quand les mots exacts ne correspondent pas. Demandez « quels problèmes l’entreprise a-t-elle rencontrés ? » et elle retrouvera le paragraphe qui parle de « défis opérationnels majeurs » — zéro mot en commun, même sujet. Pour un système RAG, c’est décisif : les utilisateurs formulent leurs questions avec leurs mots, jamais avec ceux du document.

Embeddings sur Vertex AI

Un point d’architecture propre à notre plateforme : Claude ne génère pas d’embeddings — c’est un modèle de conversation, pas un modèle d’embedding. Sur Vertex AI, on utilise un modèle dédié du catalogue Google : text-embedding-005. Même projet, mêmes identifiants, même facturation — seul le modèle appelé change.

Implémentation

from google import genai

client = genai.Client(
    project="VOTRE_PROJECT_ID",
    location="global",
    vertexai=True
)

def generate_embedding(text):
    response = client.models.embed_content(
        model="text-embedding-005",
        contents=text
    )
    if not response.embeddings:
        return []
    return [e.values for e in response.embeddings]

Quelques lectures utiles de ce code. On passe ici par le SDK google-genai, avec vertexai=True pour router les appels vers votre projet Vertex — c’est le pendant, pour les modèles Google, de ce qu’AnthropicVertex fait pour Claude. La fonction accepte indifféremment un texte seul ou une liste : contents est traité par lot, et la compréhension finale retourne un vecteur par texte fourni — c’est ainsi qu’on vectorisera tous les segments d’un document en un seul appel. La garde if not response.embeddings évite un plantage si la réponse revient vide.

Cette fonction retourne donc, pour chaque texte, une liste de nombres représentant son sens sémantique. Ces embeddings constituent la base de la recherche de notre système RAG — mais il manque encore la règle du jeu : comment mesurer que deux vecteurs sont « proches » ? C’est l’objet de la prochaine leçon, avec la similarité cosinus.

Points clés à retenir

  • Un embedding transforme un texte en vecteur de nombres : le sens devient une position, la proximité une distance
  • La recherche sémantique compare les sens — elle trouve les passages pertinents sans correspondance de mots
  • Claude ne produit pas d’embeddings : sur Vertex, on utilise le modèle dédié text-embedding-005
  • Le SDK google-genai avec vertexai=True reste dans votre projet Google Cloud (identifiants, facturation)
  • La fonction traite les lots : tous les segments d’un document se vectorisent en un appel