Sentence Transformers : Embeddings Sémantiques de Phrases
Origine et contexte
Le framework Sentence Transformers (aussi connu sous le nom SBERT) a été introduit par Nils Reimers et Iryna Gurevych en 2019, dans le papier « Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks ». Le constat de départ était simple : utiliser BERT directement pour comparer deux phrases nécessite de les passer ensemble dans le modèle, ce qui rend la recherche sémantique parmi 10 000 phrases combinatoirement explosive (environ 50 millions de comparaisons). SBERT résout ce problème en produisant un vecteur fixe par phrase, permettant des comparaisons par similarité cosinus en temps quasi constant.
Le projet est développé et maintenu activement en open source sur GitHub (UKPLab/sentence-transformers) et sur Hugging Face. En 2026, c’est la bibliothèque de référence pour les embeddings de texte en production.
Comment fonctionnent les Sentence Transformers
Architecture Siamese/Triplet
L’architecture de base utilise un réseau siamois (ou triplet) : le même modèle Transformer encode deux (ou trois) textes en parallèle, puis une opération de pooling (typiquement la moyenne des tokens) produit un vecteur fixe pour chaque texte. La perte d’entraînement force les paires sémantiquement similaires à avoir des vecteurs proches, et les paires dissimilaires à avoir des vecteurs éloignés.
Stratégies de pooling
Trois stratégies de pooling sont couramment utilisées pour transformer la séquence de vecteurs de tokens en un seul vecteur de phrase :
Mean pooling. Moyenne de tous les vecteurs de tokens (en excluant le padding). C’est la stratégie par défaut et la plus performante dans la majorité des cas.
CLS pooling. Utilisation du vecteur du token [CLS]. Moins performant en général que le mean pooling pour les Sentence Transformers.
Max pooling. Maximum élément par élément sur tous les vecteurs de tokens. Utilisé dans certains cas spécifiques.
Entraînement et fine-tuning
Les Sentence Transformers sont entraînés (ou fine-tunés) sur des jeux de données de paires ou triplets de phrases annotées. Les fonctions de perte les plus utilisées sont :
Cosine Similarity Loss. Pour les paires avec un score de similarité continu.
Multiple Negatives Ranking Loss (MNRL). Pour les paires positives uniquement (les négatifs sont les autres éléments du batch). C’est la perte la plus populaire en 2026 pour son efficacité.
Triplet Loss. Pour les triplets (ancre, positif, négatif) avec une marge.
Modèles populaires
| Modèle | Dimensions | Taille | Performance MTEB | Usage recommandé |
|---|---|---|---|---|
| all-MiniLM-L6-v2 | 384 | 80 Mo | Bonne | Prototypage, faible latence |
| all-mpnet-base-v2 | 768 | 420 Mo | Très bonne | Usage général |
| e5-large-v2 | 1024 | 1,3 Go | Excellente | Production haute qualité |
| bge-large-en-v1.5 | 1024 | 1,3 Go | Excellente | RAG, recherche sémantique |
| multilingual-e5-large | 1024 | 2,2 Go | Très bonne | Multilingue (100+ langues) |
| gte-Qwen2-7B-instruct | 3584 | 14 Go | Excellente | Top MTEB, gros budget GPU |
Le benchmark MTEB (Massive Text Embedding Benchmark) est la référence pour évaluer les modèles d’embeddings. Il couvre des tâches de classification, clustering, recherche, réordonnancement et similarité sémantique sur des dizaines de jeux de données.
Cas d’usage principaux
Recherche sémantique
C’est le cas d’usage phare. Vous encodez un corpus de documents en vecteurs, les stockez dans une base de données vectorielle, puis trouvez les documents les plus pertinents pour une requête en calculant la similarité cosinus. La recherche sémantique comprend le sens, pas seulement les mots-clés : une requête « comment soigner un rhume » trouvera un document parlant de « traitement de la congestion nasale ».
RAG (Retrieval-Augmented Generation)
Les Sentence Transformers sont le composant de retrieval dans les pipelines RAG. Le processus : découper les documents en chunks, les encoder avec un Sentence Transformer, stocker les vecteurs, puis lors d’une question, encoder la question, retrouver les chunks pertinents, et les injecter dans le contexte d’un LLM pour générer une réponse sourcée.
Clustering de textes
Grouper automatiquement des textes par thématique. Les embeddings de phrases permettent de calculer des distances sémantiques et d’appliquer des algorithmes de clustering (K-Means, HDBSCAN) pour organiser des corpus de documents, des retours clients, ou des tickets support.
Déduplication sémantique
Identifier les contenus quasi-dupliqués même s’ils sont formulés différemment. Utile pour le nettoyage de bases de données, la détection de plagiat, ou la fusion de bases de connaissances.
Utilisation pratique
from sentence_transformers import SentenceTransformer, util
# Charger un modèle
model = SentenceTransformer('all-MiniLM-L6-v2')
# Encoder des phrases
phrases = [
"L'intelligence artificielle transforme le monde",
"Le machine learning révolutionne l'industrie",
"La recette du gâteau au chocolat",
]
embeddings = model.encode(phrases)
# Calculer la similarité
sim_matrix = util.cos_sim(embeddings, embeddings)
print(sim_matrix)
# Les deux premières phrases auront une similarité élevée (~0.7)
# La troisième sera éloignée des deux autres (~0.1)
# Recherche sémantique
query = model.encode("IA et technologie")
scores = util.cos_sim(query, embeddings)[0]
top_result = phrases[scores.argmax()]
print(f"Résultat le plus pertinent : {top_result}")
Sentence Transformers vs API d’embeddings
En 2026, les fournisseurs de LLM proposent leurs propres API d’embeddings (OpenAI text-embedding-3-large, Google text-embedding-004, etc.). Voici comment les Sentence Transformers se positionnent :
| Critère | Sentence Transformers | API d’embeddings (cloud) |
|---|---|---|
| Coût | Gratuit (open source), coût GPU | Pay-per-token |
| Latence | Contrôlée (local) | Dépend du réseau |
| Confidentialité | Données restent en local | Données envoyées au cloud |
| Personnalisation | Fine-tuning possible | Généralement non |
| Maintenance | À votre charge | Gérée par le fournisseur |
| Performance top | Comparable (gros modèles) | Souvent meilleure (MTEB) |
Pour les projets sensibles en matière de confidentialité ou nécessitant un fine-tuning sur des données métier, les Sentence Transformers open source restent le choix privilégié. Pour un démarrage rapide sans infrastructure GPU, les API cloud sont plus pratiques.
Questions fréquentes sur les Sentence Transformers
Quelle est la différence entre un word embedding et un sentence embedding ?
Un word embedding (Word2Vec, GloVe, FastText) produit un vecteur par mot, sans considérer le contexte de la phrase. Un sentence embedding (Sentence Transformer) encode le sens global d’une phrase entière en un seul vecteur. Cela permet de comparer des phrases complètes par similarité sémantique, ce qui est impossible avec de simples moyennes de word embeddings.
Quel modèle Sentence Transformer choisir pour commencer ?
all-MiniLM-L6-v2 est le meilleur point de départ : 80 Mo, rapide, bon rapport qualité/taille. Pour de la production anglophone, all-mpnet-base-v2 offre un cran au-dessus en qualité. Pour le multilingue (dont le français), multilingual-e5-large est recommandé. Pour le top absolu du MTEB, les modèles à 7B+ paramètres comme gte-Qwen2-7B-instruct dominent mais nécessitent un GPU conséquent.
Les Sentence Transformers fonctionnent-ils en français ?
Oui. Plusieurs modèles multilingues supportent le français : multilingual-e5-large, paraphrase-multilingual-MiniLM-L12-v2, ou distiluse-base-multilingual-cased-v2. Il existe aussi des modèles spécifiquement fine-tunés pour le français par la communauté Hugging Face.
Comment fine-tuner un Sentence Transformer sur mes données ?
La bibliothèque sentence-transformers fournit des classes d’entraînement prêtes à l’emploi. Vous avez besoin de paires de phrases (similaires ou dissimilaires) annotées. Le processus standard : charger un modèle pré-entraîné, définir un DataLoader avec vos paires, choisir une fonction de perte (MultipleNegativesRankingLoss pour les paires positives), et entraîner pendant quelques époques. Quelques milliers de paires suffisent souvent pour obtenir des gains significatifs.
Sentence Transformers vs embeddings OpenAI : lequel choisir ?
Si la confidentialité des données, le coût à grande échelle ou la personnalisation sont prioritaires, choisissez un Sentence Transformer open source hébergé en local. Si vous voulez démarrer rapidement sans infrastructure, que vos volumes sont modérés, et que la confidentialité n’est pas un enjeu, les API d’embeddings cloud (OpenAI, Google) sont plus simples à intégrer et offrent d’excellentes performances out-of-the-box.