FlashRAG:一个高效的用于研究RAG的模块化工具包

1. 引言

随着大语言模型(LLMs)的发展,检索增强生成(RAG)技术越来越受到研究者的关注。RAG通过利用外部知识库来缓解LLM中的幻觉问题。然而,由于缺乏标准化的实现框架,加上RAG过程本身的复杂性,研究人员很难在一致的环境中比较和评估不同的RAG方法。尽管已有一些RAG工具包如LangChain和LlamaIndex,但它们通常比较重量级且难以满足研究人员的个性化需求。

为此,我们提出了FlashRAG,一个高效且模块化的开源工具包,旨在帮助研究人员在统一的框架下复现已有的RAG方法并开发自己的RAG算法。我们的工具包实现了12个先进的RAG方法,并收集整理了32个基准数据集。

2. FlashRAG总体架构

如图1所示,FlashRAG由三个模块组成:环境模块、组件模块和管道模块。

FlashRAG是一个用于支持相关性问答(RAG)研究的工具包。它由三个模块组成:环境模块、组件模块和管道模块。其中,环境模块为实验提供了必要的数据集、超参数和评估指标;组件模块包括五个主要组件:判断器、检索器、排序器、精炼器和生成器;管道模块将各种组件组合在一起以实现完整的RAG过程。在组件模块中,有五种主要组件可供选择:

1.判断器(Judger):根据SKR方法确定是否需要检索。2.检索器(Retriever):支持多种检索方式,如稀疏检索和稠密检索,并且支持自定义预取结果。3.排序器(Reranker):用于优化检索结果的顺序,支持多种跨编码模型。4.精炼器(Refiner):用于减少生成器的输入文本量并降低噪声,提供四种类型的精炼器供选择。5.生成器(Generator):支持多种主流LLM加速库和编码解码模型。

在管道模块中,用户可以根据自己的需求组装所需的组件,以便执行整个RAG过程。同时,该工具包还提供了多个预设的管道,方便用户快速搭建RAG流程。

FlashRAG相较于其他RAG工具包的优势在于其丰富的组件和可扩展性。用户可以根据具体任务的需求选择合适的组件,并通过简单的代码配置来组装一个符合自己需求的RAG流程。此外,FlashRAG还提供了多种预设的管道,方便用户快速搭建RAG流程。

在管道模块中,我们根据各种RAG任务的操作逻辑,将所有RAG流程分为四种类型:顺序(Sequential)、分支(Branching)、条件(Conditional)和循环(Loop)。目前我们已经实现了8个不同的管道,涵盖了一系列先进的RAG工作。

FlashRAG的主要目的是帮助研究人员更轻松地进行相关性问答(RAG)研究。传统的RAG研究通常需要手动编写复杂的代码来构建RAG流程,而FlashRAG则提供了丰富的组件和预设的管道,使得用户可以更加高效地搭建RAG流程。此外,FlashRAG还提供了多种数据处理工具,方便用户进行数据过滤和预处理。

3. 数据集与语料库

3.1 基准数据集

如表1所示,我们收集并预处理了32个基准数据集,涵盖了RAG工作中使用的大部分数据集。所有数据集都已格式化为统一的JSONL结构。

任务数据集名称知识来源训练集大小验证集大小测试集大小
QANQWiki79,1688,7573,610
QATriviaQAWiki & Web78,7858,83711,313
多跳QAHotpotQAWiki90,4477,405/
多跳QA2WikiMultiHopQAWiki15,00012,576/
长问题QAELI5Reddit272,6341,507/
多选QAMMLU-99,8421,53114,042

3.2 语料库

除了数据集,用于检索的语料库(也称为知识库)是实验的另一个重要准备。在FlashRAG中,我们提供了方便的脚本来自动下载和预处理所需的Wikipedia版本。我们还提供了DPR提供的广泛使用的2018年12月20日的Wikipedia转储作为基础资源。

4. 实验与结果分析

本文介绍了作者使用的评估指标和方法来评估基于检索式生成的问答系统(RAG)的质量。作者将这些指标分为两个类别:检索方面和生成方面的指标。在检索方面,作者支持四种指标,包括召回率@k、精确度@k、F1@k和平均精度(MAP)。由于在RAG过程中检索到的文档通常缺乏黄金标签(例如相关或不相关的标记),因此作者通过考虑黄金答案是否存在于检索到的文档中作为相关性的指示器来进行评估。其他类型的指标可以通过继承现有的指标并修改计算方法来获得。在生成方面,作者支持五种指标,包括词级别F1分数、准确率、BLEU和ROUGE-L。此外,作者还支持评估生成中使用的标记数,以方便分析整个过程的成本。为适应自定义评估指标,作者提供了用户可以实现的指标模板。由于该库自动保存执行的中间结果,因此用户可以方便地评估由中间组件产生的结果。例如,用户可能会比较精炼器运行前后的标记数差异,或者多个检索结果之间的精确度差异。

4.1 实验设置

在我们的主要实验中,我们使用最新的LLAMA3-8B-instruct作为生成器,使用E5-base-v2作为检索器,使用2018年12月的Wikipedia数据作为检索语料库。我们在六个常见数据集上进行了实验:Natural Questions(NQ)、TriviaQA、HotpotQA、2WikiMultihopQA、PopQA和WebQuestions。

4.2 主要结果

各种方法的主要结果如表所示。与直接生成的基线相比,RAG方法有显著的改进。使用先进的检索器和生成器的标准RAG是一个强大的基线,在六个数据集上都表现良好。

方法优化组件管道类型NQ(EM)TriviaQA(EM)HotpotQA(F1)2Wiki(F1)PopQA(F1)WebQA(EM)
朴素生成-顺序22.655.728.433.921.718.8
标准RAG-顺序35.158.835.321.036.715.7
AAR检索器顺序30.156.833.419.836.116.1
LongLLMLingua精炼器顺序32.259.237.525.038.717.5
RECOMP精炼器顺序33.156.437.532.439.920.2
SuRe管道分支37.153.233.420.648.124.2

4.3 不同方法的比较分析

在精炼器优化方法中,所有三种方法都显示出显著的改进。在HotpotQA和2WikiMultihopQA等多跳数据集上,精炼器的表现尤其出色。这可能是因为复杂问题导致文档检索的准确性降低,从而产生更多噪声,需要精炼器优化。

在生成器优化方法中,Ret-Robust使用带有lora模块的Llama2-13B模型,大大增强了生成器对检索文档的理解,优于其他无需训练的方法。

优化RAG流程的有效性因数据集而异。在NQ和TriviaQA等较简单的数据集上,FLARE和Iter-RetGen与标准RAG相当或略低于标准RAG。但是,在HotpotQA等需要多步推理的复杂数据集上,它们比基线有显著的改进。这表明适应性检索方法更适合复杂问题,而在简单任务上,它们可能会带来更高的成本,但收益有限。

5. FlashRAG的特点与优势

  • 广泛且可定制的模块化RAG框架
  • 预实现的先进RAG算法,目前已实现12个
  • 全面的基准数据集,目前收录32个
  • 高效的RAG辅助脚本,如下载维基百科、构建索引等

6. 局限性与未来展望

我们的工具包目前还存在一些局限性,我们计划在未来逐步改进:

1.尽管我们努力涵盖许多有代表性的RAG方法,但由于时间和成本的考虑,我们还没有包括所有现有的RAG工作。这可能需要开源社区的贡献。2.我们的工具包缺乏对训练RAG相关组件的支持。我们在最初设计时考虑了训练,但考虑到训练方法的多样性以及许多专门用于训练检索器和生成器的存储库的存在,我们没有包括这一部分。未来我们可能会添加一些帮助脚本,为研究人员的训练需求提供一些帮助。

7. 总结

为了应对研究人员在RAG领域复现研究和高开发成本方面面临的挑战,我们引入了一个模块化的RAG工具包FlashRAG。我们的工具包包括全面的RAG基准数据集、先进的RAG方法实现以及用于预处理语料库和多个评估指标的代码。它使研究人员能够轻松地复现现有的RAG方法,开发新的算法,并专注于优化他们的研究。相信FlashRAG能为RAG研究领域提供有力的支持和帮助。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值