❝
LLMs 在推理过程中存在的事实幻觉问题,尤其是在时间性、准确性和参数知识的覆盖范围方面。此外,将推理与 RAG 结合仍然具有挑战性,主要由于任务分解不有效和冗余检索,这可能会引入噪声并降低响应质量。本文提出了
DeepRAG
,这是一个将检索增强型推理建模为马尔可夫决策过程
(Markov Decision Process,MDP
)的框架,能够实现策略性和适应性的检索。通过迭代地分解
查询,DeepRAG动态地决定
在每一步是检索外部知识还是依赖于参数化推理。实验表明,DeepRAG 在提高检索效率的同时,将回答的准确性提高了21.99%,证明了其在优化检索增强型推理方面的有效性。
DeepRAG 核心方法
DeepRAG,用于解决LLMs在推理过程中存在的事实幻觉问题,并提出了一种新的框架来增强检索增强生成中的推理能力。将检索增强推理建模为马尔可夫决策过程(MDP),通过迭代分解查询,动态决定在每一步是检索外部知识还是依赖参数化推理。
- 马尔可夫决策过程(MDP)建模:首先,将问题分解、原子决策和最终答案生成过程形式化为一个MDP,定义如下:(S, A, P, R),表示状态集合,表示动作集合,表示转移动态,表示奖励函数。状态表示原始问题的部分解,动作包括终止决策和原子决策。
DeepRAG 框架:包括三个步骤:(1)二叉树搜索,(2)模仿学习,(3)校准链。给定一个数据集,我们首先使用二叉树搜索来合成用于模仿学习的数据,使模型能够学习检索模式。随后,我们使用二叉树搜索来构建偏好数据,以进一步校准大型语言模型对其知识边界的认知。
-
二叉树搜索:为了构建推理路径,实现了一个二叉树搜索方法,探索了基于参数知识或外部知识库的不同回答策略。每个子查询都生成两个回答策略:直接利用参数知识或检索外部文档。
-
模仿学习:通过二叉树搜索合成数据,提取最小检索成本的推理过程进行模仿学习。具体算法如下:
-
从中取出具有最低检索次数的轨迹。
-
生成子查询。
-
如果应该回答或长度超过最大历史长度,则生成最终答案。
-
否则,生成下一个子查询,并将其加入优先队列。
-
如果检索文档,则生成中间答案,并将其加入优先队列。
-
初始化优先队列。
-
当不为空时,执行以下步骤:
-
校准链:通过校准每个原子决策,优化LLM的内部知识。具体步骤包括:
其中,是逻辑函数,是调节偏离基准模型的惩罚超参数,和分别表示直接答案和检索答案的生成片段。
-
合成偏好数据以确定何时需要检索。
-
使用校准链目标对LLM进行微调,公式如下:
实验设计
-
数据集:使用五个开放域问答数据集进行实验,训练数据集来自HotpotQA和2WikiMultihopQA,测试数据集包括HotpotQA、2WikiMultihopQA、CAG、PopQA和WebQuestions。
-
基线方法:使用CoT、CoT_、CoT-Retrieve、CoT-Retrieve_、IterDRAG、UAR、FLARE、DRAGIN、TAARE和AutoRAG作为基线方法进行比较。
-
实现细节:采用BM25作为检索模型,外部知识库为Wikipedia,分割成100个token的段落。选择Llama-3-8B-Instruct和Qwen-2.5-7B作为基础模型。
结果与分析
-
整体结果:DeepRAG在所有测试场景中均表现出优于现有方法的性能。与基于推理和自适应RAG的基线方法相比,DeepRAG在所有数据集上均实现了改进。
-
检索效率:DeepRAG在保持较高准确性的同时,检索成本相对较低。置信度方法在不同数据集上的鲁棒性有限,迭代检索方法需要大量检索操作。
-
与参数知识的相关性:DeepRAG在F1、平衡准确率和MCC指标上表现出色,成功识别了检索的必要性。FLARE、DRAGIN和TAARE虽然准确性高,但在避免不必要检索方面表现不佳。
-
不同推理策略:仅依赖内部知识效果较差,完全依赖外部知识准确性较高但检索成本高。DeepRAG通过自适应选择内部和外部知识源,表现优于仅依赖检索的方法。
-
问题分解效果:大多数问题需要3~5步分解,检索尝试主要集中在0~2轮。DeepRAG有效地分解问题,同时最小化冗余检索。
-
消融研究:模仿学习阶段,DeepRAG-Imi在CAG上表现较差,但平均性能较高。校准链阶段,DeepRAG在保持较低检索成本的同时,平均性能较高。
DeepRAG 与现有 RAG 的区别
- 动态和策略性检索:
- DeepRAG将检索过程建模为一个马尔可夫决策过程(MDP),通过动态和策略性的方式决定何时进行检索。它通过迭代分解查询,动态决定每一步是否需要检索外部知识或仅依赖内部参数化知识。
- 二叉树搜索:
- DeepRAG使用二叉树搜索来探索不同的检索策略路径。这种方法允许模型生成子查询并根据已检索的信息动态调整检索策略,从而更有效地利用外部知识。
- 知识边界校准:
- DeepRAG通过链式校准方法来优化模型的知识边界感知能力。它通过合成数据和偏好数据来训练模型,使其能够更准确地判断何时需要检索外部信息,从而减少不必要的检索操作。
- 减少冗余检索:
- DeepRAG通过动态决定检索需求,减少了不必要的检索操作,从而提高了检索效率并降低了生成质量下降的风险。
- 端到端训练:
- DeepRAG采用端到端的训练方法,能够在不依赖额外参数或不可靠的不确定性度量的情况下,利用大语言模型的生成能力来探索知识边界。
- 多步推理:
- DeepRAG通过分解复杂查询为多个子查询,并在每一步中动态决定使用参数化知识还是外部知识,从而实现多步推理过程。这种方法有助于处理需要多步推理的任务。
这些特点使得DeepRAG在提高检索效率和答案准确性方面表现出色,特别是在处理需要多步推理和时间敏感的问答任务时。
总结
本文提出了DeepRAG,通过自校准增强了LLMs对检索需求的认识。DeepRAG将查询分解为子查询,并使用二叉树搜索进行数据合成,帮助模型更好地理解其知识边界。实验结果表明,DeepRAG显著提高了检索增强生成的准确性和效率。
不足与反思
-
局限性:尽管DeepRAG在大多数情况下表现出色,但在某些数据集上仍存在不足,特别是在时间敏感的CAG数据集上,DeepRAG的表现不如某些自适应检索方法。
-
下一步工作:未来的研究可以进一步优化DeepRAG的检索策略,特别是在处理时间敏感和多跳事实问答任务时,进一步提高模型的鲁棒性和准确性。
问答
问题1:DeepRAG是如何通过二叉树搜索方法构建推理路径的?
DeepRAG通过二叉树搜索方法构建推理路径,具体步骤如下:
-
子查询生成:对于给定的问题,模型首先生成第一个子查询,并探索两种回答策略:直接利用参数知识或检索外部文档。
-
路径探索:模型根据当前状态生成子查询,并根据预先设定的阈值或策略选择执行直接回答或检索外部文档。
-
递归分解:对于每个生成的子查询,模型继续递归地进行相同的操作,直到达到终止条件(如生成最终答案或达到最大迭代次数)。
-
数据合成:通过这种方式,DeepRAG不仅将问题分解为一系列前向依赖的子查询,还彻底检查了检索选择在最终答案中的影响。这种方法不仅提高了推理的连贯性,还确保了检索的有效性。
问题2:DeepRAG的模仿学习阶段是如何利用二叉树搜索合成数据的?
在模仿学习阶段,DeepRAG利用二叉树搜索合成数据的具体步骤如下:
-
优先队列初始化:使用优先队列来高效探索潜在的推理轨迹,优先队列中的元素按照检索成本进行排序。
-
路径构建与评估:模型从优先队列中取出当前路径,生成下一个子查询,并根据预先设定的阈值或策略选择执行直接回答或检索外部文档。然后,将新生成的路径和检索结果加入优先队列。
-
数据收集:重复上述过程,直到优先队列为空或找到一条生成正确答案的路径。最终收集到的路径包含了最小检索成本的推理过程。
-
模型微调:使用收集到的合成数据进行模型微调,优化模型的终止决策和原子决策,使其能够在实际生成过程中更有效地进行检索和推理。
如何学习大模型 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 的正确特征了。