Guide
Choisir un modèle d'embedding pour des textes en français
Langue, longueur de texte, hébergement, dimensions, préfixes : les critères pour choisir un modèle de plongements, et un test simple sur vos documents.
Mis à jour le
Pour des documents en français, partez d'un modèle multilingue, vérifiez qu'il accepte la longueur de vos passages, décidez s'il sera appelé par une interface en ligne ou installé chez vous, puis départagez deux ou trois candidats sur vos propres questions. Les classements publics servent à présélectionner, pas à décider.
Ce que disent les bancs d'essai en français
Le travail MTEB-French (Ciancone, Kerboua, Schaeffer et Siblini, publié le 30/05/2024) a adapté au français le banc d'essai MTEB (Massive Text Embedding Benchmark, qui compare les modèles de plongements sur des tâches standard) : 15 jeux de données existants, 3 jeux créés pour l'occasion, 8 catégories de tâches et 51 modèles comparés. Deux conclusions utiles :
- aucun modèle ne gagne sur toutes les tâches ;
- les grands modèles multilingues entraînés sur la similarité de phrases s'en sortent particulièrement bien.
C'est le même constat que le MTEB d'origine (Muennighoff et al.) : pas de méthode dominante partout. Ce que mesurent ces classements est détaillé sur la page Classement MTEB.
Les cinq critères qui comptent
1. La langue
Un modèle annoncé « anglais » peut donner de bons résultats en français, mais rien ne le garantit. Plusieurs modèles annoncent explicitement plus de 100 langues : BGE-M3, multilingual-e5-large, les modèles Embed multilingues de Cohere.
2. La longueur acceptée
Un texte trop long est tronqué : la fin n'est pas prise en compte. Les limites diffèrent beaucoup d'un modèle à l'autre (chiffres de la documentation de chaque éditeur, lue le 15/11/2026) :
| Modèle | Longueur maximale annoncée |
|---|---|
| multilingual-e5-large | 512 jetons, au-delà le texte est tronqué |
| BGE-M3 | 8 192 jetons |
| mistral-embed | « 8k » jetons (contexte indiqué sur la fiche du modèle) |
| gemini-embedding-2 | 8 192 jetons |
| text-embedding-3-small et -large (OpenAI) | 8 192 jetons |
| voyage-4, voyage-4-large, voyage-4-lite | 32 000 jetons |
| Cohere embed-v5.0 (pro et fast) | 128k jetons |
Si vos passages font quelques centaines de mots, la plupart conviennent. Si vous comptiez envoyer des documents entiers, la limite élimine d'emblée certains modèles. Le découpage des documents est traité sur Chunking RAG.
3. Hébergé ou installé chez vous
- Par interface de programmation (API) : Mistral AI, Voyage AI, Cohere, Google, OpenAI. Rien à installer, facturation au jeton, vos textes partent chez le fournisseur.
- Modèle à poids ouverts, exécuté sur vos machines : BGE-M3 et multilingual-e5-large sont publiés sous licence MIT sur Hugging Face. Voyage AI liste aussi
voyage-4-nanocomme modèle à poids ouverts. Pas de coût au jeton, mais du matériel et de la maintenance.
4. Les dimensions
Elles fixent la taille de chaque vecteur, donc la mémoire et le disque. Certains modèles ont une taille fixe (1 024 pour mistral-embed et multilingual-e5-large), d'autres laissent choisir : de 128 à 3 072 chez Google, 256 à 2 048 chez Voyage, paramètre dimensions chez OpenAI. Voir Dimensions et Matryoshka.
5. La façon d'appeler le modèle
Plusieurs modèles distinguent la question et le document :
- multilingual-e5 : chaque texte doit commencer par
query:oupassage:, y compris pour les textes non anglais ; sa fiche précise que sans ce préfixe, les performances se dégradent. - Voyage : paramètre
input_type(queryoudocument), qui ajoute une consigne fixe devant le texte. - Cohere :
input_typeobligatoire depuis les modèles v3 (search_document,search_query, etc.). - gemini-embedding-001 accepte un
task_type; gemini-embedding-2 n'en accepte pas et demande de placer la tâche en tête du texte.
Oublier ces réglages est une cause fréquente de résultats décevants avec un bon modèle.
Un test simple sur vos documents
- Rassemblez 30 à 50 questions réelles (messages de clients, demandes internes) et notez, pour chacune, le passage qui y répond.
- Indexez les mêmes passages avec chaque modèle candidat, en respectant ses préfixes ou son
input_type. - Pour chaque question, regardez si le bon passage arrive dans les 5 premiers résultats.
- Comparez le taux de réussite, puis le coût et la taille des vecteurs.
Exemple avec Sentence Transformers et multilingual-e5-large, en respectant les préfixes et la normalisation montrés sur sa fiche :
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("intfloat/multilingual-e5-large")
passages = ["passage: Le préavis de résiliation est de deux mois.",
"passage: La livraison est offerte dès 50 euros."]
questions = ["query: Combien de temps avant de résilier ?"]
p = model.encode(passages, normalize_embeddings=True)
q = model.encode(questions, normalize_embeddings=True)
print(q @ p.T) # vecteurs normalisés : produit scalaire = cosinus
Les phrases de cet exemple sont illustratives. Pour une évaluation plus poussée, la bibliothèque MTEB permet aussi de lancer des tâches standard sur un modèle (voir Classement MTEB).
Et ensuite
Le modèle choisi, il reste à décider où ranger les vecteurs : voir le comparatif des bases vectorielles. Les tarifs des modèles hébergés sont réunis dans le comparatif des modèles.
Questions fréquentes
Existe-t-il un classement des modèles d'embedding en français ?
Oui : MTEB-French, publié en 2024, rassemble 15 jeux de données existants et 3 nouveaux, sur 8 catégories de tâches, et compare 51 modèles. Ses auteurs concluent qu'aucun modèle ne gagne partout.
Un modèle anglais peut-il suffire pour des documents français ?
C'est risqué. Les auteurs de MTEB-French observent que les grands modèles multilingues entraînés sur la similarité de phrases s'en sortent particulièrement bien. Testez sur vos propres questions avant de trancher.
Sources
Pages consultées pour écrire cet article :
- https://arxiv.org/abs/2405.20468
- https://arxiv.org/abs/2210.07316
- https://huggingface.co/intfloat/multilingual-e5-large
- https://huggingface.co/BAAI/bge-m3
- https://docs.mistral.ai/inference/embeddings/text_embeddings
- https://docs.mistral.ai/models/mistral-embed-23-12
- https://docs.voyageai.com/docs/embeddings
- https://docs.cohere.com/docs/cohere-embed
- https://aistudio.google.com/docs/embeddings
- https://developers.openai.com/api/docs/guides/embeddings