Embeddings textuels
Sur cette page
Une fois le document découpé, il faut trouver les morceaux pertinents pour une question. C’est un problème de recherche, et la méthode la plus courante en RAG est la recherche sémantique : elle compare le sens de la question et celui de chaque morceau, plutôt que leurs mots. Elle repose sur les embeddings.
Qu’est-ce qu’un embedding ?
Un embedding est une représentation numérique du sens d’un texte. On envoie un texte à un modèle d’embedding, qui renvoie une longue liste de nombres : un vecteur, de 1 024 nombres par défaut pour les modèles Voyage 4.
On peut imaginer que chaque nombre note une qualité du texte : « à quel point il est joyeux », « à quel point il parle d’océans ». Ce n’est qu’une image. Le sens de chaque dimension est appris par le modèle pendant son entraînement, et il n’est pas interprétable par un humain. Ce qui compte, c’est que des textes de sens proche reçoivent des vecteurs proches.
Les vecteurs de Voyage sont normalisés : leur longueur vaut 1. Chaque nombre est donc compris entre -1 et 1, et, comme le précise la documentation, le produit scalaire de deux vecteurs est égal à leur similarité cosinus, la mesure de proximité de la leçon suivante.
Un fournisseur d’embeddings
Anthropic ne propose pas de modèle d’embedding. Sa documentation présente Voyage AI, qui appartient désormais à MongoDB, tout en conseillant de comparer plusieurs fournisseurs. Les modèles actuels de Voyage sont :
| Modèle | Usage |
|---|---|
voyage-4-large | La meilleure qualité, généraliste et multilingue |
voyage-4 | Le compromis entre qualité et coût |
voyage-4-lite | La latence et le coût les plus bas |
voyage-code-4 | Le code et les agents de programmation |
voyage-law-2, voyage-finance-2 | Les domaines juridique et financier |
Le cours officiel utilisait voyage-3-large, aujourd’hui de la génération précédente.
Obtenir une clé
Les clés se créent maintenant dans MongoDB Atlas : dans votre projet, ouvrez AI Model APIs, puis Create model API key. Placez la clé dans la variable d’environnement VOYAGE_API_KEY, par exemple dans le fichier .env du projet :
VOYAGE_API_KEY="votre_clé"
Installez ensuite la bibliothèque Python ; une clé créée dans Atlas demande la version 0.3.7 ou plus récente :
pip install -U voyageai python-dotenv
Les tarifs sont publiés dans la documentation de MongoDB.
Générer des embeddings
from dotenv import load_dotenv
import voyageai
load_dotenv()
vo = voyageai.Client() # lit VOYAGE_API_KEY
def generate_embedding(texts, model="voyage-4", input_type="query"):
single = isinstance(texts, str)
result = vo.embed([texts] if single else texts, model=model, input_type=input_type)
return result.embeddings[0] if single else result.embeddings
La fonction accepte un texte seul ou une liste : on vectorise ainsi tous les morceaux d’un document en un seul appel.
Le paramètre input_type compte. Pour toute tâche de recherche, la documentation demande de toujours le préciser : "document" pour les morceaux que l’on indexe, "query" pour la question de l’utilisateur. Voyage ajoute alors au texte une courte consigne adaptée à chaque rôle, ce qui améliore la qualité de la recherche. Le cours officiel utilisait "query" partout ; nous distinguons les deux.
chunk_vectors = generate_embedding(chunks, input_type="document")
question_vector = generate_embedding("Qu'a fait l'équipe logicielle cette année ?", input_type="query")
len(question_vector) # 1024
À vous de jouer
Mesurer des proximités. Vectorisez cinq phrases : deux sur le même sujet avec des mots différents, deux qui partagent un mot ambigu (« bug », « virus ») dans des sens différents, et une sans rapport. Calculez le produit scalaire de chaque paire avec sum(x * y for x, y in zip(a, b)) et vérifiez que les paires de même sens sont les plus proches.
Sources officielles : Text embeddings (Claude Academy) · Embeddings (documentation Claude : Voyage AI, modèles, clés Atlas,
input_type, normalisation)
Points clés à retenir
- Un embedding est un vecteur qui représente le sens d’un texte ; ses dimensions ne sont pas interprétables une à une.
- Anthropic ne fournit pas d’embeddings ; sa documentation présente Voyage AI, aujourd’hui chez MongoDB.
- Les modèles actuels sont
voyage-4-large,voyage-4etvoyage-4-lite; les clés se créent dans MongoDB Atlas. - Précisez toujours
input_type:"document"pour les morceaux,"query"pour les questions. - Les vecteurs Voyage sont normalisés : produit scalaire et similarité cosinus se confondent.