Un embedding est une représentation numérique d’un contenu. Un modèle transforme un texte, une image ou un autre objet en une liste de nombres de dimension fixe. Des contenus proches selon ce modèle tendent à produire des vecteurs proches.
Cette représentation permet de rechercher par sens approximatif plutôt que par correspondance exacte de mots. Elle alimente de nombreux systèmes RAG, recommandations, regroupements et détections de doublons.
Du texte au vecteur
Considérez deux phrases :
- « Comment réinitialiser mon mot de passe ? »
- « Je n’arrive plus à me connecter à mon compte. »
Elles partagent peu de mots, mais peuvent être proches dans l’espace d’un modèle entraîné pour représenter le sens. Le modèle produit par exemple un vecteur de centaines ou milliers de valeurs pour chaque phrase.
Ces dimensions ne correspondent généralement pas à des concepts nommés lisibles. Il faut traiter le modèle d’embeddings comme un composant appris dont la qualité se mesure sur les usages cibles.
Similarité et distance
Une recherche compare le vecteur de la requête à ceux du corpus. Les métriques courantes sont :
- **similarité cosinus**, qui compare l’orientation des vecteurs ;
- **produit scalaire**, souvent utilisé avec des vecteurs normalisés ou des modèles conçus pour cette métrique ;
- **distance euclidienne**, qui mesure la distance géométrique directe.
La bonne métrique dépend du modèle et de son entraînement. Ne changez pas de métrique uniquement parce qu’un moteur la rend disponible. Certains index demandent aussi une normalisation préalable.
Recherche exacte et voisins approximatifs
Comparer une requête à chaque vecteur fournit une recherche exacte, mais le coût grandit avec le corpus. Les index de voisins proches approximatifs réduisent la latence en explorant seulement une partie de l’espace.
Cette accélération peut manquer un résultat pertinent. Le paramètre important n’est donc pas seulement la vitesse, mais le **rappel** : quelle proportion des vrais voisins ou documents pertinents est retrouvée ?
Le découpage des documents
Dans un RAG, indexer un document entier produit souvent une représentation trop générale. On le découpe en passages. Des segments trop courts perdent le contexte ; des segments trop longs mélangent plusieurs idées et consomment davantage de contexte lors de la génération.
Commencez avec des frontières naturelles : titres, paragraphes, sections ou blocs de code. Conservez pour chaque passage l’identifiant du document, sa position, son titre, sa date et les informations nécessaires aux droits d’accès.
Le chevauchement entre segments peut éviter de couper une explication, mais il crée des doublons dans les résultats. Mesurez son effet plutôt que d’utiliser systématiquement un pourcentage arbitraire.
Construire une recherche sémantique
Le pipeline minimal suit ces étapes :
- extraire et nettoyer les documents ;
- les découper en passages identifiables ;
- calculer leurs embeddings ;
- stocker vecteurs, textes et métadonnées ;
- encoder la requête avec le même modèle ;
- chercher les voisins proches ;
- appliquer les droits et filtres ;
- retourner ou reranker les meilleurs passages.
Le modèle utilisé pour les documents et celui utilisé pour la requête doivent être compatibles. Après un changement de modèle, réencodez normalement tout le corpus et gardez l’ancienne version disponible jusqu’à validation du nouvel index.
Recherche hybride
La recherche sémantique comprend les reformulations, mais peut être moins précise sur un identifiant, une référence produit ou une chaîne rare. La recherche lexicale excelle sur ces correspondances exactes.
Une recherche hybride combine les deux classements, puis peut appliquer un reranker. Elle est souvent plus robuste pour une documentation mêlant langage naturel, noms de fonctions, numéros d’erreur et acronymes.
Évaluer autrement qu’avec une démonstration
Préparez des requêtes représentatives et indiquez quels passages répondent réellement à chacune. Mesurez :
- **recall@k** : un passage pertinent apparaît-il dans les
kpremiers ? - **precision@k** : combien des résultats sont réellement utiles ?
- **MRR ou rang du premier résultat pertinent** ;
- latence et coût d’encodage ;
- qualité après application des filtres.
Séparez l’évaluation du retriever de celle du modèle génératif. Une mauvaise réponse finale peut venir d’un passage absent, d’un contexte mal assemblé ou d’une génération infidèle.
Erreurs fréquentes
- Choisir un modèle uniquement sur sa popularité sans test en français ni dans le domaine.
- Mélanger dans le même index des vecteurs issus de modèles ou dimensions différentes.
- Oublier de versionner le modèle et le pipeline de nettoyage.
- Utiliser un seuil de similarité universel sans le calibrer.
- Appliquer les droits après avoir envoyé les passages au modèle.
- Confondre proximité sémantique et vérité factuelle.
- Indexer des contenus obsolètes sans mécanisme de suppression ou de mise à jour.
Choisir un modèle d’embeddings
Comparez les candidats sur vos langues, longueurs de texte, domaine et budget. Vérifiez la dimension, la longueur maximale, la licence, le mode d’hébergement et la politique de données. Un vecteur plus grand n’est pas automatiquement meilleur et augmente stockage, mémoire et temps de recherche.
À retenir
Les embeddings rendent comparables des contenus selon une représentation apprise. La qualité d’une recherche sémantique dépend autant du modèle que du découpage, de la métrique, des filtres et du jeu d’évaluation. Une base vectorielle accélère la recherche ; elle ne résout ni les droits, ni la fraîcheur, ni la véracité des réponses.