FlashRAG : Un kit Python pour la recherche RAG efficace
FlashRAG : Un kit Python pour la recherche RAG efficace
La Retrieval‑Augmented Generation (RAG) est devenue un incontournable du NLP moderne, associant les grands modèles de langage (LLM) aux sources de connaissances externes pour fournir des réponses plus précises et contextualisées. Pourtant, la communauté de recherche continue de lutter contre un écosystème fragmenté : chaque article propose souvent son propre pipeline sur mesure, les jeux de données sont dispersés entre les dépôts, et reproduire les résultats peut ressembler à une chasse au trésor.
FlashRAG résout ce problème en emballant l’ensemble de la pile RAG dans un kit Python bien structuré, sous licence MIT — publié dans le cadre de la track des ressources de la conférence Web 2025 de l'ACM (WWW). En mettant l’accent sur la rapidité, la polyvalence et la reproductibilité, FlashRAG devient rapidement la plateforme de facto pour les expérimentations RAG.
Aperçu rapide : Ce que propose FlashRAG
| Fonctionnalité | Description |
|---|---|
| Ensembles de données | 36 jeux de données de référence pré‑traités (HotpotQA, PubMedQA, WIKIQA, etc.) prêts à être téléchargés sur HuggingFace. |
| Algorithmes | 23 méthodes RAG de pointe, allant des pipelines séquentiels standard aux pipelines de raisonnement avancés comme Search‑R1 et CoRAG. |
| Composants | Retrievers, rerankers, generators et refiners entièrement modulaires pouvant être combinés librement. |
| Interface utilisateur | Une interface web légère pour tester et évaluer rapidement des prototypes. |
| Performance | Construit sur vLLM, FastChat, Faiss et BM25 pour un inférence à faible latence. |
| Extensibilité | Facile à intégrer des modèles, embeddings ou backend de récupération personnalisés. |
Démarrage en quelques minutes
Installation
# Les versions pré‑release sont disponibles via pip
pip install flashrag-dev --pre
# ou clonez le dépôt
git clone https://github.com/RUC-NLPIR/FlashRAG.git
cd FlashRAG
pip install -e .
Dépendances facultatives pour la vitesse :
pip install flashrag-dev[full] # Comprend vLLM, sentence‑transformers, pyserini
Pipeline de démarrage rapide
Le SequentialPipeline est le pipeline par défaut, réalisant récupération → re‑classement → génération. Voici un exemple minimal :
from flashrag.config import Config
from flashrag.pipeline import SequentialPipeline
from flashrag.utils import get_dataset
# Charger la configuration et le dataset
cfg = Config('flashrag_default.yaml')
train, val, test = get_dataset(cfg)
# Construire le pipeline
pipeline = SequentialPipeline(cfg)
results = pipeline.run(test, do_eval=True)
print(results.to_pandas().head())
Exécutez pipeline.run() en arrière‑plan et FlashRAG gère l’intégralité du flux de travail, enregistre les sorties intermédiaires et les métriques d’évaluation.
Explorer l'interface utilisateur
cd webui
python interface.py
Une fenêtre de navigateur s'ouvre avec des contrôles intuitifs : téléverser le corpus, construire les index, ajuster les hyper‑paramètres, et voir instantanément l’impact sur la performance Q&A. L'interface est particulièrement utile pour les non‑programmeurs ou lorsqu’on souhaite démontrer des pipelines RAG aux parties prenantes.
Approfondir : Composants et personnalisation
- Retrievers : Dense (e5, dpr, bge), BM25, et retrievers hybrides avec intégration de recherche Web.
- Rerankers : stratégies Bi‑encoder et cross‑encoder.
- Refiners : Extractive, abstractive, LLMLingua, Selective‑Context, et basés sur Knowledge‑Graph.
- Generators : FF, FiD, vLLM, FastChat, et modèles transformateurs natifs.
- Pipelines : Sequential, Conditional, Branching, Loop, Self‑Ask, et basés sur le raisonnement.
Tous les composants sont basés sur des classes ; vous pouvez sous‑classer BasicPipeline et surcharger run() pour concevoir une logique entièrement nouvelle. Par exemple, un pipeline personnalisé qui effectue d’abord une recherche sémantique d’index, puis affine les k meilleurs documents via un graphe de connaissances avant de les transmettre à un LLM à grande échelle peut être assemblé en moins de 10 lignes.
Multi‑sauts & Raisonnement : la nouvelle frontière
La version 2025 de FlashRAG soutient de façon unique sept méthodes basées sur le raisonnement telles que Search‑R1, CoRAG et ReaRAG. Ces modèles alternent récupération et raisonnement, obtenant souvent une amélioration de plus de 10 % sur les benchmarks multi‑sauts comme HotpotQA. Les chercheurs peuvent rapidement remplacer un générateur standard par un pipeline de raisonnement en changeant un seul drapeau de configuration.
Jeux de données et corpus de soutien
- Corpus de documents : format JSONL pour compatibilité avec Faiss ou Pyserini. Téléchargez les indices pré‑construits (par ex., wiki18_100w_e5_index.zip) depuis le hub de données HuggingFace.
- Benchmarks : 36 jeux de données, couvrant Q&A, Q&A multi‑sauts, Q&A longue forme, résumé, et même des tâches à choix multiple non arabes.
- Corpus personnalisés : scripts pour traiter les dump Wikipedia, MS MARCO, ou des pages web spécifiques à un domaine.
Feuille de route & Communauté
FlashRAG est un projet vivant : nous prévoyons de soutenir la récupération multimodale (Llava, Qwen, InternVL), d’étendre aux back‑ends LLM supplémentaires (Claude, Gemini), d’ajouter des retrievers API, et de fournir des images Docker pour des déploiements sans configuration. Les contributions sont les bienvenues sur le dépôt GitHub, et la communauté discute activement des meilleures pratiques sur le canal Slack flashrag.
Conclusion
FlashRAG unifie le paysage fragmenté du RAG en un seul paquet Python prêt pour la production. Que vous soyez chercheur rédigeant un article, ingénieur déployant un chatbot à forte composante de connaissances ou amateur motivé par la curiosité, le kit vous fournit tout ce dont vous avez besoin – des chargeurs de jeux de données aux interfaces graphiques en passant par les modèles de raisonnement à la pointe – le tout sous licence MIT. Installez FlashRAG dès aujourd’hui et transformez des pipelines d’augmentation par récupération complexes en expériences reproductibles en quelques minutes.