Il y a un petit quiz qu’on aime bien poser aux gens avant d’expliquer les embeddings. Lequel de ces deux mots est le plus proche du mot ‘chien’ : ‘chat’ ou ‘voiture’ ? Tout le monde répond ‘chat’. Et si on vous demande ‘comment vous le savez’ ? Vous diriez probablement : ‘parce que chat et chien sont tous les deux des animaux domestiques, ils vivent dans des maisons, les gens les nourrissent…’ En somme, vous avez une représentation mentale de chaque mot, avec un ensemble de propriétés associées. Et ces représentations vous permettent de calculer, instinctivement, que ‘chat’ est plus proche de ‘chien’ que ‘voiture’ ne l’est.
Les embeddings font exactement ça. Mais pour une intelligence artificielle et de façon numérique.
C’est l’un des concepts les plus fondamentaux de toute l’IA moderne et pourtant, c’est celui qui est le moins souvent expliqué clairement. Presque toutes les fonctionnalités IA qui ‘comprennent’ du texte utilisent des embeddings en coulisse : la recherche Google, les recommandations Netflix, le moteur RAG derrière ChatGPT, la détection de spam. Ce guide explique le concept du départ, avec des analogies visuelles et des exemples concrets.
Le problème fondamental : Comment un ordinateur ‘comprend’-il du texte ?
Les ordinateurs ne comprennent que les nombres. Ce n’est pas une métaphore, c’est littéral. À l’intérieur d’un processeur, tout est des 0 et des 1. Des tensions électriques hautes et basses. Les lettres, les images, les sons, tout est converti en nombres avant d’être traité.
Pour les images, c’est facile à comprendre. Un pixel rouge, c’est trois nombres : (255, 0, 0) pour ses valeurs rouge, vert, bleu. Une image de 1000×1000 pixels, c’est un million de pixels, chacun avec trois valeurs donc 3 millions de nombres. L’ordinateur peut comparer deux images en comparant leurs tableaux de nombres.
Mais pour le texte, c’est beaucoup plus compliqué. Le mot ‘chien’, comment le représenter en nombres ? Ses lettres ? Son code ASCII ? Le problème, c’est qu’une représentation basée sur les lettres ne capture pas le sens. ‘Chien’ et ‘toutou’ sont totalement différents en lettres, mais synonymes en sens. ‘Chien’ et ‘chienne’ sont presque identiques en lettres, mais représentent des réalités légèrement différentes. Comment capturer tout ça ?
💡 Question fondamentale : pour qu’une IA puisse répondre ‘chien et chat sont similaires’, elle a besoin que chien et chat soient représentés par des nombres proches. Et pour que ‘chien’ et ‘voiture’ soient représentés par des nombres éloignés. C’est exactement le problème que les embeddings résolvent.
L’approche naïve : Le codage 1 parmi n et pourquoi il échoue
Avant les embeddings, les chercheurs utilisaient une technique appelée « codage 1 parmi n » ou en anglais « one-hot encoding ». L’idée est simple : imaginez que votre vocabulaire contient 10 000 mots. Vous créez un tableau de 10 000 cases, toutes à zéro, sauf celle correspondant au mot, qui passe à 1.
chien = [0, 0, 0, 1, 0, 0, …, 0] — 1 dans la 4ème case sur 10 000
chat = [0, 1, 0, 0, 0, 0, …, 0] — 1 dans la 2ème case sur 10 000
voiture = [0, 0, 0, 0, 0, 1, …, 0] — 1 dans la 6ème case sur 10 000
Ce système a un défaut fatal. Calculez la distance entre ‘chien’ et ‘chat’ : ils diffèrent sur 2 cases (l’une a un 1 dans la case 4, l’autre dans la case 2). Calculez la distance entre ‘chien’ et ‘voiture’ : ils diffèrent aussi sur exactement 2 cases (l’une a un 1 dans la case 4, l’autre dans la case 6). Pour le codage 1 parmi n, ‘chat’ et ‘voiture’ sont à égale distance de ‘chien’. Le sens n’est pas capturé du tout.
C’est le problème fondamental du one-hot : chaque mot est aussi loin de tous les autres mots. Pas d’information sémantique, pas de voisinage signifiant. Les mots flottent dans un espace où rien n’a de sens.
Les embeddings : Transformer du sens en coordonnées
L’embedding est la solution élégante à ce problème. Plutôt que de représenter chaque mot avec 10 000 cases (une par mot du vocabulaire), un embedding représente chaque mot avec un vecteur dense de 768, 1 024, ou 4 096 nombres, selon le modèle. Et ces nombres sont appris automatiquement par le modèle d’IA de façon à ce que des mots sémantiquement similaires aient des vecteurs similaires.
Un vecteur, c’est simplement une liste ordonnée de nombres. En géographie, la position d’une ville peut être représentée par deux coordonnées : latitude et longitude. Paris c’est (48.85, 2.35), Lyon c’est (45.74, 4.83). Un embedding fait la même chose, mais dans un espace de 768 dimensions plutôt que 2 et pour des concepts plutôt que des positions géographiques.
chien = [0.21, -0.83, 0.15, 0.67, -0.42, …, 0.33] — 768 nombres flottants
chat = [0.19, -0.81, 0.18, 0.64, -0.39, …, 0.31] — 768 nombres flottants
voiture = [-0.45, 0.22, -0.67, -0.12, 0.88, …, -0.54] — 768 nombres très différents
Vous voyez la différence ? Les vecteurs de ‘chien’ et ‘chat’ sont très similaires, les nombres sont proches. Le vecteur de ‘voiture’ est très différent des deux. Le modèle a ‘appris’ que chien et chat partagent un espace sémantique commun (animaux domestiques) tandis que voiture appartient à un autre univers (véhicules mécaniques).
🧠 Vocabulaire technique : on dit que les mots ‘chien’ et ‘chat’ ont une haute similarité cosinus (on explique ce concept en dessous), ce qui signifie que leurs vecteurs pointent dans des directions proches dans l’espace à 768 dimensions.
L’espace vectoriel : Une carte géographique du langage
Pour comprendre intuitivement les embeddings, imaginez une carte en 2D où chaque mot est un point. Les mots sémantiquement proches sont géographiquement proches sur cette carte. Les mots sans rapport sont éloignés.
Sur cette carte imaginaire, vous verriez des clusters, des zones où des mots du même domaine se regroupent naturellement. Un cluster ‘animaux’ avec chien, chat, cheval, lapin. Un cluster ‘transport’ avec voiture, train, avion, vélo. Un cluster ‘émotions’ avec joie, tristesse, colère, peur. Ces clusters émergent naturellement du processus d’apprentissage, sans que personne n’ait dit au modèle ‘ces mots appartiennent à la même catégorie’.
La réalité est bien sûr plus complexe : les embeddings ont des centaines de dimensions, pas deux. Mais la même logique s’applique. Des mots dont les contextes d’usage dans le texte humain se ressemblent finissent proches dans cet espace multidimensionnel. Des mots dont les contextes diffèrent radicalement finissent éloignés.
📍 Analogie parfaite : imaginez une carte du monde non pas de la géographie, mais du sens. Plutôt que la France est à côté de l’Espagne et de l’Italie (proximité géographique), dans cet espace, ‘médecin’ est à côté de ‘infirmière’ et ‘chirurgien’ (proximité sémantique). ‘Pythagore’ est proche de ‘géométrie’ et ‘triangle’. Et ‘pizza’ est proche de ‘pâtes’ et ‘italie’ mais aussi de ‘mozzarella’ et ‘four’.
La magie de l’arithmétique sémantique : Roi – Homme + Femme = Reine
Et maintenant, la partie la plus stupéfiante des embeddings. Si les mots sont des points dans un espace vectoriel, et si cet espace capture le sens, alors on peut faire de l’arithmétique sur des concepts.
L’expérience la plus célèbre de l’histoire des embeddings date de 2013, avec word2vec de Google. Les chercheurs ont démontré que :
vecteur(‘roi’) – vecteur(‘homme’) + vecteur(‘femme’) ≈ vecteur(‘reine’) → La différence entre roi et homme est la même que la différence entre reine et femme
vecteur(‘Paris’) – vecteur(‘France’) + vecteur(‘Italie’) ≈ vecteur(‘Rome’) → Paris est à la France ce que Rome est à l’Italie
vecteur(‘chien’) – vecteur(‘chiot’) ≈ vecteur(‘chat’) – vecteur(‘chaton’) → La relation adulte/jeune est encodée dans la différence vectorielle
Comment est-ce possible ? L’intuition est la suivante. Le modèle a lu des milliards de phrases où ‘roi’ et ‘reine’ apparaissent dans des contextes similaires (la cour royale, les châteaux, les couronnes…) mais aussi des contextes différents (les rois sont mentionnés avec ‘sa majesté le roi’, les reines avec ‘sa majesté la reine’). La différence entre ces contextes encode implicitement la différence de genre.
Donc ‘roi – homme’ capture quelque chose comme ‘la dimension royale sans la dimension masculine’. Et ‘reine – femme’ capture quelque chose de similaire. Ces deux vecteurs pointent dans des directions très proches dans l’espace vectoriel et c’est exactement ce que mesure la similarité cosinus.
🤯 Ce qui rend ça extraordinaire : personne n’a programmé cette logique. Personne n’a dit au modèle ‘roi et reine sont liés par le genre’. Il a appris ça en lisant du texte, en observant les motifs dans lesquels ces mots apparaissent, et en construisant des représentations vectorielles qui capturent ces relations implicitement.
Comment les embeddings sont créés : L’entraînement
La question naturelle est : comment apprend-on ces vecteurs ? Comment le modèle sait-il que ‘chien’ et ‘chat’ doivent être proches ?
La réponse est dans la linguistique distributionnelle, une idée simple et puissante formulée par le linguiste J.R. Firth en 1957 : ‘On connaît un mot à la compagnie qu’il tient’. Autrement dit, des mots qui apparaissent dans des contextes similaires ont probablement des sens similaires.
L’intuition derrière l’apprentissage
Imaginez que le modèle lit des milliards de phrases. Il observe que ‘chien’ apparaît souvent dans des phrases comme ‘Mon ___ aboie’, ‘Je promène mon ___’, ‘Mon ___ a faim’, ‘Le ___ dort’. Et il observe que ‘chat’ apparaît dans des phrases comme ‘Mon ___ miaule’, ‘Je nourris mon ___’, ‘Mon ___ a faim’, ‘Le ___ dort’. Les contextes se ressemblent beaucoup, donc les vecteurs doivent être proches.
En revanche, ‘voiture’ apparaît dans ‘Je conduis ma ___’, ‘Ma ___ est en panne’, ‘La ___ roule’. Des contextes totalement différents, donc le vecteur doit être éloigné.
Le processus d’entraînement simplifié
- Le modèle est initialisé avec des vecteurs aléatoires pour chaque mot du vocabulaire.
- Il lit une phrase, masque un mot, et essaie de prédire le mot manquant à partir des mots environnants.
- Si sa prédiction est incorrecte, les vecteurs sont ajustés, les mots qui apparaissent dans des contextes similaires se rapprochent, les autres s’éloignent.
- Ce processus se répète des milliards de fois sur des milliards de phrases.
- Après l’entraînement, les vecteurs capturent les relations sémantiques implicites dans le texte humain
⚙️ Note technique : les architectures modernes comme BERT (Google), RoBERTa, ou les modèles de OpenAI et Anthropic n’utilisent pas le simple word2vec. Ils utilisent des Transformers avec mécanisme d’attention qui permettent de calculer un embedding différent pour le même mot selon son contexte : ‘banque’ dans ‘je vais à la banque’ a un vecteur différent de ‘banque’ dans ‘la banque du fleuve’.
La similarité cosinus : Comment mesurer la distance sémantique
Si les embeddings sont des vecteurs (des flèches dans un espace multidimensionnel), comment mesure-t-on leur similarité ? On pourrait utiliser la distance euclidienne, la distance ‘droite’ entre deux points. Mais en pratique, pour les embeddings textuels, on utilise plutôt la similarité cosinus.
La similarité cosinus mesure l’angle entre deux vecteurs plutôt que leur distance absolue. Si deux vecteurs pointent dans exactement la même direction (angle = 0°), la similarité cosinus vaut 1 : similarité parfaite. S’ils pointent dans des directions perpendiculaires (angle = 90°), la similarité vaut 0 : aucune relation sémantique. S’ils pointent dans des directions opposées (angle = 180°), la similarité vaut -1 : sens contraires (comme ‘chaud’ et ‘froid’).
| Exemple de paire | Similarité cosinus | Interprétation |
| ‘chien’ et ‘chat’ | ~0.85 | Très similaires : même univers sémantique |
| ‘chien’ et ‘animal’ | ~0.75 | Très proches : relation genre/espèce |
| ‘chien’ et ‘laisse’ | ~0.62 | Proches : objets associés |
| ‘chien’ et ‘banque’ | ~0.10 | Peu de relation |
| ‘chaud’ et ‘froid’ | ~-0.20 | Légèrement opposés (antonymes) |
| ‘roi’ et ‘reine’ | ~0.80 | Très similaires : même domaine, genres différents |
Pourquoi cosinus plutôt qu’euclidien ? Parce que la direction d’un vecteur est plus informative que sa longueur. Deux textes de longueur très différente (un tweet et un roman) peuvent parler du même sujet. Leurs vecteurs auraient des longueurs très différentes mais des directions similaires. La similarité cosinus capture ça, la distance euclidienne non.
Embeddings et recherche sémantique : Quand Google comprend vos questions
Voici l’application la plus quotidienne des embeddings, tellement intégrée dans nos habitudes qu’on ne la remarque plus. Quand vous cherchez ‘symptômes grippe’ sur Google, vous obtenez des résultats sur la fièvre, la toux, les courbatures, le repos au lit. Pas des résultats qui contiennent exactement le mot ‘symptômes’ ET le mot ‘grippe’.
C’est la recherche sémantique en action, alimentée par des embeddings. Voici comment ça fonctionne.
La recherche par mots-clés (l’ancienne façon)
La recherche traditionnelle, dite lexicale ou par mots-clés, cherche les documents qui contiennent exactement les mots de votre requête. Si vous cherchez ‘médecin fièvre’, elle retourne les pages qui contiennent les mots ‘médecin’ et ‘fièvre’. Une page qui parle de ‘docteur température élevée’ pourrait ne pas apparaître, même si elle est parfaitement pertinente.
La recherche sémantique (la façon moderne)
- Votre requête ‘symptômes grippe’ est transformée en vecteur d’embedding, un point dans l’espace sémantique.
- Chaque document de la base de données a aussi été transformé en vecteur au moment de l’indexation.
- Le moteur de recherche calcule la similarité cosinus entre le vecteur de votre requête et le vecteur de chaque document.
- Les documents dont les vecteurs sont les plus proches de votre requête sont retournés, même s’ils n’utilisent pas les mêmes mots.
- ‘Docteur température élevée corps courbatures’ a un vecteur proche de ‘symptômes grippe’ et remonte dans les résultats
💡 C’est pour ça que Google comprend ‘je me sens pas bien, j’ai mal partout et j’ai très chaud’ et vous propose des résultats sur les symptômes de la grippe. Il ne cherche pas les mots, il cherche le sens.
Embeddings et RAG : Le cerveau derrière ChatGPT sur vos documents
Vous avez peut-être entendu parler de RAG pour Retrieval-Augmented Generation. On l’a expliqué en détail dans notre précédent Décryptage IA. Les embeddings en sont la pièce centrale.
Rappel rapide : le RAG permet à un LLM (comme ChatGPT ou Claude) de répondre à des questions sur vos propres documents : votre documentation interne, vos emails, vos contrats. Mais comment l’IA sait-elle quelle partie de vos milliers de documents est pertinente pour votre question ?
Les embeddings dans le pipeline RAG
- À l’indexation : chaque document (ou morceau de document) est transformé en vecteur d’embedding et stocké dans une base de données vectorielle (Pinecone, Weaviate, Chroma, pgvector…).
- À la requête : votre question est transformée en vecteur d’embedding.
- Recherche de voisins : les k documents dont les vecteurs sont les plus proches du vecteur de votre question sont récupérés.
- Génération : ces k documents pertinents sont envoyés au LLM avec votre question, qui génère une réponse en se basant sur ces sources.
Sans embeddings, il n’y a pas de RAG. Ce sont eux qui permettent à l’IA de retrouver rapidement les passages pertinents dans un corpus de millions de documents.
📚 Exemple concret : vous avez indexé tous vos contrats clients avec des embeddings. Vous posez la question : ‘Quel contrat a une clause de résiliation à 30 jours ?’ L’embedding de votre question est proche de l’embedding des clauses qui mentionnent ‘résiliation’, ‘préavis’, ‘délai’, ‘résoudre le contrat’… Ces passages sont récupérés et le LLM vous répond avec les clauses pertinentes. Aucun mot-clé exact ne suffirait à trouver ça.
Les outils disponibles en 2026 : Par où commencer
| Outil/Modèle | Type | Dimensions | Prix | Idéal pour |
| text-embedding-3-small (OpenAI) | API cloud | 1 536 | $0,02/M tokens | Projets généraux, excellent rapport qualité/prix |
| text-embedding-3-large (OpenAI) | API cloud | 3 072 | $0,13/M tokens | Meilleure qualité, projets critiques |
| embed-multilingual-v3 (Cohere) | API cloud | 1 024 | $0,10/M tokens | Multilingue (dont français) : excellent |
| nomic-embed-text-v1.5 | Open source (local) | 768 | Gratuit | Auto-hébergement, vie privée maximale |
| mxbai-embed-large-v1 | Open source (local) | 1 024 | Gratuit | Haute performance sans cloud |
| all-MiniLM-L6-v2 (sentence-transformers) | Open source | 384 | Gratuit | Démarrage rapide, léger, via Python |
Les bases de données vectorielles pour stocker les embeddings
- Pinecone : la plus populaire, fully managed, simple à démarrer, payante.
- Chroma : open source, parfait pour les projets locaux et prototypes.
- Weaviate : open source, multi-modal (texte + images), auto-hébergé ou cloud.
- pgvector : extension PostgreSQL si vous avez déjà Postgres, c’est le plus simple.
- Qdrant : open source, excellentes performances, auto-hébergé ou cloud
Les limites des embeddings : Ce qu’ils ne capturent pas bien
Les embeddings sont puissants, mais ils ont des limites réelles qu’il faut connaître.
- L’ironie et le sarcasme : ‘Ce film est vraiment extraordinaire’ (sarcasme) a le même embedding positif que ‘Ce film est vraiment extraordinaire’ (sincère). Le contexte émotionnel fin est difficile à capturer.
- Les chiffres et données précises : ‘5 milliards’ et ‘5 millions’ ont des vecteurs proches malgré une différence de facteur 1 000. Les embeddings encodent le type (nombre, montant) mais pas la valeur précise.
- Les nouveaux mots après l’entraînement : un modèle entraîné avant janvier 2026 ne sait pas ce qu’est ‘ClawWorm’. Il lui donnera un vecteur approximatif basé sur les mots similaires dans son vocabulaire d’où les hallucinations.
- Les langues peu représentées : les embeddings multilingues fonctionnent très bien pour l’anglais, le français, l’espagnol, etc. Mais les langues peu présentes sur internet (langues africaines, langues autochtones) sont moins bien représentées, leurs embeddings sont moins précis.
- La dimension contextuelle : un embedding de document entier est une moyenne de tous les concepts du document. Un long document sur ‘la politique économique française’ aura un vecteur ‘moyen’ qui ne reflète pas bien les nuances spécifiques de chaque paragraphe. C’est pourquoi on découpe les documents en chunks avant d’indexer.
Le concept le plus important de toute l’IA
Si je devais choisir UN concept d’IA que tout le monde devrait comprendre, pas juste les développeurs, mais les chefs de projet, les directeurs marketing, les managers d’équipes tech, ce serait les embeddings.
Pourquoi ? Parce que presque toute l’IA ‘intelligente’ que vous voyez repose dessus. La recherche sémantique dans Notion, Confluence ou Slack : c’est des embeddings. Le fait que ChatGPT puisse répondre sur vos documents internes, c’est du RAG, donc des embeddings. Les recommandations Netflix qui comprennent que si vous avez aimé Inception vous pourriez aimer Tenet, c’est des embeddings.
Comprendre les embeddings, c’est comprendre comment l’IA ‘comprend’. Pas au sens de la conscience ou de l’intuition humaine. Mais au sens mathématique de la représentation du sens dans un espace numérique. C’est un outil conceptuel d’une puissance remarquable, né de l’idée simple qu’on connaît un mot à la compagnie qu’il tient.
La prochaine fois que vous utiliserez une fonctionnalité IA qui semble ‘comprendre’ ce que vous cherchez, rappelez-vous qu’il y a très probablement un vecteur de 768 nombres quelque part qui fait le travail.
🗣️ Le débat est ouvert !
🔸 Après avoir lu cet article, est-ce que vous voyez différemment les applications IA que vous utilisez au quotidien ? La recherche Google, Spotify, Netflix, la recherche dans Notion ou Confluence, savez-vous maintenant si elles utilisent probablement des embeddings ? Partagez vos observations.
🔸 Question pratique : utilisez-vous déjà des embeddings dans vos projets (RAG, recherche sémantique, recommandations) ? Quel modèle d’embedding et quelle base de données vectorielle utilisez-vous ? Partagez vos retours.
Si cet article vous a aidé à comprendre enfin ce que sont les embeddings, partagez-le avec quelqu’un qui vous a déjà demandé ‘mais comment l’IA fait pour comprendre ça ?’. Maintenant vous avez la réponse.
Tech-Connect Actualités tech, tutoriels et astuces informatiques expliqués simplement