Accueil / Factory / Algos ML / Embeddings — factory / algos ML / représentation du texte

LES EMBEDDINGS.

Un embedding transforme un texte en une liste de quelques centaines de nombres : un vecteur. Deux textes de sens proche reçoivent des vecteurs proches, même sans mot en commun. C'est la brique qui permet la recherche par le sens, le regroupement de verbatims et le RAG.

TexteSimilaritéRecherche sémantiqueClusteringNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceCapte synonymes et reformulations qu'un mot-clé rate
InterprétabilitéDimensions sans sens lisible, mais voisins parlants
VitesseCalculé une fois puis stocké, comparaison instantanée
Facilité de réglageLe choix du modèle fait l'essentiel du résultat
Tolérance aux données brutesTexte brut accepté, fautes et abréviations comprises
EN 30 SECONDES

Un plan de rangement de bibliothèque : chaque texte reçoit une adresse, et les textes qui parlent de la même chose se retrouvent sur la même étagère, quels que soient leurs mots.

1. Un modèle lit le texte

Un modèle pré-entraîné, souvent de la famille BERT, lit la phrase entière et produit un vecteur par token.

2. On résume en un seul vecteur

Les vecteurs des tokens sont moyennés en un vecteur unique pour le texte, ici 384 nombres. Le modèle a été entraîné pour que des phrases de même sens tombent au même endroit.

3. On compare par le cosinus

La similarité cosinus mesure l'angle entre deux vecteurs : plus elle est proche de 1, plus les sens sont proches. On peut alors chercher, regrouper ou classer.

LE CAS MÉTIER

verbatims clients · e-commerce / distribution
EN ENTRÉE

1 500 avis, sans étiquette

Des avis libres en français. On veut savoir de quoi parlent les clients sans lire chaque avis et sans liste de mots-clés établie à l'avance.

EN SORTIE

Des thèmes et une recherche par le sens

Chaque avis devient un vecteur. Un K-means regroupe les vecteurs voisins en 6 thèmes, qu'on nomme en lisant l'avis le plus central de chacun. La même base répond à une recherche formulée librement.

CE QU'ON MESURE

La cohérence des groupes, jugée par un humain

Aucune métrique ne dit si un thème est utile. On lit une vingtaine d'avis par groupe et on vérifie qu'ils parlent de la même chose. Pour la recherche, on mesure la part de résultats pertinents parmi les 10 premiers.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Recherche par le sens dans des verbatims, tickets, contrats ou fiches produits
  • Regrouper des milliers de textes en thèmes sans les étiqueter
  • Repérer les doublons et quasi-doublons (tickets, annonces, questions)
  • Préparer un RAG : c'est l'étape d'indexation des documents

NON

  • Recherche de références exactes (codes produits, numéros de contrat) : la recherche par mots-clés reste meilleure
  • Besoin d'expliquer pourquoi deux textes sont proches : TF-IDF se lit mot par mot
  • Vocabulaire très technique mal couvert par le modèle : tester d'abord sur un échantillon
  • Textes longs de plusieurs pages : les découper avant, un seul vecteur dilue le sens
LES 3 CHOIX QUI COMPTENT

Pas d'entraînement : on choisit un modèle et une façon de comparer. Noms donnés pour sentence-transformers.

Le modèle

Il doit connaître la langue et le domaine. Un petit modèle multilingue comme celui du code suffit pour démarrer ; les classements publics comme MTEB aident à comparer.

normalize_embeddings

Normaliser les vecteurs à une longueur de 1 rend le produit scalaire égal au cosinus. Les calculs et les index de recherche deviennent plus simples.

Longueur des textes

Chaque modèle tronque au-delà d'une longueur maximale, souvent quelques centaines de tokens. Un document long se découpe en passages, avec un vecteur par passage.

LE CODE MINIMAL

jeu d'exemple : avis_clients.csv ↓
# Thèmes des avis clients : embeddings en Python
import pandas as pd
from sentence_transformers import SentenceTransformer
from sklearn.cluster import KMeans

avis = pd.read_csv("avis_clients.csv")

# Petit modèle public multilingue : chaque avis devient un vecteur de 384 nombres
modele = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
vecteurs = modele.encode(avis["texte"].tolist(), normalize_embeddings=True)
print("Taille des vecteurs :", vecteurs.shape)

# Recherche par le sens : la requête ne partage aucun mot avec les avis visés
requete = modele.encode(["Le paquet a mis une éternité à venir"], normalize_embeddings=True)[0]
avis["similarite"] = vecteurs @ requete  # cosinus, car vecteurs normalisés
print(avis.nlargest(3, "similarite")[["texte", "similarite"]])

# Regroupement des avis en 6 thèmes, nommés en lisant l'avis le plus central
km = KMeans(n_clusters=6, n_init=10, random_state=42).fit(vecteurs)
distances = km.transform(vecteurs)
for k in range(6):
    print("Thème", k, ":", (km.labels_ == k).sum(), "avis | exemple :", avis["texte"][distances[:, k].argmin()])

Les embeddings de phrases se calculent en Python (sentence-transformers) : en R, le package text passe lui-même par Python.

QUESTIONS FRÉQUENTES

Qu'est-ce qu'un embedding en IA ?

Une représentation d'un objet (mot, phrase, image, produit) sous forme de vecteur de nombres, apprise par un modèle. Sa propriété utile : des objets proches par le sens ont des vecteurs proches, ce qui se mesure par un simple calcul.

Quelle différence entre embeddings et TF-IDF ?

TF-IDF compte les mots : deux textes sans mot commun ont une similarité nulle. Un embedding capte le sens : « colis en retard » et « livraison trop lente » se retrouvent proches. TF-IDF reste plus rapide, plus lisible, et suffit souvent pour des textes au vocabulaire stable.

Où stocker des millions d'embeddings ?

Dans une base vectorielle (pgvector pour PostgreSQL, Qdrant, Milvus, Elasticsearch…) qui retrouve les plus proches voisins en quelques millisecondes grâce à des index approximatifs. Pour quelques dizaines de milliers de textes, une matrice en mémoire suffit.

LES ALGOS VOISINS

à comparer avant de choisir
l'ancêtre, mot par mot

Word2Vec

Un vecteur par mot, le même quel que soit le contexte. Les embeddings de phrases vont plus loin.

Voir la fiche →
la version par mots-clés

TF-IDF

Deux textes sans mot commun y sont sans rapport. Plus rapide et plus lisible, mais aveugle aux synonymes.

Voir la fiche →
l'usage phare

RAG

Les embeddings retrouvent les passages utiles, que le LLM utilise pour répondre.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →