Modèle / jeu de données
FlagOpen/FlagEmbedding avatar
FlagOpen/FlagEmbedding

FlagEmbedding : la boîte à outils BGE pour la recherche et le RAG

Retrieval and Retrieval-augmented LLMs

12 162 étoiles915 forksPythonMIT

En bref

De quoi s’agit-il ?
BGE rassemble embeddings, rerankers et modèles multimodaux sous licence MIT. Le dépôt couvre un spectre large, du dense retrieval à la recherche visuelle, mais chaque brique a ses propres contraintes de déploiement.
À qui s’adresse-t-il ?
FlagEmbedding convient aux équipes qui veulent une chaîne retrieval complète sous licence MIT, du dense retrieval au reranking et à la recherche multimodale, sans dépendre d'un service propriétaire. Il ne convient pas à qui cherche un index clé en main : le dépôt fournit des modèles et du code d'inférence, pas une base vectorielle ni une couche de service.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 23 jours.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Ce que BGE résout, et pour qui

Le dépôt s'adresse à des équipes qui construisent un pipeline de recherche documentaire ou de génération augmentée par récupération et qui doivent choisir un modèle d'embedding, un reranker et éventuellement un encodeur multimodal. Le problème n'est pas l'absence de modèles : c'est leur dispersion. La page d'accueil présente BGE comme un « One-Stop Retrieval Toolkit For Search and RAG », c'est-à-dire un point d'entrée unique vers une famille de modèles couvrant plusieurs besoins. Le public visé est technique : développeurs Python, ingénieurs recherche d'information, équipes RAG. Le dépôt ne propose pas d'interface graphique ni de service hébergé, et la documentation renvoie vers Hugging Face pour les poids. Un ingénieur qui cherche un produit clé en main se trompe de dépôt. Un ingénieur qui veut assembler sa propre chaîne, avec des modèles téléchargeables et un code d'inférence lisible, y trouve une base cohérente.

Une famille de modèles plutôt qu'un seul encodeur

La liste des modèles couvre des besoins distincts. BGE-M3, publié le 30 janvier 2024, est présenté comme le premier modèle d'embedding supportant trois méthodes de récupération : dense, lexical et multi-vecteurs (ColBERT). Le README précise que M3 signifie Multi-linguality (plus de 100 langues), Multi-granularities (entrée jusqu'à 8192 tokens) et Multi-Functionality. Cette unification a une conséquence pratique : un même modèle peut servir plusieurs stratégies de recherche, ce qui évite de maintenir deux encodeurs séparés. À côté, bge-en-icl intègre l'apprentissage en contexte : en fournissant des exemples question-réponse liés à la tâche, le modèle encode des requêtes sémantiquement plus riches. bge-multilingual-gemma2, basé sur gemma-2-9b, cible les usages multilingues. Ces modèles n'ont pas le même coût d'inférence, et le dépôt ne masque pas cette diversité derrière une abstraction unique. C'est un choix honnête, mais il report sur l'utilisateur la décision de quel modèle charger.

Le reranking comme second étage

Le dépôt ne se limite pas aux embeddings. Le 18 mars 2024, des rerankers construits sur des backbones M3 et LLM (GEMMA et MiniCPM) ont été publiés, avec un support multilingue et des entrées plus longues. Le README mentionne des améliorations de classement sur BEIR, C-MTEB/Retrieval, MIRACL et LlamaIndex Evaluation. Un reranker intervient après une première récupération par vecteurs : il reclasse un petit ensemble de candidats avec un modèle plus coûteux mais plus précis. Cette architecture à deux étages est courante en recherche d'information, et sa présence dans le même dépôt évite d'aller chercher une brique ailleurs. Un modèle plus léger existe aussi : bge-reranker-v2.5-gemma2-lightweight, décrit comme supportant la compression de tokens et des opérations allégées par couches, ce qui permet selon le README d'économiser des ressources tout en conservant de bonnes performances. Le compromis latence/précision reste à évaluer sur vos données, le dépôt ne fournissant pas de chiffres applicables à tous les corpus.

Installation et premiers appels

Le README structure l'entrée dans le projet autour de trois ancres : Installation, Quick Start et Model List. L'installation se fait via pip, et le code d'inférence s'appuie sur les bibliothèques Hugging Face. Concrètement, on charge un modèle de la collection BAAI sur Hugging Face, puis on appelle l'encodeur sur des textes pour obtenir des vecteurs. Le point d'attention est le préfixe d'instruction : selon les modèles de la famille, une requête doit être préfixée différemment d'un document, et le README ainsi que la documentation bge-model.com précisent ces conventions. Les ignorer dégrade la similarité sans provoquer d'erreur visible, ce qui rend le problème difficile à diagnostiquer. Pour BGE-M3, l'entrée peut atteindre 8192 tokens, ce qui a un coût direct sur la mémoire et le temps d'indexation. Le dépôt fournit aussi des tutoriels, maintenus depuis le 2 septembre 2024 selon le README, et une documentation centralisée hébergée sur bge-model.com depuis le 5 décembre 2024.

Multimodal et recherche visuelle

BGE-VL, annoncé le 6 mars 2025, étend la famille au multimodal. Le README le décrit comme un ensemble de modèles d'embedding multimodaux destinés à des applications de recherche visuelle variées : texte vers image, image vers texte, image et prompt vers image, texte vers image et texte. Ces modèles sont publiés sous licence MIT et présentés comme libres d'usage académique et commercial. Le dépôt associé, MegaPairs, est un jeu de données synthétique qui alimente l'entraînement de BGE-VL. Cette extension change la nature du projet : on ne parle plus seulement de similarité textuelle mais d'un espace d'embedding partagé entre modalités. Pour une équipe qui doit indexer des images et du texte dans le même index, c'est une option à considérer. Pour une équipe qui ne traite que du texte, cette partie du dépôt est du poids mort, et la surface de maintenance augmente avec chaque famille de modèles ajoutée.

Ce que le dépôt ne fait pas

FlagEmbedding ne fournit pas de base vectorielle, pas de couche de service, pas de gestion de version d'index. C'est un ensemble de modèles et de code d'inférence. Une équipe qui attend un système de recherche complet devra assembler elle-même le stockage, l'indexation et l'API. Autre limite : la diversité des modèles est aussi une charge. Chaque modèle a sa taille, son préfixe d'instruction, sa longueur d'entrée maximale et son coût. Le README ne donne pas de tableau comparatif unifié des compromis, et la documentation renvoie à des pages séparées. Pour un projet qui doit tenir dans un budget de latence serré, le choix entre un petit encodeur et un modèle de 9 milliards de paramètres comme bge-multilingual-gemma2 n'est pas arbitrable sans mesure sur vos données. Enfin, le dépôt héberge aussi des projets de recherche (long context, benchmarks, génération d'images) qui ne relèvent pas de la recherche d'information et qui peuvent brouiller la lecture du périmètre.

Alternatives et différences d'approche

Sentence-Transformers est l'alternative la plus directe pour les embeddings textuels : la bibliothèque se concentre sur l'encodage de phrases et fournit une API unique pour charger et comparer des modèles, sans embarquer de reranker ni de modèle multimodal. La différence est celle du périmètre : Sentence-Transformers reste un outil d'encodage, FlagEmbedding couvre l'encodage, le reranking et la recherche visuelle. Une équipe qui n'a besoin que de vecteurs pourra trouver Sentence-Transformers plus simple à intégrer, avec moins de dépendances à suivre. À l'inverse, une équipe qui veut un reranker et un encodeur issus du même projet, avec des conventions cohérentes, trouvera dans FlagEmbedding un ensemble plus intégré. Aucune des deux approches ne fournit d'index : ce choix reste à faire séparément dans les deux cas.

Licence, maintenance et coût de mise à jour

Le dépôt est sous licence MIT, et le README indique que BGE-VL est également publié sous MIT, libre pour un usage académique et commercial. Cette licence permissive autorise la modification et la redistribution, sous réserve de conserver la notice de copyright. Ce n'est pas un avis juridique : les conditions exactes figurent dans le fichier LICENSE et doivent être lues avant toute redistribution. Sur la maintenance, le dépôt n'est pas archivé et les releases récentes s'enchaînent : v1.4.0 en avril 2026, puis v1.4.1 et v1.4.2 en août 2026. Le rythme est soutenu, ce qui implique de suivre les changements de version si l'on épingle une version précise. Le coût de mise à jour ne se limite pas au code : les poids des modèles sont hébergés sur Hugging Face, et un changement de modèle impose de réindexer le corpus. Pour un index volumineux, c'est le poste de coût principal, bien avant la mise à jour du paquet Python.

Conclusion éditoriale

FlagEmbedding convient aux équipes qui veulent une chaîne retrieval complète sous licence MIT, du dense retrieval au reranking et à la recherche multimodale, sans dépendre d'un service propriétaire. Il ne convient pas à qui cherche un index clé en main : le dépôt fournit des modèles et du code d'inférence, pas une base vectorielle ni une couche de service. Avant d'adopter, vérifiez la taille du modèle retenu, le préfixe d'instruction attendu par celui-ci, et si le reranking est nécessaire pour votre latence cible. La documentation signale que BGE-M3 accepte des entrées jusqu'à 8192 tokens, ce qui conditionne le coût de l'indexation.

Sources officielles

  1. FlagOpen/FlagEmbedding on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Notes de la communauté

Notes de la communauté