Aller au contenu
Fondamentaux

Embedding (plongement)

La traduction d'un mot ou d'un texte en une liste de nombres qui capture son sens : des coordonnées dans l'espace du sens.

7 min de lecture
  • #vecteurs
  • #sémantique
  • #recherche

Un embedding, ou plongement en français, est la traduction d’un token, ou d’un texte entier, en une liste de nombres qui capture son sens : deux contenus proches par le sens obtiennent des listes qui se ressemblent.

Imagine une carte gigantesque où chaque mot est posé selon son sens. « Chat » et « chien » sont voisins, « chat » et « démocratie » sont à des années-lumière. Un embedding, ce sont les coordonnées d’un mot sur cette carte : quelques centaines à quelques milliers de nombres qui disent où il habite.

Sur cette carte, rien n’est étiqueté. Aucun axe ne s’appelle « animaux » ou « politesse », aucune coordonnée prise seule ne veut rien dire. La seule information est le voisinage.

Tu sais déjà qu’un token n’est qu’un identifiant, sans plus de sens qu’un dossard. La première couche du modèle est une table de correspondance : une ligne par entrée du vocabulaire, et sur cette ligne les nombres qui servent de vecteur au token. Sur Llama 3 8B, elle fait 128 256 lignes de 4 096 nombres : environ 525 millions de valeurs, plus de 6 % du modèle rien que pour cette traduction.

Le vecteur n’a pas toujours 4 096 nombres : 300 pour les embeddings de mots de 2013, 3 072 pour text-embedding-3-large d’OpenAI (2024). Plus il y en a, plus la représentation est fine, et plus elle coûte à stocker.

Personne n’écrit ces nombres : ils sont appris pendant l’entraînement, et convergent vers une règle que les linguistes avaient posée bien avant les réseaux de neurones — deux mots qui apparaissent dans les mêmes contextes finissent par se ressembler. Le modèle ne lit aucune définition, il observe des voisinages.

On peut faire de l’arithmétique sur cette carte. C’est la démonstration devenue célèbre avec word2vec (Mikolov et al., 2013) : prendre le vecteur de « roi », retirer celui de « homme », ajouter celui de « femme », et tomber tout près de « reine ».

Deux réserves. L’opération ne marche qu’en excluant du résultat les trois mots de départ : sans ce filtre, le plus proche voisin de « roi − homme + femme » est « roi » lui-même (Nissim et al., 2020). Et la même géométrie restitue les préjugés du corpus : la proximité entre prénoms, métiers et adjectifs y reproduit les associations que les tests de biais implicites relèvent chez l’humain (Caliskan et al., 2017). Un embedding ne les invente pas, il les recopie.

Le vecteur de la table a un défaut : il est identique à chaque fois. « Avocat » y a une seule adresse, que la phrase parle d’un tribunal ou d’une salade — la limite des embeddings de première génération.

Les modèles actuels la contournent : le vecteur n’est qu’un point de départ, que chaque couche suivante réécrit selon les mots présents autour. Après quelques couches, « avocat » entouré de « juge » et « avocat » entouré de « mûr » ne sont plus au même endroit. Le mécanisme qui autorise un mot à regarder ses voisins s’appelle l’attention, et il a sa propre fiche.

Mesurer la proximité : un angle, pas une longueur

Section intitulée « Mesurer la proximité : un angle, pas une longueur »

Pour comparer deux contenus, on ne mesure pas l’écart entre leurs deux points : on mesure l’angle entre les flèches qui partent de l’origine et vont jusqu’à eux. C’est la similarité cosinus, le cosinus de cet angle. Elle vaut 1 quand les deux vecteurs pointent dans la même direction, 0 quand ils sont perpendiculaires — sans rapport — et jusqu’à −1 quand ils s’opposent.

Pourquoi l’angle et pas la distance ? Parce que la longueur d’un vecteur ne dit rien du sens : un paragraphe et la phrase qui le résume peuvent être de longueurs très différentes tout en pointant du même côté. D’où une habitude prise partout, ramener tous les vecteurs à la longueur 1, sur ce qu’on appelle la sphère unité. Là, classer par angle ou par distance à vol d’oiseau donne le même ordre — mais la grandeur mesurée reste l’angle.

À grande échelle, la mesure coûte cher : opposer une question à un million de documents, c’est un million d’angles. Les bases vectorielles renoncent donc à la réponse exacte et se rabattent sur des voisins approchés, quitte à manquer le meilleur candidat.

Les 34 mots du nuage sont posés sur une sphère : seule leur direction compte, et le score affiché est le cosinus de l’angle qui sépare le mot choisi de son voisin. Fais tourner le nuage avant de conclure, deux mots collés vus de face peuvent se séparer de profil.

poissonchaisecalmetristefatiguéénervéjoyeuxinquiet

Fais glisser le nuage, ou utilise les flèches du clavier.

Animaux

Meubles

Émotions

Métiers

Lieux

Personnes

Choisis un mot pour voir ses plus proches voisins.

Positions illustratives, choisies pour rendre les regroupements lisibles. Un vrai espace d'embeddings compte des centaines de dimensions, pas trois.

  • La recherche sémantique. Taper « comment faire des crêpes » et tomber sur « la pâte à crêpes facile », sans un mot en commun. La même mesure repère les doublons et regroupe des réponses par thème.
  • Le RAG. Une base documentaire est stockée en vecteurs, la question est vectorisée à son tour, et les extraits les plus proches sont glissés dans le prompt. C’est le principe d’Albert France services, l’assistant expérimenté par la DINUM et l’ANCT auprès des conseillers : il cherche dans les textes officiels avant de rédiger.
  • La recommandation. Spotify a ouvert Annoy en 2013 pour retrouver, parmi des millions de titres, les voisins d’un morceau ; Voyager l’a remplacée en 2023.
  • Au-delà du texte. CLIP (OpenAI, 2021) a appris sur 400 millions de paires image-légende à placer une photo et sa description au même endroit. D’où la recherche dans une photothèque en tapant « chien sur la plage », sans étiqueter aucune image.
  • « Un embedding, c’est la définition d’un mot. » Non : c’est une position relative. Un nombre du vecteur, pris seul, ne veut rien dire, et aucun axe ne porte de nom. Le sens est dans l’écart entre deux vecteurs, jamais dans un seul.
  • « Deux textes proches disent la même chose. » La similarité mesure une proximité de sujet, pas un accord. « Le chat dort » et « le chat ne dort pas » emploient presque les mêmes mots dans le même contexte : leurs vecteurs sont très proches alors que les phrases s’opposent. Le banc d’essai NevIR (Weller et al., 2024) l’a chiffré — la plupart des moteurs de recherche ne classent pas un document et sa version niée mieux que le hasard.
  • « Un embedding, c’est anonyme. » Morris et al. (2023) ont fait le chemin inverse : leur méthode reconstruit à l’identique 92 % de textes de 32 tokens à partir de leur seul vecteur. Un index vectoriel se protège comme les documents dont il sort.

Voir aussi