DR-RAG:理想汽车最新RAG研究成果,准确率和响应时间远超其他RAG框架
发布时间:2024 年 06 月 11 日
RAG
DR-RAG: Applying Dynamic Document Relevance to Retrieval-Augmented Generation for Question-Answering
Retrieval-Augmented Generation (RAG) 显著提升了大型语言模型在知识密集型任务,如问答中的表现。通过整合外部知识库,RAG 扩展了查询上下文,增强了回答的准确性。但每次查询多次调用 LLMs 效率不高,且单次查询难以检索所有相关文档。我们发现,尽管某些关键文档与查询关联度低,通过结合文档片段与查询,仍可检索到其他相关文档。为此,我们提出了 Dynamic-Relevant Retrieval-Augmented Generation (DR-RAG),一种两阶段检索框架,旨在提升文档检索的召回率和答案准确性,同时保持高效。此外,一个小型分类器用于两种选择策略,以评估检索文档对回答查询的贡献,并筛选出相对相关的文档。DR-RAG 仅一次调用 LLMs,大幅提升了实验效率。在多跳 QA 数据集上的实验结果显示,DR-RAG 显著提高了答案的准确性,为 QA 系统带来了新的进步。
https://arxiv.org/abs/2406.07348
1. DR-RAG有多厉害?
上面两个表分别展示了DR-RAG与其他几个当前流行的RAG框架对比的效果,特别是Adaptive RAG。可以看到,在多个测试数据集上,DR-RAG要比其他框架(比如:Adaptive RAG和Self RAG)准确率都要更高。而且在相同TopK参数的前提下,DR-RAG的召回率更高,从而回答正确的比例也越高。
上面这个图展示了DR-RAG与Adaptive RAG对比的一些例子,从例子里可以看出,DR-RAG在一些问题上,比Adaptive RAG回答的更准确。
比如上面这个图里的例子,传统检索器能够轻松地获取高相关性的静态文档(用红色标出),却难以捕获那些虽然相关性不高(用蓝色标出),但对于问题答案至关重要的动态文档。
静态相关文档(Static-Relevant Documents,SRD):对答案生成至关重要且紧密相关的文档。
动态相关文档(Dynamic-Relevant Documents,DRD):相关性不高,但对答案生成同样关键的文档。
对于 “谁是彼得·安德烈亚斯·海伯格孩子的妻子?”这个问题,与“彼得·安德烈亚斯·海伯格”和“孩子/儿子”高度相关的静态相关文档(上图以红色标出)较容易被检索。然而,动态相关文档(以蓝色标出)由于只与查询中的“配偶/妻子”相关,因此难以被检索。
知识库中关于“配偶”的信息可能非常多,导致这些动态相关文档在检索过程中排名较低。在静态和动态相关文档之间,“约翰·路德维格·海伯格”与“妻子”之间的联系非常紧密。如果将查询中的“配偶/妻子”也纳入考虑,便能轻松地检索到动态相关文档,从而得出答案。
2. 什么是DR-RAG?
DR-RAG是指:Dynamic Relevant Retrieval-Augmented Generation,动态相关检索增强生成。该方法是由理想汽车团队与中山大学、东北大学和四川大学等共同提出的一种新方法。
第一部分的例子,我们看到了DR-RAG擅长回答的问题类型:发现相关性不高,但是对回答问题很重要的文档。之所以DR-RAG如此厉害,是因为DR-RAG采用了一种两步检索框架,用于挖掘查询和文档之间的相关性。
如上图:
-
第一步,根据与查询的高相关度检索静态相关文档(SR-Documents)。
-
第二步,将这些静态文档与查询结合,以检索一系列动态相关文档(DR-Documents)。
-
最终,逐一挑选DR-Documents,将其与查询及静态文档串联,输入分类器,以筛选出最具相关性的动态文档。
遗憾的是,找遍了整篇论文,好像没有找到有关这个分类器如何得到、如何复现的一些细节(也许是我漏掉了)
为了让RAG回答问题更加准确,需要尽可能给出与回答问题最重要的文档;因此,我们必须检索非常多文档,以让模型给出更加全面的回答。
DR-RAG的宗旨是从检索到的文档中筛选出最相关、最重要的文档,并且确保不遗漏LLM回答问题所需的关键信息。而实际上,仅凭相似性匹配(SM)很难一网打尽所有静态和动态相关的文档。
通常,大家会通过推升K值来增加DRD的概率,比如:在MuSiQue系统中,将k值从3增至6,仅将召回率从58%提升至76%,依然有许多相关文档未能被检索。此外,不相关的文档可能会给LLMs带来冗余信息。
所以,DR-RAG实际上是在保持top-k不变的情况下,通过提升基于动态相关性的文档召回率,来改善检索效果。
3. 性能分析
3.1 召回率对LLM的影响
召回率对RAG和LLM至关重要。因为当召回率不高时,模型接触的信息不完整、或者缺失,那么容易产生“幻觉”的模型则难以准确回答问题。在2Wiki数据集中,DR-RAG在仅选择前6个文档时,已经达到了98%的高回忆率。
3.2 冗余信息对LLM的影响
若上下文中的冗余信息得以减少,大型语言模型便能更透彻地理解查询,减少误解。随着输入模型的文档数量增多,无效信息可能激增约三成,但模型在作答时却难以辨识。模型或许会依赖这些冗余信息,给出错误的答案。
在RAG过程中,应尽可能减少向模型提供冗余或不准确的信息。
以2Wiki数据集为例,当提供给模型的文档数量k为4或6时,从CIS(Classifier Inverse Selection)过渡到CFS(Classifier Forward Selection),召回率的提升并不显著,反而在评价指标上有所降低。因此,作者提出了CFS方法,用来平衡信息的冗余度和相关性。
3.3 用更少的文档来提升召回率
CFS策略在降低文档数量的同时提高回忆率。在二次检索过程中,由于所需文档已被检索,为每对查询-文档找到匹配项似乎成了不可能的任务。这导致实际检索到的文档数量可能少于预定的k。以HotpotQA数据集为例,当k设为6,实际上平均只有5.35份文档被提供给LLMs,这在一定程度上减少了无关信息的干扰。
CFS方法在减少实际检索文档数量的同时,与QDC(Query Documents Concatenation)方法相比,实现了更高的回忆率。CFS方法在三大评价指标上均获得了更高的分数,证明了其在减少冗余输入的情况下,相比其他方法具有更卓越的检索性能。
3.4 响应速度优化
相较于以往的RAG框架,DR-RAG在整体流程中实现了更优的时间管理。其他RAG框架在获取答案前可能需多次调用LLMs,造成高昂的计算开销。实际上,优化LLMs的推理时间在实际应用中同样重要。单次调用LLMs就需耗费大量时间,多次调用则在时间成本上构成巨大挑战。
为此,作者设计一个小规模、参数较少的模型,以实现更高效的优化策略,避免频繁调用LLMs。如上表所示,与Adaptive-RAG相比,我们平均减少了74.2%的时间消耗。因此,DR-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 的正确特征了。