Intermédiaire 14 minEmbeddings

Les meilleurs modèles d'embeddings FR

Réponse directe

Pour du français, BGE-M3 est le point de départ le plus sûr : multilingue, 8 192 tokens de contexte, licence MIT, disponible dans Ollama. Qwen3-Embedding et EmbeddingGemma sont les alternatives récentes à tester. Les modèles centrés sur l'anglais (nomic-embed-text, mxbai-embed-large, all-MiniLM) sont à éviter pour du français. Le choix final se valide sur vos propres documents.

Un modèle d'embedding transforme chaque texte en vecteur : c'est lui qui décide que « CDD » et « contrat à durée déterminée » sont voisins. Pour le français, le benchmark MTEB-French mesure 22 points de retrieval d'écart entre BGE-M3 et all-MiniLM-L12-v2. Cette page classe les modèles ouverts utilisables en local, cite les mesures publiées et leurs limites, puis traite ce qui coûte cher en production : préfixes, troncature, dimensions, stockage, réindexation.

Par Mohamed Meguedmi·Màj 2026-09-29·Testé sur Windows, macOS, Linux

#Ce qu'est un modèle d'embedding, et pourquoi le français le complique

Un modèle d'embedding est un réseau de neurones qui convertit un texte (une phrase, un paragraphe, un chunk) en un vecteur de nombres, de 384 à 4 096 dimensions selon les modèles. Deux textes de sens proche donnent des vecteurs proches, que l'on mesure le plus souvent par la similarité cosinus. C'est ce qui permet à un RAG de retrouver un passage sur le « contrat à durée déterminée » quand l'utilisateur écrit « CDD », sans aucun mot en commun. Le même modèle doit encoder les questions et les documents, comme le rappelle la documentation d'Ollama ; changer de modèle oblige donc à réindexer tout le corpus. Pour choisir, trois questions suffisent : le modèle a-t-il été entraîné sur le français, son contexte couvre-t-il vos chunks, sa licence autorise-t-elle votre usage ?

Le français ajoute ses propres difficultés : accents, élisions (« l'employeur »), sigles juridiques, anglicismes techniques mêlés au texte. L'écart entre modèles est net. Dans le benchmark MTEB-French, le score de retrieval va de 0,43 pour all-MiniLM-L12-v2 à 0,65 pour BGE-M3, soit 22 points d'écart sur le même jeu de questions.

i
Dimension ≠ qualité
Un vecteur plus long n'est pas plus précis par nature. Sur le classement multilingue MTEB, EmbeddingGemma passe de 61,15 à 60,71 en réduisant ses vecteurs de 768 à 512 dimensions, et Google indique aussi des tailles de 256 et 128 dimensions. Le stockage économisé est proportionnel, la perte de qualité ne l'est pas.

#Les cinq critères qui départagent vraiment les modèles

Le kit RAG Local

Tes documents, ton IA : un RAG local fiable sur tes PDF, notes et mails — sans rien envoyer dans le cloud.

  • Espace en ligne à vie
  • PDF + fichiers
  • Mises à jour à vie
Langues d'entraînement
BGE-M3 et Qwen3-Embedding annoncent plus de 100 langues, multilingual-e5-large 94. Les fiches de nomic-embed-text-v1.5 et de mxbai-embed-large-v1, très téléchargés dans Ollama, sont étiquetées English.
Contexte maximal
512 tokens pour multilingual-e5-large, Solon et mxbai-embed-large ; 2 048 pour EmbeddingGemma ; 8 192 pour BGE-M3 ; 32 000 pour Qwen3-Embedding et Granite R2. Un chunk plus long est tronqué, pas refusé.
Dimensions et stockage
De 384 à 4 096 dimensions, soit 4 octets par dimension et par vecteur en float32 (calcul plus bas).
Licence
MIT pour BGE-M3, multilingual-e5-large et Solon ; Apache 2.0 pour Qwen3-Embedding, Granite R2, nomic et mxbai ; conditions Gemma pour EmbeddingGemma ; CC BY-NC 4.0 (non commercial) pour jina-clip-v2.
Préfixes et instructions
Certains modèles exigent un préfixe devant chaque texte (« query: » et « passage: » pour E5, même en français). L'oublier dégrade le retrieval sans erreur.

#Le classement 2026 pour le français : neuf modèles comparés

Ce classement est éditorial, pas un test maison : il croise couverture du français, benchmarks publiés et disponibilité en local. Les poids viennent de la bibliothèque Ollama quand le modèle y figure, sinon du float32 estimé par l'étude MTEB-French.

Modèles d'embedding pour le français : caractéristiques publiées par les éditeurs
ModèleDimensions / contexteLicencePoidsCe que disent les sources sur le français
BGE-M3 (BAAI)1 024 / 8 192MIT1,2 Go (Ollama)Retrieval MTEB-French 0,65. Dense, sparse et multi-vecteurs. Point de départ recommandé.
Qwen3-Embedding 0,6B / 4B / 8B1 024 / 2 560 / 4 096 ; 32 000Apache 2.0639 Mo / 2,5 Go / 4,7 Go (Ollama)Plus de 100 langues. MTEB multilingue selon Qwen : 64,33 / 69,45 / 70,58.
EmbeddingGemma 300M (Google)768 (512, 256, 128) / 2 048Gemma622 Mo (Ollama)Plus de 100 langues. MTEB multilingue v2 : 61,15 selon Google.
multilingual-e5-large1 024 / 512MIT2,24 Go (float32)Retrieval MTEB-French 0,59. Préfixes obligatoires.
Solon-embeddings-large-0.11 024 / 512MIT2,24 Go (float32)Modèle français publié par Ordalie Technologies. Retrieval MTEB-French 0,63.
Granite Embedding 311M Multilingual R2 (IBM)768 / 32 768Apache 2.0311 M paramètresFrançais parmi les 52 langues renforcées. 65,2 en retrieval MTEB multilingue selon IBM ; pas de mesure française indépendante consultée.
nomic-embed-text v1.5768 / 8 192 (2 048 sous Ollama)Apache 2.0274 Mo (Ollama)Fiche étiquetée anglais. À réserver aux corpus anglais.
mxbai-embed-large-v1contexte 512Apache 2.0670 Mo (Ollama)Fiche étiquetée anglais. À réserver aux corpus anglais.
all-MiniLM-L12-v2384Apache 2.033 M paramètresRetrieval MTEB-French 0,43. Prototype CPU uniquement.

BGE-M3 reste le meilleur défaut : son retrieval français est publié, son contexte de 8 192 tokens évite la plupart des découpages forcés, et il fournit aussi les poids lexicaux utiles à une recherche hybride. Qwen3-Embedding est le candidat quand une carte graphique est disponible : sa version 8B était en tête du classement multilingue MTEB à sa sortie, le 5 juin 2025, selon Qwen, mais ses 4 096 dimensions pèsent sur le stockage. EmbeddingGemma vise les machines modestes.

Solon, souvent présenté comme le spécialiste du français juridique et administratif, ne l'emporte sur aucun des trois jeux de retrieval de l'étude MTEB-French : il égale BGE-M3 sur la convention collective Syntec et reste derrière sur les articles de loi (BSARD) et les questions scolaires (Alloprof).

#Ce que disent les benchmarks français, et ce qu'ils ne disent pas

La référence publiée est MTEB-French (Ciancone et al., mai 2024) : 18 jeux de données, 8 catégories de tâches, 51 modèles comparés. Les auteurs concluent que les grands modèles multilingues pré-entraînés sur la similarité de phrases se comportent exceptionnellement bien. Voici le retrieval (NDCG@10) sur trois jeux : articles de loi en français (BSARD), convention collective Syntec, questions scolaires d'Alloprof.

MTEB-French : retrieval (NDCG@10) par jeu de données, étude de 2024
ModèleRetrieval moyenDroit (BSARD)Convention SyntecAlloprof
text-embedding-3-large (API OpenAI)0,730,730,870,60
mistral-embed (API Mistral)0,680,680,790,57
BGE-M30,650,600,850,49
Solon-embeddings-large-0.10,630,580,850,47
multilingual-e5-large0,590,590,810,38
multilingual-e5-small0,520,520,760,27
paraphrase-multilingual-MiniLM-L12-v20,440,380,660,27
all-MiniLM-L12-v20,430,340,610,33

Trois limites empêchent d'en faire un classement définitif. L'étude date de 2024 : elle ne contient ni Qwen3-Embedding (juin 2025), ni EmbeddingGemma (septembre 2025), ni Granite R2, et aucune mesure française comparable de ces modèles n'a été consultée pour cette page. Les corpus (articles de loi, convention collective, questions scolaires) ne ressemblent pas forcément aux vôtres. Enfin, les scores multilingues publiés par les éditeurs sont auto-déclarés et mêlent toutes les langues.

!
Aucun de ces chiffres n'est le vôtre
Ces tableaux viennent d'une étude publiée et des fiches des éditeurs, pas d'un test maison. Ils indiquent où regarder, pas quel modèle gagnera chez vous. Pour trancher entre deux modèles proches, la méthode de la dernière section utilise vos propres données.

#Quel modèle pour quel cas : tableau de décision

Choisir un modèle d'embedding pour du français
Votre situationModèle à tester en premierPourquoiPoint de vigilance
Corpus français ou français + anglais, machine correcteBGE-M3Retrieval français de 0,65, au niveau des meilleurs modèles ouverts de l'étude1,2 Go dans Ollama ; aucun préfixe
Juridique, administratif, RHBGE-M3, puis Solon en comparaisonBGE-M3 égale ou dépasse Solon sur les trois jeux français de l'étudeUn modèle sans jeu de test juridique interne reste un pari
Machine modeste ou CPU seulEmbeddingGemma 300M, ou multilingual-e5-small622 Mo dans Ollama ; conçu par Google pour portables et mobilesContexte de 2 048 tokens : chunks courts
Carte graphique disponible, qualité maximaleQwen3-Embedding-4B ou 8B32 000 tokens, dimensions ajustables, plus de 100 langues2 560 et 4 096 dimensions : stockage et limites d'index
Chunks longs, documents structurésBGE-M3, Qwen3-Embedding ou Granite R28 192 à 32 768 tokens de contexteUn chunk très long dilue le sens
Usage commercial, audit de licenceBGE-M3, multilingual-e5-large, Solon, Qwen3-Embedding, Granite R2MIT ou Apache 2.0Relire les conditions Gemma ; jina-clip-v2 est non commercial

#Embedding d'entreprise sur mesure : modèle ouvert, fine-tuning ou API

« Sur mesure » ne veut pas dire entraîner son propre modèle dès le départ. L'ordre qui évite de gaspiller du temps : un modèle ouvert générique, un chunking soigné, une recherche hybride et un reranker ; puis une mesure du recall sur vos vraies questions ; puis, seulement si les échecs persistent et tiennent au vocabulaire métier (références internes, sigles maison), un fine-tuning.

Philipp Schmid a affiné en juin 2024 le modèle bge-base-en-v1.5 sur 6 300 paires question-passage tirées de documents financiers : le score de retrieval a gagné environ 7,4 % sur son jeu de test, avec un entraînement de trois minutes sur une carte graphique grand public. C'est un cas anglais, sur un seul corpus, avec des paires générées par un LLM : un ordre de grandeur, pas une promesse. BAAI documente aussi l'affinage de BGE-M3.

Trois façons d'obtenir un embedding adapté à une entreprise
OptionQuand la choisirLimites
Modèle ouvert générique en local (BGE-M3, Qwen3-Embedding)Point de départ par défaut ; les textes restent sur votre réseau ; licence MIT ou ApacheVocabulaire métier non appris ; à évaluer sur vos documents
Fine-tuning d'un modèle ouvertRecall bloqué malgré hybride et reranker ; plusieurs milliers de paires question-passageCorpus à réencoder ; modèle à versionner comme un logiciel ; risque de surajustement
API d'embeddings (Mistral, OpenAI)Pas de GPU, volume modéré ; text-embedding-3-large et mistral-embed sont en tête de l'étude MTEB-French de 2024Les textes quittent votre réseau ; le modèle peut changer côté fournisseur ; coût récurrent
→
Le bon test avant de fine-tuner
Si le bon passage figure dans les vingt premiers résultats mais pas dans les cinq premiers, c'est le cas d'usage d'un reranker : BAAI recommande d'ailleurs recherche hybride puis reranking. Le fine-tuning d'embeddings vise les passages qui n'apparaissent jamais dans les résultats.

#Embedding multimodal : chercher dans des images et des pages de documents

Un modèle d'embedding multimodal place texte et images dans le même espace vectoriel. On peut alors retrouver une photo à partir d'une phrase, ou une page de PDF scannée sans passer par l'OCR. Les modèles de la bibliothèque Ollama consultés pour cette page (BGE-M3, Qwen3-Embedding, EmbeddingGemma, nomic-embed-text, mxbai-embed-large) acceptent uniquement du texte : les modèles multimodaux ci-dessous s'utilisent via Hugging Face (Sentence-Transformers ou Transformers).

Modèles d'embedding multimodaux ouverts
ModèleEntréesLicenceÀ savoir
Qwen3-VL-Embedding 2B / 8BTexte, images, captures d'écran, vidéoApache 2.032 000 tokens ; 2 048 et 4 096 dimensions ; dimensions ajustables
jina-clip-v2Texte et images ; 94 languesCC BY-NC 4.0Non commercial : à écarter pour un produit ou un service payant sans accord de l'éditeur
ColPali v1.3Pages de documents en image, multi-vecteursMIT (fiche)Fiche étiquetée anglais ; des vecteurs multiples par page changent le stockage

Un modèle multimodal n'est pas meilleur sur du texte pur. Dans les tableaux publiés par Qwen, Qwen3-VL-Embedding-2B obtient 63,87 sur MTEB multilingue, contre 64,33 pour Qwen3-Embedding-0.6B, un modèle texte plus de trois fois plus petit. Pour des PDF dont le contenu utile est du texte, convertissez-les en texte propre (Docling ou un OCR) et gardez un embedding texte. Réservez le multimodal aux corpus visuels : schémas, plans, captures, diapositives.

#Gérer ses embeddings : préfixes, troncature, stockage et réindexation

Un RAG se dégrade souvent dans ces détails plus que dans le choix du modèle. Premier détail : chaque famille de modèles attend un format d'entrée différent pour les questions et pour les documents.

Préfixes attendus par modèle (questions et documents)
ModèleDevant la questionDevant le document
BGE-M3RienRien
multilingual-e5-largequery: passage: (obligatoire, même en français)
Solon-embeddings-large-0.1query : Rien
nomic-embed-text v1.5search_query: search_document:
mxbai-embed-large-v1Represent this sentence for searching relevant passages: Rien
Qwen3-EmbeddingInstruct: {tâche en une phrase}, saut de ligne, Query: {question}Rien
EmbeddingGemmatask: search result | query: {question}title: {titre ou none} | text: {contenu}

Avec Ollama, l'exemple officiel de mxbai-embed-large place le préfixe directement dans le texte envoyé : ajoutez-le vous-même dans votre code. Qwen indique que les instructions apportent en général 1 à 5 % de mieux, et recommande de les rédiger en anglais même pour un corpus multilingue.

#Le piège d'Ollama : la troncature silencieuse

Le point d'accès /api/embed d'Ollama a un paramètre truncate dont la valeur par défaut est true : une entrée qui dépasse la fenêtre de contexte du modèle est coupée sans erreur. Avec mxbai-embed-large (512 tokens dans Ollama), un chunk de 700 tokens est indexé sans sa fin, et personne ne le voit. Le contexte d'Ollama peut aussi différer de la fiche d'origine : 2K pour nomic-embed-text, contre 8 192 annoncés par Nomic. Passez truncate à false pendant les tests : une erreur vaut mieux qu'un texte tronqué.

#Dimensions, stockage et limites d'index

Le stockage se calcule simplement : nombre de chunks × dimensions × 4 octets en float32, hors index. Pour un million de chunks, les vecteurs seuls occupent :

Un million de chunks en float32, vecteurs seuls (calcul)
DimensionsExemple de modèleStockage
256EmbeddingGemma ou Qwen3 réduits (Matryoshka)1,0 Go
384all-MiniLM-L12-v21,5 Go
768EmbeddingGemma, Granite R2, nomic3,1 Go
1 024BGE-M3, multilingual-e5-large, Qwen3-0.6B4,1 Go
2 560Qwen3-Embedding-4B10,2 Go
4 096Qwen3-Embedding-8B16,4 Go

Les bases imposent aussi des plafonds. Avec pgvector, un index porte sur des vecteurs de 2 000 dimensions au maximum, ou 4 000 en demi-précision (halfvec) : les 4 096 dimensions de Qwen3-Embedding-8B dépassent même cette limite. La parade est de tronquer les vecteurs, ce que permettent les modèles entraînés en Matryoshka (Qwen3-Embedding, EmbeddingGemma, nomic v1.5), puis de les renormaliser, comme le précise Google pour EmbeddingGemma. L'API /api/embed d'Ollama accepte un paramètre dimensions, à réserver à ces modèles.

#Versionner et réindexer

Métadonnées à conserver
Nom exact du modèle, révision, dimension, gabarit de préfixe, paramètres de chunking, date d'indexation. Sans elles, personne ne sait pourquoi le retrieval a changé.
Changement de modèle
Réencodez tout le corpus dans une nouvelle collection, évaluez-la, puis basculez. Ne mélangez jamais deux modèles dans la même collection.
Normalisation
Ollama renvoie des vecteurs normalisés en L2 : utilisez la même métrique (cosinus ou produit scalaire) partout.

#Utiliser un modèle en pratique et le tester sur vos documents

Ollama : télécharger BGE-M3 et générer un embedding
ollama pull bge-m3

curl http://localhost:11434/api/embed -d '{
  "model": "bge-m3",
  "input": "Le contrat débute le 1er mai."
}'
Ollama en Python : deux textes proches, un texte éloigné
import numpy as np
import ollama

textes = [
    "Le contrat débute le 1er mai.",
    "Date de début : 01/05.",
    "La voiture est rouge.",
]
vecteurs = np.array(ollama.embed(model="bge-m3", input=textes)["embeddings"])

# Les vecteurs d'Ollama sont normalisés : le produit scalaire vaut le cosinus
print(vecteurs[0] @ vecteurs[1])
print(vecteurs[0] @ vecteurs[2])

Ne retenez que l'ordre des deux scores : le premier doit dépasser nettement le second. Pour comparer sérieusement deux ou trois candidats, la procédure suivante remplace tous les classements publiés.

  1. 01
    Constituer un jeu de test réel
    Rassemblez 50 à 100 questions posées par de vrais utilisateurs (support, tickets, questions fréquentes) et notez pour chacune le chunk qui contient la réponse. Des questions inventées par un LLM flattent les résultats.
  2. 02
    Encoder avec chaque modèle candidat
    Encodez les chunks puis les questions en respectant le tableau des préfixes, la même longueur de chunk et la même dimension de stockage pour tous les candidats.
  3. 03
    Mesurer le recall@5
    Pour chaque question, vérifiez si le bon chunk figure parmi les cinq premiers résultats. Le script ci-dessous fait ce calcul.
  4. 04
    Trancher avec un critère de coût
    Gardez le modèle le moins lourd dont le recall@5 reste à un ou deux points du meilleur : un modèle huit fois plus gros se paie en stockage et en temps à chaque réindexation.
Sentence-Transformers : recall@5 sur vos données
import numpy as np
from sentence_transformers import SentenceTransformer

modele = SentenceTransformer("BAAI/bge-m3")

chunks = [...]      # vos chunks (liste de textes)
questions = [...]   # 50 à 100 vraies questions
cible = [...]       # pour chaque question, l'index du bon chunk

C = modele.encode(chunks, normalize_embeddings=True)
Q = modele.encode(questions, normalize_embeddings=True)

top5 = np.argsort(-(Q @ C.T), axis=1)[:, :5]
recall5 = np.mean([cible[i] in top5[i] for i in range(len(questions))])
print(f"recall@5 = {recall5:.0%}")
→
Persistez les vecteurs
Réencoder tout le corpus à chaque lancement est le poste le plus lent d'un RAG débutant. Stockez les vecteurs dans une base (Chroma, Qdrant, pgvector, FAISS) et ne réencodez que les nouveaux chunks.
FAQ
Quel est le meilleur modèle d'embedding pour le français ?+
BGE-M3 est le meilleur point de départ : son retrieval français est publié (0,65 dans MTEB-French), il gère 8 192 tokens, sa licence est MIT et Ollama le propose. Qwen3-Embedding et EmbeddingGemma sont plus récents et absents de cette étude. Testez-les sur cinquante questions de votre corpus avant de trancher.
Peut-on utiliser nomic-embed-text ou mxbai-embed-large en français ?+
Leurs fiches Hugging Face sont étiquetées anglais, et ils sont absents de l'étude MTEB-French. Ils fonctionnent techniquement sur du français, mais rien ne garantit la qualité. Dans Ollama, nomic-embed-text n'expose que 2 048 tokens de contexte, contre 8 192 annoncés par Nomic. Entre les deux, nomic offre plus de contexte (2 048 tokens dans Ollama contre 512) ; mxbai n'exige un préfixe que pour les requêtes. Préférez BGE-M3.
Existe-t-il un modèle bge-m4 ?+
Le dépôt officiel FlagEmbedding ne mentionne aucun bge-m4. Le modèle multilingue de la famille s'appelle BGE-M3, et le M3 désigne trois qualités : multi-fonctions (dense, sparse, multi-vecteurs), multilingue (plus de 100 langues) et multi-granularité (jusqu'à 8 192 tokens). Si un site propose un bge-m4, vérifiez son origine avant de télécharger.
Faut-il réindexer quand on change de modèle d'embedding ?+
Oui, entièrement. Les vecteurs de deux modèles vivent dans des espaces différents et n'ont souvent même pas la même dimension. Créez une nouvelle collection, réencodez tous les chunks avec le nouveau modèle et son gabarit de préfixes, mesurez le recall, puis basculez. Ne mélangez jamais deux modèles dans une même collection.
Un modèle d'embedding multimodal remplace-t-il un modèle texte ?+
Non, sauf si le contenu est visuel. Sur les tableaux de Qwen, Qwen3-VL-Embedding-2B (63,87) reste sous Qwen3-Embedding-0.6B (64,33) en texte pur. Pour des PDF textuels, convertissez en texte et gardez un embedding texte. Le multimodal sert aux schémas, captures et diapositives ; attention, jina-clip-v2 est non commercial.
Faut-il un embedding d'entreprise sur mesure ?+
Rarement au départ. Un modèle ouvert générique, un chunking soigné, une recherche hybride et un reranker règlent la plupart des cas. Le fine-tuning se justifie quand le recall reste bloqué à cause du vocabulaire métier et que vous disposez de plusieurs milliers de paires question-passage, avec réindexation complète ensuite.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.