Vector Embeddings : recherche par similarité sémantique

·

Un vector embedding est la représentation d'une donnée — un mot, une phrase, un document, une image — sous la forme d'un point dans un espace à plusieurs dimensions, encodé sous la forme d'une liste de nombres réels. L'idée centrale est géométrique : si deux textes ont un sens similaire, leurs vecteurs se retrouvent proches dans cet espace ; s'ils ont des sens différents, ils sont éloignés. Cette propriété transforme le sens, quelque chose de diffus et de linguistique, en distance, quelque chose de mesurable et de calculable. Sur elle se construisent la recherche sémantique, les systèmes de recommandation, le regroupement (clustering) et l'architecture RAG qui donne une mémoire documentaire aux modèles de langage. Cet article explique comment fonctionnent les embeddings, comment se mesure la similarité et comment les déployer en production sans que la latence ni le coût ne s'envolent.

Des mots aux vecteurs : ce qu'encode un embedding

La recherche traditionnelle par mots-clés compare des chaînes de texte : elle trouve « voiture » uniquement si le document contient littéralement « voiture », et échoue face à « automobile » ou « véhicule ». La recherche sémantique résout ce problème parce qu'elle opère sur le sens, et non sur la forme. Le saut conceptuel a été popularisé par Word2Vec (Mikolov et al., 2013), qui a montré que les relations sémantiques se reflètent dans des opérations arithmétiques sur les vecteurs : le célèbre exemple « roi − homme + femme ≈ reine » a montré que les directions de l'espace capturent des concepts tels que le genre ou la royauté.

Les embeddings modernes ne se calculent plus mot à mot de façon statique, mais sont contextuels : le même terme reçoit un vecteur différent selon la phrase dans laquelle il apparaît, grâce à l'architecture Transformer présentée dans l'article « Attention Is All You Need » (Vaswani et al., 2017) et aux modèles ultérieurs comme BERT et les familles de modèles d'embeddings spécialisés. Ainsi, « banque » dans « je me suis assis sur la banque du parc » et « banque » dans « j'ai effectué un virement à la banque » obtiennent des représentations différentes. La dimensionnalité typique de ces vecteurs varie entre 384 et 3 072 composantes selon le modèle ; plus de dimensions capturent généralement plus de nuances au prix de plus de stockage et de calcul.

Mesurer la similarité : cosinus, produit scalaire et distance euclidienne

Une fois les données représentées en vecteurs, comparer deux éléments revient à mesurer leur proximité. La métrique la plus utilisée en traitement du texte est la similarité cosinus, qui mesure l'angle entre deux vecteurs en ignorant leur magnitude : elle vaut 1 lorsqu'ils pointent dans la même direction (similarité maximale), 0 lorsqu'ils sont orthogonaux et −1 lorsqu'ils sont opposés. C'est la métrique privilégiée parce que dans de nombreux modèles, ce qui encode le sens est la direction du vecteur, non sa longueur. Le produit scalaire (dot product) tient compte de la magnitude et est équivalent au cosinus lorsque les vecteurs sont normalisés. La distance euclidienne (L2) mesure la séparation en ligne droite et s'utilise lorsque la magnitude est informative.

Métriques de similarité et quand les utiliser
MétriqueCe qu'elle mesureUsage habituel
Similarité cosinusAngle entre vecteurs (ignore la magnitude)Recherche sémantique de texte
Produit scalaireAlignement pondéré par la magnitudeSystèmes de recommandation ; équivalent au cosinus si normalisé
Distance euclidienne (L2)Séparation en ligne droiteClustering lorsque la magnitude est informative

Rechercher le voisin le plus proche en comparant la requête avec tous les vecteurs stockés (recherche exacte ou k-NN par force brute) est précis mais ne passe pas à l'échelle : avec des millions de documents, les parcourir tous à chaque requête est irréalisable en temps réel. La solution est la recherche approximative des plus proches voisins (ANN, Approximate Nearest Neighbors), qui sacrifie un peu d'exactitude en échange de réponses en quelques millisecondes. L'algorithme de référence est HNSW (Hierarchical Navigable Small World), qui organise les vecteurs dans un graphe navigable par couches ; d'autres familles incluent IVF (index inversé par partitions) et la quantification de produit (PQ) pour compresser les vecteurs. Les bases de données vectorielles telles que FAISS, pgvector, Milvus ou Qdrant implémentent ces index.

RAG : donner une mémoire documentaire à un modèle de langage

L'application qui a fait exploser l'intérêt pour les embeddings est le RAG (Retrieval-Augmented Generation, génération augmentée par récupération). Un modèle de langage, aussi puissant soit-il, ne connaît que ce qu'il a vu lors de son entraînement et a une limite de contexte ; il ne connaît pas les documents internes d'une entreprise ni les informations postérieures à sa date de coupure. RAG résout ce problème en récupérant les fragments pertinents d'une base documentaire et en les fournissant au modèle comme contexte avant qu'il ne génère la réponse. Le résultat est une réponse fondée sur des sources propres et vérifiables, ce qui réduit les hallucinations et permet de citer l'origine.

Le flux d'un système RAG comporte deux phases. Lors de l'indexation (hors ligne) : les documents sont découpés en fragments (chunking), l'embedding de chaque fragment est calculé et ils sont stockés dans une base vectorielle. Lors de la requête (en ligne) : l'embedding de la question de l'utilisateur est calculé, les k fragments les plus similaires sont récupérés, et un prompt combinant la question avec ces fragments est construit pour que le modèle génère la réponse. La qualité du système dépend autant du modèle d'embeddings et de la stratégie de découpage que du modèle génératif. Une technique fréquente pour améliorer la précision est le reranking : récupérer de nombreux candidats par recherche vectorielle rapide, puis les réordonner avec un modèle plus fin avant de passer les meilleurs au générateur.

Déploiement en production et cadre réglementaire

Au-delà du RAG, les embeddings permettent d'autres cas d'usage : le clustering pour découvrir des thèmes dans de grands corpus sans étiquettes préalables, la déduplication sémantique, la détection d'anomalies et la classification par similarité avec des exemples de référence. Dans tous ces cas, la mise en production exige des décisions d'ingénierie : quel modèle d'embeddings utiliser (et s'il est multilingue, ce qui est important pour les contenus en français et dans d'autres langues), comment découper les documents, quelle métrique et quel index ANN choisir, et comment gérer la réindexation lorsque les documents changent ou lorsque le modèle est mis à jour — changer de modèle oblige à recalculer tous les vecteurs, car les embeddings de modèles différents ne sont pas comparables entre eux.

Lorsque les documents contiennent des données personnelles, le traitement est soumis au RGPD : il faut prendre en compte la base de licéité, la minimisation des données et le droit à l'effacement, qui dans un index vectoriel oblige à pouvoir supprimer les vecteurs dérivés d'une donnée précise. Si le système d'IA entre dans une catégorie réglementée, le Règlement Européen sur l'Intelligence Artificielle (AI Act) s'applique également, avec des obligations de transparence et de gouvernance des données. La norme ISO/IEC 42001 offre un cadre de système de management de l'IA pour structurer cette gouvernance.

Erreurs fréquentes avec les embeddings

Questions fréquentes

Quelle est la différence entre la recherche sémantique et la recherche par mots-clés ? La recherche lexicale compare les mots littéraux ; la recherche sémantique compare le sens via des vecteurs, de sorte qu'elle trouve des résultats pertinents même lorsqu'ils ne partagent aucun mot avec la requête.

Ai-je besoin d'une base de données vectorielle dédiée ? Pas nécessairement. Pour des volumes modérés, des extensions comme pgvector sur PostgreSQL suffisent. Les bases spécialisées (Milvus, Qdrant) offrent des avantages à grande échelle et pour le filtrage avancé.

RAG élimine-t-il les hallucinations du modèle ? Il les réduit notablement en fondant la réponse sur des documents récupérés et en permettant de citer les sources, mais ne les élimine pas complètement : le modèle peut encore mal interpréter le contexte récupéré.

Quelle métrique de similarité choisir ? Pour le texte, la similarité cosinus est l'option par défaut. Si les vecteurs sont normalisés, le produit scalaire est équivalent et plus efficace. La distance euclidienne se réserve aux cas où la magnitude apporte de l'information.

Conclusion : les embeddings transforment le sens en géométrie opérable

La puissance des vector embeddings ne réside pas dans le modèle qui les génère, mais dans l'idée que le sens peut se mesurer comme une distance. Cette traduction est ce qui permet qu'une question formulée avec des mots qui n'apparaissent dans aucun document récupère tout de même la bonne réponse, qu'un corpus de millions de textes se regroupe par thèmes sans étiquettes préalables, et qu'un modèle de langage réponde sur des documents qu'il n'a jamais vus lors de son entraînement. La valeur réelle d'un projet fondé sur les embeddings se décide dans l'ingénierie des détails : le modèle adapté à la langue et au domaine, une stratégie de découpage qui préserve le contexte, un index ANN qui équilibre latence et exactitude, et une recherche hybride qui combine le sémantique et le lexical pour ne pas échouer sur les noms propres ni les chiffres. À tout cela s'ajoute une gouvernance des données qui respecte le RGPD et l'AI Act dès la conception. Chez Summum Inteligencia Artificial, nous concevons des systèmes de recherche sémantique et de RAG de bout en bout, en choisissant chaque composant selon le cas d'usage réel et non selon la tendance du moment.