SuperAPI AI 工具集

FlashRAG

FlashRAG 是一个用于高效检索增强生成(RAG)研究的 Python 工具包,由 RUC-NLPIR 开发,论文被 WWW 2025 Resource Track 收录。它提供 36 个预处理基准数据集和 23 种先进 RAG 算法(含 7 种结合推理与检索的推理型方法),并包含检索器、重排器、生成器、压缩器等核心组件,支持灵活组装复杂流程。工具包还提供 FlashRAG-UI 可视化界面,方便配置、体验和评估 RAG 方法。

访问官网

工具介绍

FlashRAG 是一个用于检索增强生成(RAG)研究复现与开发的 Python 工具包,由 RUC-NLPIR 开发,其技术论文被 2025 年 ACM Web Conference(WWW 2025)Resource Track 收录。

用途

FlashRAG 旨在帮助研究人员轻松复现 RAG 领域的现有 SOTA 工作,或实现自定义的 RAG 流程与组件。它提供了一套完整框架,涵盖从语料处理、索引构建到检索、生成和评估的全流程。

主要能力

  • 广泛且可定制的框架:包含 RAG 场景所需的核心组件,如检索器(retriever)、重排器(reranker)、生成器(generator)和压缩器(compressor),支持灵活组装复杂流水线。
  • 全面的基准数据集:提供 36 个预处理 RAG 基准数据集,用于测试和验证 RAG 模型性能。
  • 预实现的先进 RAG 算法:内置 23 种先进 RAG 算法,并报告了结果,便于在不同设置下复现。
  • 推理型方法:支持 7 种结合推理能力与检索的推理型方法,在复杂多跳任务上表现更优。
  • 高效预处理阶段:提供多种脚本,如语料处理、检索索引构建、文档预检索等,简化 RAG 工作流准备。
  • 优化执行:利用 vLLM、FastChat 加速 LLM 推理,使用 Faiss 管理向量索引,提升库效率。
  • 易用 UI:提供 FlashRAG-UI,可通过可视化界面快速配置和体验已实现的 RAG 基线,并运行评估脚本。

使用方式

安装:可通过 pip 安装,或从 GitHub 克隆安装(需 Python 3.10+)。若需使用 vllm、sentence-transformers 或 pyserini,可安装可选依赖。由于 pip 安装 faiss 存在兼容性问题,需使用 conda 命令安装。

语料构建:将语料保存为 jsonl 文件,每行一个文档。若使用 Wikipedia,可参考文档转换为可索引格式。

索引构建:对于稠密检索方法,使用 faiss 构建索引;对于稀疏检索方法(BM25),使用 Pyserini 或 bm25s 构建 Lucene 倒排索引。可指定 pooling_method(mean、pooler 或 cls)和 instruction。若检索模型支持 sentence transformers 库,可直接构建索引。构建 bm25 索引无需指定 model_path。稀疏神经检索方法(SPLADE)也支持。

使用现成流水线:加载 config(可输入 yaml 文件或直接变量,变量优先),加载数据集并初始化 pipeline,组件自动加载。可使用 PromptTemplete 指定输入提示。执行 pipeline.run 获取结果,输出包含中间结果和指标分数,并可保存文件。

构建自定义流水线:继承 BasicPipeline,初始化所需组件,完成 run 函数。也可仅使用组件嵌入自有代码。

FlashRAG-UI:提供一键配置加载、快速方法体验和高效基准复现功能,支持可视化参数设置、保存配置、加载语料和索引、切换组件和超参数,以及复现内置基线方法。

适用场景

适用于 RAG 领域的研究人员、开发者,用于复现 SOTA 工作、开发自定义 RAG 流程、进行基准测试和评估。也适合需要快速体验不同 RAG 方法的研究工作。

限制

FlashRAG 仍在开发中,存在许多问题和改进空间,将持续更新。部分功能可能不完善,欢迎贡献。