RUC-NLPIR/FlashRAG
⚡FlashRAG: A Python Toolkit for Efficient RAG Research (WWW2025 Resource)
⚡ FlashRAG – 高効率な検索拡張生成(RAG)研究のためのPythonツールキット
何であるか – FlashRAGは、最先端のRAGシステムの再現、ベンチマーク、拡張に必要なすべてを統合したオープンソースのPythonライブラリです。以下を同梱しています:
- 36の事前処理済みRAGベンチマークデータセット。
- 23の準備済みRAGアルゴリズム(うち7つは検索と推論を組み合わせたもの)。
- レトリーバー、リランカー、ジェネレーター、コンプレッサーをプラグイン可能なモジュールフレームワーク。
- オプションの高速化バックエンド(vLLM、FastChat、Faiss)。
- パイプラインの構成と結果の可視化に使える軽量なWeb UI(FlashRAG‑UI)。
コアコンポーネント
| コンポーネント | 役割 | 特徴的なオプション |
|---|---|---|
| レトリーバー | 関連するドキュメントを検索。密度型(sentence‑transformers + Faiss)、スパース型(Pyseriniまたはbm25sによるBM25)、ニューラルスパース型(SeismicによるSPLADE)をサポート。Web検索レトリーバー(Serper API)も搭載。 |
|
| リランカー | 検索結果リストを再順序付け。クエリ-ドキュメントペアのスコアを計算できる任意のモデルに交換可能。 | |
| ジェネレーター | 最終的な回答を生成するLLM。OpenAIモデル、マルチモーダルLLM(LLaVA、Qwen、InternVL)、およびvLLM経由の任意のHuggingFaceモデルをサポート。 | |
| コンプレッサー | 長いドキュメントを短くする(例:外部のChunkieライブラリによるチャンク化)。 | |
| パイプライン | 上記のコンポーネントを統合。SequentialPipeline(シンプル)とカスタムパイプライン用のベースクラスの2種類が提供。 |
注目機能
- 広範なベンチマークスイート – 36のデータセットはHuggingFace/ModelScopeに事前処理済みでホストされており、すぐに評価を開始可能。
- 23の最先端RAGアルゴリズム – RQRAG、Adaptive‑RAG、Spring、Trace、IRCoT、および新しい推論パイプライン(R1‑Searcher、Search‑R1など)をワンクリックで構成可能。
- 推論ベースのパイプライン – チェーン・オブ・シンキングやグラフベースの推論と検索を組み合わせ、HotpotQAなどのマルチホップタスクで約60 F1を達成。
- マルチモーダル対応 – CLIPベースの視覚検索と視覚言語モデルによる生成を可能に。
- 高速性重視のツール – 高スループットLLM推論のための
vllm、密度型ベクトルインデックスのためのFaiss、BM25用の軽量bm25sフォールバック。 - UI – ブラウザベースのインターフェースで、コンポーネントをドラッグアンドドロップし、実験を実行し、評価指標を視覚化可能。コードを書かずに済む。
クイックスタート(Python)
# 開発パッケージのインストール(オプション依存関係を含む)
pip install flashrag-dev[full] # または `pip install flashrag-dev --pre`
from flashrag.config import Config
from flashrag.pipeline import SequentialPipeline
from flashrag.utils import get_dataset
# 設定ファイル(YAMLまたは辞書)を読み込み、データセットとコンポーネントを選択
cfg = Config(config_file_path='my_config.yaml')
dataset = get_dataset(cfg)['test']
pipe = SequentialPipeline(cfg)
results = pipe.run(dataset, do_eval=True)
resultsオブジェクトには、各質問に対する回答、検索されたパラグラフ、評価スコア(EM、F1など)が含まれます。
FlashRAGを使うべき場面
- 研究 – 公開されたRAG論文の再現、共通ベンチマークスイート上で新しいアイデアを比較、新しいレトリーバー/ジェネレーターの組み合わせをベンチマーク。
- プロトタイピング – たった数行のコードでカスタムRAGパイプライン(例:マルチモーダル検索+LLM)を構築可能。
- 教育 – UIと豊富なドキュメントにより、学生が各コンポーネントのパフォーマンスへの影響を簡単に探求可能。
- ベンチマーク – 同梱された36のデータセットはQA、事実検証、マルチホップ推論をカバーし、体系的な評価のためのワンストップソリューション。
インストールノート
- Python ≥ 3.10が必要。
- Faissはconda経由でインストールする必要がある(CPU版またはGPU版)。pipのウェッジは普遍的に互換性がないため。
- オプションの追加機能:
vllm:高スループットLLM推論。sentence‑transformers:密度型検索。pyserini:オリジナルのBM25実装を好む場合。
- SPLADE(ニューラルスパース)を使用するにはRustツールチェーンと
pyseismic‑lsrパッケージが必要。
ドキュメントとリソース
- 論文:FlashRAG: A Python Toolkit for Efficient RAG Research (arXiv:2405.13576) – ACM WWW 2025 Resource Trackに採択。
- データセット:HuggingFaceとModelScopeにホスト(36の事前処理済みスプリット)。
- UIデモ:https://github.com/user-attachments/assets/8ca00873-5df2-48a7-b853-89e7b18bc6e9
- GitHub:https://github.com/RUC-NLPIR/FlashRAG(MITライセンス)
TL;DR
FlashRAGは、即時利用可能で拡張性のあるツールキットです。検索拡張生成(RAG)に取り組むすべての人にとって最適。データセット、数十の最先端手法、高速インデックス/検索バックエンド、視覚的なUIを統合しており、論文の再現、新しいアイデアのベンチマーク、プロダクションレベルのRAGパイプラインの構築が容易になります。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト