Le principe
Un modèle d'embedding transforme n'importe quel texte, un mot, une phrase, un paragraphe, en une liste de nombres de taille fixe : la dimension du vecteur. Elle va de 384 pour les petits modèles open weight à 3072 pour les plus gros modèles d'API. Cette liste place le texte sur une carte où la distance reflète le sens : « résilier mon abonnement » et « annuler mon contrat » atterrissent côte à côte, sans aucun mot en commun.
La proximité entre deux vecteurs se mesure le plus souvent par la similarité cosinus, un score entre -1 et 1 : plus il approche de 1, plus les vecteurs sont alignés, donc plus le modèle juge les deux textes proches par le sens.
À quoi ça sert
La recherche sémantique en est l'usage principal : retrouver des documents par le sens, là où la recherche classique compare des mots-clés. C'est la brique « retrouver » du RAG. Les embeddings servent aussi à recommander des contenus similaires, détecter des doublons ou classer des textes par thème.
Un exemple minimal
Avec Ollama et un modèle d'embedding en local :
import ollama
reponse = ollama.embed(model="bge-m3", input="Comment résilier mon abonnement ?")
vecteur = reponse["embeddings"][0]
print(len(vecteur)) # 1024 nombres
print(vecteur[:5]) # les cinq premiers
Le vecteur seul ne se lit pas, il n'a de valeur que comparé à d'autres vecteurs produits par le même modèle. Comparer des embeddings issus de deux modèles différents n'a aucun sens.