Parcours « Comprendre et sécuriser l’IA » — étape 04/15
03Comment fonctionne l'inférence d'un modèle de langage05Agentique : définition, lectures d'OpenAI et d'Anthropic, Claude Code
Embeddings : vecteurs, recherche sémantique et RAG
Section intitulée « Embeddings : vecteurs, recherche sémantique et RAG »Introduction
Section intitulée « Introduction »Les embeddings sont des représentations numériques d’éléments textuels ou autres données, exprimées sous forme de vecteurs dans un espace multidimensionnel. Ces vecteurs capturent la sémantique et les relations entre les données, permettant ainsi des traitements avancés en Natural Language Processing (NLP), notamment la recherche sémantique et la génération augmentée par récupération, appelée Retrieval-Augmented Generation (RAG). Cette page détaille les concepts techniques clés autour des embeddings, leur utilisation dans les index vectoriels, ainsi que les bonnes pratiques et limites associées.
Dans une bibliothèque bien rangée, les livres qui parlent du même sujet se trouvent sur les mêmes étagères, même si leurs titres n’ont aucun mot en commun. Cette page explique comment un ordinateur range ainsi des textes selon leur sens, pour retrouver les passages utiles à une question et aider une intelligence artificielle à y répondre.
→ Lire l’explication complète de la marmotte
À quoi servent les embeddings ?
Section intitulée « À quoi servent les embeddings ? »Les embeddings servent à transformer des données non structurées, comme du texte, en vecteurs numériques exploitables par des algorithmes. Cette transformation facilite la comparaison sémantique entre éléments, la recherche d’informations pertinentes, la classification ou encore la recommandation. Par exemple, dans un moteur de recherche sémantique, les embeddings permettent de retrouver des documents proches d’une requête même si les mots exacts ne correspondent pas, grâce à la similarité des vecteurs.
Vecteurs, similarité et distance cosinus
Section intitulée « Vecteurs, similarité et distance cosinus »Un vecteur est une liste ordonnée de nombres réels représentant une entité dans un espace à N dimensions. Les modèles d’embeddings, souvent basés sur des réseaux de neurones, génèrent ces vecteurs à partir de textes ou autres données.
Pour mesurer la similarité entre deux vecteurs, la distance cosinus est fréquemment utilisée. Elle calcule le cosinus de l’angle entre deux vecteurs, donnant une valeur comprise entre -1 et 1. Une valeur proche de 1 indique une forte similarité sémantique. Le produit scalaire (dot product) est une autre mesure, souvent utilisée dans les modèles d’apprentissage.
Formule de la distance cosinus entre deux vecteurs et :
Cette mesure est essentielle pour retrouver les vecteurs les plus proches dans un espace vectoriel.
Index vectoriel et base vectorielle
Section intitulée « Index vectoriel et base vectorielle »Un index vectoriel est une structure de données optimisée pour stocker et rechercher efficacement des vecteurs dans un espace à haute dimension. Les bases vectorielles, comme Qdrant, Milvus ou Faiss, implémentent ces index en utilisant des algorithmes d’Approximate Nearest Neighbor (ANN) pour accélérer la recherche des k-nearest neighbors (k-NN), c’est-à-dire les k vecteurs les plus proches d’un vecteur donné.
Ces systèmes permettent de gérer des millions de vecteurs tout en maintenant des temps de réponse faibles, ce qui est crucial pour des applications en temps réel ou à grande échelle.
RAG, chunking et recherche sémantique
Section intitulée « RAG, chunking et recherche sémantique »Retrieval-Augmented Generation (RAG) est une technique combinant la génération de texte par un modèle de langage avec une phase de récupération d’informations pertinentes dans une base de connaissances. Cette récupération s’appuie sur des embeddings pour identifier les documents ou passages les plus proches sémantiquement de la requête.
Le chunking consiste à découper un document volumineux en segments plus petits, appelés chunks, afin de générer un embedding par chunk. Cette granularité améliore la précision de la recherche sémantique en ciblant des passages spécifiques plutôt que des documents entiers.
Le processus RAG typique :
- Découpage du corpus en chunks.
- Génération d’embeddings pour chaque chunk.
- Indexation des vecteurs dans une base vectorielle.
- Génération de l’embedding de la requête utilisateur.
- Recherche des chunks les plus proches via distance cosinus ou dot product.
- Utilisation des chunks récupérés comme contexte pour la génération de réponse par le modèle de langage.
Exemple concret : embeddings dans un RAG local
Section intitulée « Exemple concret : embeddings dans un RAG local »Voici un exemple opérationnel d’intégration d’embeddings dans un système RAG local :
-
Découper une documentation en chunks
On segmente un manuel technique en passages de 500 mots, chaque chunk représentant une unité sémantique cohérente. -
Générer un embedding pour chaque chunk
À l’aide d’un modèle d’embeddings pré-entraîné, on transforme chaque chunk en un vecteur numérique. -
Stocker les vecteurs dans Qdrant ou un index vectoriel
Les vecteurs sont insérés dans Qdrant, une base vectorielle spécialisée, qui construit un index optimisé pour la recherche ANN. -
Générer l’embedding d’une question
Lorsqu’un utilisateur pose une question, on génère son embedding avec le même modèle. -
Rechercher les chunks proches avec une distance cosinus ou une similarité
Qdrant effectue une recherche k-NN pour retrouver les chunks dont les vecteurs sont les plus proches de la requête. -
Fournir les chunks récupérés au modèle de langage
Ces passages sont transmis en contexte au modèle de génération, qui produit une réponse enrichie et précise.
Ce workflow illustre comment les embeddings facilitent une recherche sémantique fine et une génération de contenu contextualisée.
Points de vigilance
Section intitulée « Points de vigilance »- Qualité des embeddings : La pertinence des résultats dépend fortement du modèle d’embeddings choisi et de sa capacité à capturer la sémantique spécifique du domaine.
- Dimensionnalité et performance : Des vecteurs trop dimensionnels peuvent ralentir la recherche, tandis que des dimensions trop faibles peuvent réduire la précision.
- Chunking adapté : Un découpage inapproprié peut fragmenter le sens ou diluer l’information, impactant la qualité de la recherche.
- Biais et dérives : Les modèles d’embeddings peuvent refléter des biais présents dans les données d’entraînement, nécessitant une vigilance particulière.
- Sécurité et confidentialité : Stocker des embeddings issus de données sensibles demande des mesures de protection adaptées.
Quelle différence entre embedding et mot-clé ?
Section intitulée « Quelle différence entre embedding et mot-clé ? »Un mot-clé est une unité lexicale isolée utilisée pour indexer ou rechercher un document. Un embedding est une représentation vectorielle dense qui capture la signification globale d’un texte, au-delà des mots exacts. Contrairement aux mots-clés, les embeddings permettent de mesurer la similarité sémantique même si les termes diffèrent.
Pourquoi les embeddings sont utiles dans un RAG ?
Section intitulée « Pourquoi les embeddings sont utiles dans un RAG ? »Dans un système Retrieval-Augmented Generation (RAG), les embeddings permettent d’identifier rapidement les passages les plus pertinents par rapport à une requête, même si les mots ne correspondent pas exactement. Cela améliore la qualité des réponses générées en fournissant un contexte riche et ciblé au modèle de langage.
Quels risques faut-il surveiller ?
Section intitulée « Quels risques faut-il surveiller ? »Il faut surveiller les biais intégrés dans les modèles d’embeddings, qui peuvent influencer les résultats de manière non souhaitée. De plus, une mauvaise gestion des données sensibles dans les bases vectorielles peut poser des risques de confidentialité. Enfin, la sur-optimisation des paramètres d’indexation peut dégrader la précision ou la vitesse de recherche.
Conclusion
Section intitulée « Conclusion »Les embeddings sont au cœur des avancées en recherche sémantique et en génération augmentée par récupération (RAG). Leur capacité à transformer des données textuelles en vecteurs exploitables permet de construire des systèmes intelligents, capables de comprendre et d’exploiter la signification profonde des contenus. Toutefois, leur mise en œuvre requiert une attention particulière sur la qualité des modèles, la structuration des données et les enjeux éthiques associés. Utilisés avec rigueur, les embeddings ouvrent la voie à des applications NLP puissantes et précises.
🐝 Ce qui arrive si on s’en passe
Section intitulée « 🐝 Ce qui arrive si on s’en passe »Une base vectorielle alimentée sans contrôle d’accès rend à quiconque l’interroge les passages les plus proches de sa question, sans se soucier de savoir qui avait le droit de lire le document d’origine : les droits du partage de fichiers s’évaporent au découpage, et la recherche sémantique devient un moteur de recherche dans les dossiers d’autrui. Les passages récupérés partent ensuite dans le contexte du modèle de langage, qui les reformule obligeamment dans sa réponse. Faute de journal des requêtes, personne ne sait ensuite quels extraits ont été servis, ni à qui.
🦫 Explication de la marmotte 🍫
Section intitulée « 🦫 Explication de la marmotte 🍫 »Un embedding est une liste de nombres, appelée vecteur, qu’un modèle d’apprentissage calcule à partir d’un texte. Le modèle est construit pour que deux textes de sens proche reçoivent des vecteurs proches, même s’ils n’emploient pas les mêmes mots. Pour mesurer cette proximité, on calcule la similarité cosinus : elle compare la direction de deux vecteurs et donne une valeur entre -1 et 1, d’autant plus proche de 1 que les sens se ressemblent. Quand il y a des millions de vecteurs, les comparer tous serait trop lent. Une base vectorielle, comme Qdrant, les range dans un index qui permet de trouver rapidement, de façon approchée, les plus proches voisins d’un vecteur donné. La génération augmentée par récupération, souvent appelée RAG, utilise ce mécanisme pour aider un modèle de langage à répondre. On découpe d’abord les documents en morceaux, on calcule un vecteur pour chacun et on les enregistre dans la base. Quand une question arrive, on calcule son vecteur avec le même modèle, on cherche les morceaux les plus proches, puis on les donne au modèle de langage avec la question pour qu’il rédige sa réponse. La qualité dépend du modèle choisi, de la taille des morceaux et du nombre de dimensions des vecteurs. Les modèles peuvent aussi reproduire des biais, et les vecteurs tirés de données sensibles doivent être protégés comme ces données elles-mêmes.
À lire aussi
- Sécuriser un corpus RAG contre l’injection indirecteCette fiche décrit comment empêcher qu’un document empoisonné dans un corpus RAG détourne un modèle de langage lors de la génération.
- Quand la recherche sémantique contourne les droitsUn RAG qui indexe des documents sans reporter leurs droits d'accès transforme la base vectorielle en contournement du contrôle d'accès. Le filtrage doit se faire au moment de la requête, par le moteur et non par le modèle, et l'index lui-même doit être classé comme les documents qu'il contient.
- L'empoisonnement d'un RAG en une pageComment un document piégé glissé dans le corpus finit cité, ou obéi, par l'assistant qui le retrouve, en cinq étapes animées, avec les parades qui coupent la chaîne.
- Fine-tuning local ou RAG pour données internesComparer le fine-tuning local et le RAG pour exploiter des données internes sans augmenter inutilement le risque de fuite.
Pages voisines
La citent
- Apprentissage automatique et réseaux de neurones, attaques du modèle
- Différence entre IA et LLM : un champ entier, un type de modèle
- Calculer le coût d’un LLM local à grande échelle
- Comment éviter la mémorisation dans un LLM interne
- Comment observer un LLM en production
- Comment red teamer un LLM local avant production
- Comment valider le function calling d’un LLM
- Déployer Ollama sur un poste de travail et dimensionner la mémoire
- Dimensionner GPU et RAM pour un LLM local
Embeddings : vecteurs, recherche sémantique et RAG
Elle cite
: les deux pages se citent l’une l’autre.
