FlashRAG: 为 RAG 研究而生的模块化工具包

标题

FlashRAG: A Modular Toolkit for Efficient Retrieval-Augmented Generation Research

总结

FlashRAG 是一个高效、模块化的开源工具包,旨在帮助研究人员复现现有的检索增强生成(RAG)方法,并在统一框架内开发自己的 RAG 算法。

摘要

网页主要介绍了一个名为 FlashRAG 的工具包,它是为了解决检索增强生成(RAG)研究中的挑战而设计的。RAG 技术通过结合大型语言模型(LLMs)和外部知识库来减少 LLMs 的幻觉问题。随着越来越多的算法和模型被引入以提高 RAG 系统的各个方面,比较和评估这些方法变得越来越困难。现有的 RAG 工具包,如 LangChain 和 LlamaIndex,虽然可用,但往往过于庞大,不能满足研究人员的个性化需求。FlashRAG 提供了一个模块化的框架,实现了 12 种高级 RAG 方法,并整理了 32 个基准数据集。它支持自定义的模块化框架、丰富的 RAG 组件集合、全面的数据集、高效的辅助预处理脚本以及广泛的评估指标。此外,网页还对 FlashRAG 的主要组件和流程管道进行了详细介绍,包括判别器(Judger)、检索器(Retriever)、重排器(Reranker)、细化器(Refiner)和生成器(Generator)等。最后,网页还展示了一系列实验结果,证明了 FlashRAG 在 RAG 领域的有效性和潜力。

框架特性

  • Extensive and Customizable Modular RAG Framework。为了促进易于扩展的 RAG 流程,我们在两个级别上实施了模块化 RAG。在组件级别,我们提供全面的 RAG 组件,包括四个主要类别的 13 个组件:裁判器、检索器、精炼器和生成器。
  • Pre-Implemented advanced RAG algorithms。到目前为止,基于我们的框架,我们已经实现了 12 种高级 RAG 算法,例如 Self-RAG 和 FLARE,涵盖顺序 RAG、条件 RAG、分支 RAG 和循环 RAG 类别。
  • Comprehensive benchmark datasets。为了提高RAG研究中数据集的一致性和可重用性,我们整理了32个常见的RAG基准数据集,并将它们预处理成统一的格式。
  • Efficient Helping Scripts for RAG。提供了一整套帮助脚本,包括下载和切片维基百科以创建语料库、构建检索索引以及提前准备检索结果

模块组件

  • Judger。充当评估查询是否需要检索的初步组件。
  • Retriever。对于稀疏检索,集成了 Pyserini 库以使用 BM25 方法。对于密集检索,我们支持各种基于 BERT 的嵌入模型,例如 DPR [12]、E5 [13] 和 BGE [14]。FlashRAG还支持基于T5架构的模型,如ANCE [15]。我们采用FAISS[16,17]进行向量数据库计算,以确保检索效率,并利用HuggingFace的数据集库来提高语料库的加载速度。
  • Reranker。旨在优化检索器返回的结果顺序,以提高检索准确性。目前,FlashRAG 支持各种广泛使用的 Cross-Encoder 模型,例如 bgereranker 和 jina-reranker。
  • Refiner。优化生成器的输入文本,以减少令牌使用并减少检索到的文档的干扰,从而改进最终的 RAG 响应。作为 RAG 过程的重要组成部分,各种研究的重点是开发卓越的改进。
  • Generator。在我们的工具包中得到了充分的介绍。在生成器模块中,我们集成了两个领先的 LLM 加速库,vllm [22] 和 FastChat [23],因此支持无数主流 LLM。此外,我们还提供了 Transformers 库 [24] 的原生接口。

Pipeline

将所有 RAG 流程分为四种类型:顺序、分支、条件和循环。到目前为止,我们已经实施了 8 个不同的管道,涵盖了一系列推进的 RAG 工作。

  • Sequential Pipeline。query -> retriever -> post-retrieval (reranker, refiner) -> generator
  • Branching Pipeline。为单个查询并行执行多个路径(通常每个检索到的文档一个路径),并合并所有路径的结果以形成最终输出。
  • Conditional Pipeline。利用判断器根据判断结果将查询定向到不同的执行路径
  • Loop Pipeline。支持四种广泛认可的方法,包括迭代 [30, 31]、Self-Ask [32]、Self-RAG [33] 和 FlARE [34]

评测数据

已有 RAG 方案的评测数据

召回数目的对最终结果的影响

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *