Aller au contenu
Cercle IA Tech · Embeddings Un site du réseau Cercle IA Tech

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-nano comme 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: ou passage: , 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 (query ou document), qui ajoute une consigne fixe devant le texte.
  • Cohere : input_type obligatoire 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

  1. Rassemblez 30 à 50 questions réelles (messages de clients, demandes internes) et notez, pour chacune, le passage qui y répond.
  2. Indexez les mêmes passages avec chaque modèle candidat, en respectant ses préfixes ou son input_type.
  3. Pour chaque question, regardez si le bon passage arrive dans les 5 premiers résultats.
  4. 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 :

  1. https://arxiv.org/abs/2405.20468
  2. https://arxiv.org/abs/2210.07316
  3. https://huggingface.co/intfloat/multilingual-e5-large
  4. https://huggingface.co/BAAI/bge-m3
  5. https://docs.mistral.ai/inference/embeddings/text_embeddings
  6. https://docs.mistral.ai/models/mistral-embed-23-12
  7. https://docs.voyageai.com/docs/embeddings
  8. https://docs.cohere.com/docs/cohere-embed
  9. https://aistudio.google.com/docs/embeddings
  10. https://developers.openai.com/api/docs/guides/embeddings

À lire aussi