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.