ai · 2025 · 技术研究笔记
DeepRAG 论文解读:检索不应每一步都发生
检索与不检索不是系统开关,而是每一步推理都要做的决策
DeepRAG 把多步问答建模为检索决策过程,让模型在每个子问题上判断是否需要外部知识
研究版 · 6 个章节 · 约 7 分钟 · 更新于 2025-02-01
普通 RAG 接到问题后,往往先搜一批文档,再把检索结果与问题一起交给模型。对“某个产品的退款期是多少天”这类单步问题,路径很直接。
问题一旦需要多步推理,固定检索就开始暴露缺陷。某些中间事实必须从外部获得,某些则可以直接由已知条件推出。每一步都检索,会增加延迟和噪声;只在开头检索一次,后面又可能缺少关键事实。
DeepRAG 处理的就是这个决策问题:模型把原问题逐步拆成子问题时,怎样判断当前一步应使用参数知识,还是调用外部检索。参数知识是模型在训练中吸收并保留在权重里的信息。
它不是又一个检索器
DeepRAG 没有把主要精力放在向量库、切分策略或 reranker 上。Reranker 是对初次检索的候选文档重新排序的模型。这篇论文研究的是检索之前的决策层。
作者把多步检索增强推理表示成一个马尔可夫决策过程,简写为 MDP。MDP 用状态、动作和回报描述连续决策:
- 状态包含原问题、已生成的子问题和已获得的中间答案。
- 动作是对当前子问题选择“检索”或“不检索”。
- 回报同时考虑答案是否正确以及检索成本。
这个建模方式把“能搜就搜”改成了一个可以优化的决策序列。
第一步:用二叉树找训练路径
在每个子问题上,系统都可以选择检索或不检索。连续多步后,这些选择会形成一棵二叉树。
论文在训练数据构造阶段搜索这棵树,寻找能得到正确答案、同时检索次数较少的路径。找到的路径包含一组完整轨迹:
生成子问题 -> 决定是否检索 -> 得到中间答案 -> 继续拆解
然后使用模仿学习让模型学习这种轨迹。模仿学习是从已有的高质量行为序列中学习决策策略,而不是只给最终答案。
这里有一个容易被略过的成本:推理阶段省下的检索,是用训练阶段的树搜索和数据生成换来的。它不是免费得到的自适应能力。
第二步:校准模型的知识边界
模型最难判断的并不是“这个问题是什么领域”,而是“我对这个事实的记忆是否足以支撑当前答案”。这是知识边界问题。
DeepRAG 使用 Chain of Calibration 进一步校准这个边界。论文把检索与不检索的结果放在同一个子问题上对照,让模型学会区分:什么时候内部知识已经足够,什么时候继续硬答会导致错误。
从工程角度看,这比一个固定阈值的检索分类器更紧密地与推理过程结合。但它也意味着,换模型、换知识库或换问题分布后,原来学到的边界可能需要重新验证。
实验结果应怎样读
论文在 HotpotQA、2WikiMultihopQA、CAG、PopQA 和 WebQuestions 上测试,同时使用 Llama-3-8B 和 Qwen-2.5-7B 作为基础模型。作者报告 DeepRAG 在答案准确性上平均提升 21.99%,并减少冗余检索。
这个 21.99% 不应被改写成“任何 RAG 接入 DeepRAG 都会提升 21.99%”。它是在论文指定数据集、基础模型、检索环境和评估指标下得到的聚合结果。真实系统中的文档噪声、时效性和检索延迟可能与实验设置相差很大。
还要区分两类成本:
- 检索次数减少,会降低搜索、rerank 和上下文 Token 成本。
- 多步分解与决策仍需要模型调用,端到端延迟不一定与检索次数同比例下降。
对普通 RAG 项目有什么用
大多数团队没有必要立即复制论文的训练过程。更现实的第一步,是把现有 Agent 或 RAG 轨迹中的检索记录下来:
- 哪个子问题触发了检索。
- 检索结果是否真的被最终答案使用。
- 移除该次检索后,答案是否仍然正确。
- 没有检索的步骤中,哪些因缺少外部事实而失败。
先有这批轨迹,才能判断项目需要的是 DeepRAG 这类学习式策略,还是几条明确规则。例如,时间、价格、库版本和公司政策强制检索;算术运算交给确定性工具;只有当前事实不足时才扩展查询。规则能覆盖的场景,更容易解释和回归测试。
DeepRAG 真正有价值的地方,不是给 RAG 增加了更多步骤。它把一个常被隐藏的问题放到了系统中心:外部知识什么时候值得调用,又什么时候只会给推理增加噪声。
参考资料
版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。
(采用 CC BY-NC-SA 4.0 许可协议进行授权)
本文标题:DeepRAG 论文解读:检索不应每一步都发生
