Embeddings
Les plongements sont des vecteurs appris qui rapprochent les textes, les images ou les éléments similaires. Présentation de leur création, de leur comparaison et de la recherche à grande échelle.
Un plongement est un vecteur de nombres appris qui représente un élément, comme un mot, une image, un produit ou un utilisateur, de sorte que les éléments de sens ou de contenu similaires aient des vecteurs proches. La distance dans cet espace vectoriel devient une mesure de similarité, ce qui permet aux logiciels de rechercher, de regrouper, de recommander et de classer en comparant des vecteurs plutôt que des pixels ou des chaînes bruts. Les plongements sont aussi la représentation de travail des réseaux neuronaux : un grand modèle de langage (LLM) convertit chaque jeton en plongement avant sa première couche Transformer, et un modèle de vision transforme une image en vecteurs de caractéristiques au moyen de son backbone. Les plongements utilisés pour la recherche ont généralement quelques centaines à quelques milliers de dimensions, bien moins que le nombre de valeurs de l'entrée brute.
Comment les embeddings sont créés#
Les embeddings proviennent de deux types de composants appris :
- Tables de correspondance : Pour les éléments discrets tels que les tokens, les identifiants de produits ou les identifiants d'utilisateurs, une couche d'embedding stocke une ligne ajustable par élément, et la recherche d'un élément renvoie sa ligne. La table
nn.Embeddingde PyTorch en est un exemple. Ses lignes sont initialisées aléatoirement et mises à jour par rétropropagation avec le reste du modèle, de sorte que les éléments jouant des rôles similaires dans la tâche d'entraînement évoluent vers des vecteurs similaires. - Encodeurs : Pour les images, l'audio et le texte libre, un réseau mappe l'entrée entière vers un vecteur, souvent en agrégeant les cartes de caractéristiques d'un CNN ou en lisant les tokens de sortie d'un transformer. Les encodeurs entraînés pour une tâche telle que la classification produisent des embeddings utiles comme sous-produit, tandis que les encodeurs entraînés par apprentissage contrastif structurent directement l'espace des embeddings, comme le fait CLIP en plaçant les images et leurs légendes dans un même espace partagé.
Word2vec, publié par Tomas Mikolov et ses collègues chez Google en 2013, a montré toute la structure que ce type d'entraînement permet de capturer. Dans ses vecteurs de mots, le vecteur("King") − vecteur("Man") + vecteur("Woman") se rapproche le plus du vecteur("Queen"), et les vecteurs Google News préentraînés qu'il a publiés couvrent 3 millions de mots et d'expressions en 300 dimensions.
Comparer les embeddings#
La similarité cosinus compare les directions de deux vecteurs et varie de −1 à 1. Le produit scalaire tient également compte de leur longueur, et la distance euclidienne mesure l'écart en ligne droite entre eux. De nombreux systèmes normalisent les embeddings à une norme unitaire, ce qui rend la similarité cosinus et le produit scalaire identiques et classe les voisins dans le même ordre que la distance euclidienne. Les modèles YOLO26 produisent des embeddings d'images via embed(), qui ignore la tête de prédiction et renvoie un vecteur par image en calculant la moyenne des sorties de l'avant-dernière couche du modèle :
import torch.nn.functional as F
from ultralytics import YOLO
from ultralytics.utils import ASSETS
# Load a YOLO26 classification model trained on ImageNet
model = YOLO("yolo26n-cls.pt")
# embed() returns one pooled feature vector per image instead of predictions
bus, zidane = model.embed([ASSETS / "bus.jpg", ASSETS / "zidane.jpg"])
print(f"Embedding length: {bus.shape[0]}")
# Higher cosine similarity means the model sees more similar content
print(f"Cosine similarity: {F.cosine_similarity(bus, zidane, dim=0).item():.3f}")Pour YOLO26n-cls, le plongement est un vecteur de 256 dimensions, la sortie agrégée du bloc d’attention qui termine son backbone ; la deuxième ligne affiche la similarité cosinus entre les deux photos d’exemple fournies. Effectuer la même comparaison avec les plongements stockés d’une collection entière permet à une recherche d’images similaires de classer ses résultats.
Rechercher des embeddings à grande échelle#
Comparer une requête à des millions de vecteurs stockés un par un est trop lent ; les bases de données vectorielles construisent donc des index de plus proches voisins approximatifs, comme les index HNSW fondés sur des graphes ou les index à fichiers inversés, qui trouvent des correspondances proches en examinant une petite fraction de la collection. La collection est transformée en embeddings une seule fois, et chaque requête est transformée en embedding au moment de la recherche avec le même encodeur, ou avec l'encodeur de texte associé lorsqu'une recherche textuelle porte sur des images :
Le stockage influe autant sur la conception que la précision. L'apprentissage de représentations Matryoshka entraîne des embeddings dont les premières dimensions sont utiles à elles seules, ce qui permet de tronquer les vecteurs pour économiser de l'espace, tandis que la quantification vectorielle compresse chaque vecteur en quelques octets. La recherche hybride combine la similarité des embeddings et la recherche par mots-clés.
Applications#
- Recherche sémantique et génération augmentée par récupération (RAG) : Les embeddings de texte retrouvent des passages selon leur sens ; une requête sur les « déclarations de sinistres automobiles » trouve donc aussi des documents parlant de « polices d'assurance auto », et le RAG transmet les passages retrouvés à un LLM comme contexte.
- Systèmes de recommandation : Les utilisateurs et les éléments sont représentés dans un même espace, et les éléments les plus proches du vecteur d'un utilisateur deviennent des recommandations possibles.
- Classification zero-shot : Les modèles disposant d'un espace partagé entre images et texte classent une image en comparant son embedding à ceux des noms de classes écrits sous forme de texte.
- Réidentification d'objets : Les embeddings d'apparence relient une même personne ou un même véhicule entre plusieurs caméras et entre les interruptions d'une trajectoire.
- Exploration de jeux de données : la projection des plongements en deux dimensions avec t-SNE ou UMAP révèle les groupes, les quasi-doublons et les valeurs aberrantes d’un jeu de données, comme le fait le panneau Clustering pour les jeux de données Ultralytics Platform.
Embeddings et termes associés#
- Espace latent : L'espace vectoriel occupé par les embeddings. « Représentation latente » et « embedding » sont souvent employés comme synonymes.
- Extraction de caractéristiques : Tout processus qui transforme des données brutes en caractéristiques. Un embedding est un vecteur de caractéristiques appris de telle sorte que les distances entre les vecteurs aient un sens.
- Tokenisation : Découpe le texte en tokens et associe à chacun un identifiant entier. La couche d'embedding associe ensuite chaque identifiant à un vecteur.
- Encodage one-hot : Représente l'élément i d'un vocabulaire par un vecteur de zéros avec un 1 à la position i, de sorte que chaque paire d'éléments soit à égale distance et que l'encodage ne contienne aucune information de similarité. Multiplier un vecteur one-hot par la matrice des poids d'une table d'embeddings sélectionne exactement une ligne, ce qui correspond au résultat renvoyé par une recherche d'embedding sans effectuer la multiplication.










