Embeddings et bases vectorielles expliqués simplement (test)
Comprendre les embeddings et les bases vectorielles sans maths. Test comparatif de bge-m3 et nomic-embed-text en local sur des textes juridiques réels.
👁 125 lectures
Un embedding transforme un texte en une liste de nombres (un vecteur), au sein de laquelle des contenus au sens proche recoivent des valeurs similaires. Une base de donnees vectorielle stocke ces vecteurs et identifie tres vite ceux qui se rapprochent le plus d une requete. C est le moteur de la recherche semantique, du RAG et de la memoire des agents d IA. Voici une explication sans jargon mathematique, completee par un test de deux modeles d embeddings gratuits sur des phrases et des textes de loi : l un a trouve la bonne reponse dans 8 cas sur 10, l autre dans 4 cas sur 10. Ce dossier s inscrit dans le parcours Agents IA de zero.
Situation au 4 octobre 2026
- J ai teste deux modeles executes localement avec Ollama 0.35.1 sur une carte RTX 4090 :
bge-m3(licence MIT) etnomic-embed-text(licence Apache 2.0). Tous deux autorisent un usage commercial. - Protocole : comparaison de 5 phrases et analyse de 10 questions posees sur 920 extraits issus de trois lois polonaises (test realise sur des documents en polonais).
- Cout : 0 EUR, l ensemble des calculs ayant tourne sur ma propre machine.
- Le code source de ce banc d essai se trouve dans l archive starter agents IA (fichier
04_rag.py).
Qu est-ce qu un embedding en termes simples
Imaginez une carte geographique ou chaque phrase represente un point precis. Les phrases concernant le depot de garantie d un logement se situent cote a cote, les phrases sur les conges payes un peu plus loin, et celles sur la meteo a l autre extremite du plan. L embedding correspond aux coordonnees de la phrase sur cette carte. La seule difference est que la carte ne possede pas deux dimensions, mais plusieurs centaines ou plus d un millier.
Voici a quoi ressemble le debut de l embedding obtenu avec le modele bge-m3 pour la phrase (traduite du polonais teste) « A combien s eleve la caution pour la location d un appartement ? » :
[-0.0375, 0.0463, -0.0196, -0.0042, 0.0015, ... ] (au total 1024 nombres)
Pris isolement, ces chiffres n ont aucun sens. Ce qui compte, c est la distance entre les vecteurs. On utilise le plus souvent la similarite cosinus : une valeur de 1 correspond a une direction identique (sens equivalent), tandis qu une valeur proche de 0 indique une absence de relation.
Test comparatif sur cinq phrases
J ai compare la phrase « A combien s eleve la caution pour la location d un appartement ? » a quatre autres enonces (l experience d origine a ete menee sur des phrases polonaises). Un modele performant doit considerer comme la plus proche la phrase partageant le meme sens, meme si la formulation differe ou si la langue change.
| Phrase comparee (traduite du test) | bge-m3 | nomic-embed-text |
|---|---|---|
| How much is the rental deposit for a flat? (meme phrase en anglais) | 0,736 | 0,416 |
| Quel depot verse le locataire d un logement ? (meme sens, autres mots) | 0,678 | 0,665 |
| Consigne pour les bouteilles consignees en magasin (meme mot pour caution/consigne en polonais, sens different) | 0,569 | 0,713 |
| A combien de jours de conges payes ai-je droit par an ? (sujet sans rapport) | 0,442 | 0,755 |
Le modele bge-m3 a hierarchise les phrases exactement comme un humain l aurait fait : la traduction anglaise arrive en tete, suivie de la paraphrase, puis de la consigne de bouteille, et enfin les conges payes en dernier. A l inverse, nomic-embed-text a juge la question des conges plus proche de celle du logement que la traduction anglaise. Ce second modele a ete entraine principalement sur des corpus anglophones : sur des textes non anglophones comme le polonais, il capte davantage la structure syntaxique formelle (« A combien s eleve… » / « A combien de jours… ») que la portee semantique reelle.
Test de recherche sur des textes de loi
Dans l article RAG pas a pas, j ai concu un moteur de recherche indexant le Code du travail polonais, la loi sur la protection des droits des locataires et celle sur les droits des patients (soit 920 fragments au total). J ai soumis 10 questions en langage courant pour observer a quelle position ressortait le texte juridique exact correspondant a la requete.
| Critere evalue | bge-m3 | nomic-embed-text |
|---|---|---|
| Article exact en 1re position | 5 sur 10 | 2 sur 10 |
| Article exact dans le top 5 | 8 sur 10 | 4 sur 10 |
| Dimensions du vecteur | 1024 | 768 |
| Longueur maximale du texte (fenetre de contexte dans Ollama) | 8192 tokens | 2048 tokens |
| Memoire VRAM occupee apres chargement | 664 Mo | 323 Mo |
| Taille de l index pour 920 fragments | 8,5 Mo | 7,5 Mo |
| Duree d indexation des 920 fragments* | 155 s | 105 s |
| Ecart de similarite (question hors sujet vs reponse pertinente) | 0,43 vs 0,64-0,72 | 0,69 vs 0,69-0,77 |
| Licence | MIT | Apache 2.0 |
* La carte graphique etait sollicitee par une autre tache pendant la mesure ; ces temps restent donc indicatifs. Sur un GPU au repos, les deux modeles se montrent plus rapides.
La derniere ligne du tableau est determinante. Avec bge-m3, une question piege sur la limitation de vitesse sur autoroute (sujet totalement absent des textes de loi indexees) a obtenu un score de similarite maximal de 0,43, ce qui est nettement inferieur aux fragments valides. On peut donc instaurer un seuil minimal de confiance pour repondre « je ne sais pas » sans solliciter inutilement le grand modele de langage. En revanche, avec nomic-embed-text, tous les scores gravitent autour de 0,7, rendant tout filtrage par seuil impossible.
Qu est-ce qu une base de donnees vectorielle
Une base vectorielle sert a stocker les embeddings associes a leur texte source et a leurs metadonnees (nom du fichier, numero d article, date), tout en etant capable de repasser rapidement en revue les vecteurs les plus proches. Sur des volumes restreints, un simple tableau numpy suffit amplement : mes 920 vecteurs n occupent que 8,5 Mo, et les parcourir revient a une unique multiplication matricielle. Une base specialisee devient indispensable des lors que :
- vous manipulez des centaines de milliers de fragments et que le calcul brut commence a ralentir vos reponses ;
- vous devez filtrer par metadonnees (« uniquement le Code du travail », « seulement les pieces de 2026 ») ;
- votre base documentaire s enrichit en continu et vous refusez de recalculer l integralite de l index a chaque mise a jour ;
- de nombreux utilisateurs effectuent des requetes en meme temps.
| Solution | Environnement | Profil d utilisation |
|---|---|---|
| numpy (fichier .npz) | directement dans votre script | apprentissage, prototypes jusqu a quelques dizaines de milliers d extraits |
| Chroma | en local, fichier disque ou serveur dedie | premiers deploiements, maquettes |
| pgvector (PostgreSQL) | votre base PostgreSQL existante | vous exploitez deja PostgreSQL et souhaitez centraliser vos donnees |
| Qdrant, Weaviate, Milvus | serveur autonome ou cloud | larges volumes, forte volumetrie d utilisateurs |
J ai constate que Chroma 1.5.9 produit sur mes donnees des scores rigoureusement identiques a numpy. Une base vectorielle n ameliore pas la justesse du ciblage : elle ameliore l ergonomie et le passage a l echelle. La precision finale repose avant tout sur la qualite du modele d embeddings et sur votre strategie de decoupage du texte (chunking).
Comment choisir un modele d embeddings performant
- Privilegiez un modele multilingue. Parmi les solutions gratuites et autonomes en local,
bge-m3se comporte de maniere tres solide en dehors de l anglais. - Construisez un echantillon d evaluation minimal : formulez 10 a 20 questions types en connaissant d avance l extrait documentaire exact attendu. Sans cela, le choix d un moteur releve de la simple conjecture.
- Evaluez la presence de la bonne reponse dans le top 5, car c est l intervalle de contexte classiquement injecte dans un pipeline RAG.
- Observez la dispersion des scores face a des requetes hors sujet. Un ecart marque permet de parametrer une regle de garde « information non trouvee ».
- Prenez garde aux prefixes :
nomic-embed-textrequiert d inserersearch_query:avant une requete etsearch_document:avant un passage de document. Sans ces balises, les resultats se degradent significativement.
Les embeddings sont egalement accessibles sous forme d API hebergees (OpenAI, Google, Mistral, Cohere). Vous etes alors facture a la consommation de tokens et vous confiez vos donnees au fournisseur distant. Pour calibrer vos volumes et les depenses liees, consultez notre guide sur les tokens.
Les applications des embeddings en dehors du RAG
- Moteur de recherche pour e-commerce ou documentation interne, apte a comprendre que « chaussures de pluie » correspond aux references « bottes impermeables ».
- Deduplication intelligente de tickets de support client, de fils de discussion ou de publications.
- Regroupement thematique (clustering) d avis de clients par motifs recurrents sans intervention manuelle de labellisation.
- Memoire a long terme des agents autonomes : le systeme sauvegarde ses observations sous forme vectorielle pour retrouver les contextes similaires lors d operations ulterieures. Consultez pour cela notre panorama 12 exemples concrets d agents IA.
Foire aux questions
Comment resumer la definition d un embedding en une phrase ?
C est une suite ordonnee de nombres qui encode le sens profond d un texte pour permettre a un ordinateur d en comparer la signification reelle et non les simples mots employes.
Quelle est la difference entre un token et un embedding ?
Un token est un morceau de chaine de caracteres (souvent une fraction de mot) decoupe lors de l analyse initiale. L embedding est le vecteur numerique global decrivant le sens de l ensemble de l extrait. Le modele traite d abord les tokens pour en deduire un vecteur unique.
L execution d embeddings necessite-t-elle obligatoirement une carte graphique ?
Non, les architectures compactes tournent sans difficulte sur un processeur standard, simplement avec un debit moindre. Le modele bge-m3 requiert environ 664 Mo de VRAM chez moi, ce qui permet de le faire fonctionner sur quasiment n importe quelle carte recente.
Est-il possible d associer des embeddings generes par des modeles distincts ?
Non. Chaque algorithme cree son propre espace de representation. La requete utilisateur doit impativement etre vectorisee par le meme modele que celui ayant servi a indexer la base documentaire. Remplacer un modele impose de recalculer la totalite des index.
Vaut-il mieux une base vectorielle ou un SGBD conventionnel ?
Une base relationnelle classique filtre par correspondance exacte sur des mots-cles ou des valeurs numeriques, alors qu une base vectorielle cherche par proximite conceptuelle. L approche la plus robuste consiste souvent a fusionner les deux mondes via la recherche hybride : le texte brut intercepte les noms propres ou identifiants stricts, pendant que le vecteur capte les reformulations.
Quel est le cout de traitement des embeddings ?
En local, cela n occasionne que le cout de l electricite consommee. Via des API cloud, c est l un des usages les plus economiques du marche de l IA, se comptant regulierement en quelques centimes d euro par tranche d un million de tokens. Verifiez toujours les grilles tarifaires officielles aupres des plateformes concernees.
Google · Vos sourcesPromptif plus haut dans Google - en un clicAjouter aux sources préférées →Sources et verification
- Fiches de bge-m3 et nomic-embed-text au sein du catalogue Ollama (verifiees le 4 octobre 2026).
- Documentation officielle Chroma.
- Environnement des tests : configuration personnelle (carte RTX 4090, Windows 11, version Ollama 0.35.1), le 4 octobre 2026 entre 14h30 et 15h00.


