Adaptive RAG:从相似度检索到信息需求调度

RAG 的第一阶段很直观:把文档切块,向量化,按相似度取回若干段,再交给 LLM 生成答案。这个流程足够实用,但它默认了一个强假设:模型在生成前就知道自己需要什么信息。复杂问题里,这个假设经常不成立。

更值得关注的方向是 Adaptive RAG。它不是单纯换一个向量库,而是把检索变成生成过程中的调度动作:什么时候检索、检索什么、检索几次、是否改写查询、是否把证据图谱化,都由任务状态决定。

固定检索的问题

固定检索通常有三个隐性成本。

第一,召回时机固定。很多问题只有生成到一半才暴露信息缺口,提前检索会把上下文预算花在弱相关材料上。

第二,检索粒度固定。一个事实核验问题可能只需要一个段落;一个归因问题可能需要实体、关系和多跳路径。统一取 top-k chunk 会把不同类型的信息需求压成同一个接口。

第三,失败原因不清晰。答案错了,可能是查询写得差、召回不足、证据冲突、排序失败,也可能是生成阶段没有忠实使用证据。如果系统没有把这些阶段拆开记录,后续只能凭感觉调参数。

四类触发机制

Adaptive RAG 可以按触发机制拆开看。

显式 token 触发:Self-RAG 这类方法让模型生成控制标记,决定是否检索、是否继续、答案是否被支撑。优点是可解释性强,缺点是需要训练或 prompt 约束来保证控制标记稳定。

不确定性触发:当模型分布熵升高、候选答案分歧变大,或关键槽位没有依据时再检索。这类方法适合做轻量工程化,但要防止把语言模型的自信误当成事实可靠性。

信息需求触发:DRAGIN 这类思路更强调“当前生成需要什么信息”。它关心的不是泛泛的不确定,而是上下文里缺少哪类证据。

工作流触发:Agentic RAG 把检索作为工作流节点,与查询改写、工具调用、证据压缩、反思和答案校验组合。它的上限更高,但状态管理和日志要求也更高。

GraphRAG 的位置

GraphRAG 和 KG-RAG 解决的是另一个维度:检索对象不再只是文本块,而是实体、关系、社区摘要和路径。它特别适合需要跨文档归纳的问题,比如“某个技术路线为什么演化成现在这样”。

不过图结构不是免费午餐。构图质量、实体消歧、关系抽取、更新频率、图检索召回都会影响最终效果。工程上可以先把图当成证据组织层,而不是一开始就替换所有向量检索。

开源落地接口

一个可维护的 Adaptive RAG 系统,建议至少把接口拆成五层:

  1. query planner:决定原问题是否需要拆解;
  2. retriever router:选择向量检索、关键词检索、图检索或混合检索;
  3. evidence store:保留证据来源、版本、分数和路径;
  4. context composer:控制证据压缩、排序和上下文预算;
  5. answer verifier:检查答案是否被证据支撑。

这样做的价值是每一层都能单独评测。召回不够就看 retriever,证据过长就看 composer,答案跑偏就看 verifier,而不是把所有错误都归因给 LLM。

评测不要只看最终答案

Adaptive RAG 的评测应该拆成阶段指标:

  • 查询拆解是否覆盖必要子问题;
  • 召回证据是否包含关键事实;
  • 证据排序是否把关键材料放进上下文窗口;
  • 生成答案是否引用了正确证据;
  • 无证据时是否拒答或提示不确定。

如果只看最终答案准确率,很难知道系统是因为检索做对了,还是模型靠参数记忆猜对了。

小结

Adaptive RAG 的核心不是“多检索几次”,而是让检索成为可观测、可调度、可评测的动作。真正的工程分界线也不在向量库品牌,而在系统是否能回答:这次检索为什么发生,拿到了什么证据,证据如何进入上下文,答案为什么可信。

Retrieval decision log

Adaptive RAG should keep a decision log for every answer. A useful record contains the trigger reason, rewritten query, retriever type, top evidence, discarded evidence, final context window, and fallback path.

This log turns retrieval from a hidden prompt side effect into an auditable policy. When an answer is wrong, the error can be assigned to trigger timing, query decomposition, recall, reranking, context compression, or generation not following evidence. That split is more actionable than only judging the final answer.