Adaptive RAG(二):Retrieval Gate 怎么判断该不该检索
上一篇把 Adaptive RAG 的问题收束到一个工程动作:先做显式 retrieval gate。它不是为了替代 Self-RAG、FLARE 或 DRAGIN,而是先给系统建立一个可观测的判断层:当前状态到底该不该检索。
这篇继续往下走,讨论 retrieval gate 应该吃什么信号、输出什么结论,以及怎么评测它。
要解决的问题
不要把低置信度直接等同于检索需求。低置信度可能来自语言表达困难、格式约束复杂、候选答案接近,也可能只是模型在一个不需要外部事实的问题上犹豫。
反过来,高置信度也不代表答案被证据支持。模型可以非常自信地复述一个错误事实。
所以 retrieval gate 的判断目标应该是 evidence gap,而不是 confidence gap。它要回答的是:继续生成前,当前结论是否缺少外部证据、是否需要查证、是否存在冲突材料,以及检索的收益是否超过成本。
主线判断
Retrieval Gate 的主线不是训练一个更聪明的二分类器,而是建立一条检索责任边界。
Gate 必须解释为什么查、查什么、何时不查,以及失败后如何降级。只要这些信息没有被记录,后面再强的 retriever 和 reranker 都只能修补局部效果,无法回答系统级问题:这次错误到底是不该检索、没检索、query 错了,还是证据接入错了。
最小抽象
一个可用的 retrieval gate 不应该只看最后一段 prompt。输入可以分成四层:
- 任务层:是否要求事实核验,是否有时间、版本、实体等易变信息;
- 状态层:当前子问题是什么,已有证据覆盖了哪些结论;
- 模型层:候选答案是否分歧,关键槽位是否缺失;
- 成本层:延迟预算、上下文窗口、检索次数和 rerank 成本。
输出也不能只是 yes/no:
1 | { |
这里的 reason_code 是优化入口。它能把失败分成不该检索却检索、该检索却没检索、query intent 错、证据要求过宽、成本预算过紧或 fallback 不合理。
工程闭环
Gate 之后通常接 query builder。这里要避免把模型尚未验证的猜测直接写进 query。模型猜出的实体应该标记成 assumption,而不是事实。
评测 gate 时,需要单独标注 should_retrieve、触发原因、实际决策、检索后证据是否支持答案,以及最终答案是否因检索改善。核心指标包括 trigger precision、trigger recall 和 support gain。
要警惕一个假阳性:检索发生了,答案也对了,但证据并没有支撑答案。这个样本不能算 retrieval gate 成功,因为系统只是多走了一步碰巧没有坏掉。
设计取舍
Retrieval Gate 的训练信号有三种来源。第一种是人工标注,直接标出某一步是否需要检索;它最清晰,但成本高。第二种是弱监督,根据答案是否依赖外部证据、检索后是否改善、无检索是否出错来反推标签。第三种是在线反馈,把引用证据、回退和人工修正变成 gate 的长期信号。
工程上更常见的是混合策略:先用规则保护高风险场景,再用弱监督扩大样本,最后用人工抽检校准边界。不要一开始就把 gate 完全交给模型,因为 gate 的错误会改变后续上下文,错误样本也会变得难以解释。
证据预算也要和 retrieval gate 绑定。retrieve=true 不代表无限拉文档。gate 应该同时输出预算:查几个 query、每个 query 取几段、是否需要 rerank、是否需要二次检索。这样检索才是有成本意识的动作。
评测矩阵
Retrieval Gate 的评测不能只看最终 QA 分数。至少需要 trigger precision、trigger recall、unnecessary retrieval rate、evidence support rate 和 answer attribution rate。
trigger recall 低说明 gate 太保守;trigger precision 低说明检索噪声多;evidence support rate 低说明 query 或 retriever 有问题;answer attribution rate 低说明生成层没有正确使用证据。把这些指标拆开,才能知道下一步该调 gate、改 query、换证据组织,还是修生成模板。
失败归因
最典型的坏 gate 有三种。第一种是焦虑型 gate,一不确定就查,导致系统成本高、上下文噪声多。第二种是自信型 gate,模型语言很流畅,却在缺事实时跳过检索。第三种是追随型 gate,根据已经生成的错误中间结论继续检索,把错误路径越走越深。
排查时不要只看最终答案。要回放每一次 gate 输入、gate 输出、query、证据和生成片段。只要能定位到该查没查、不该查却查、query 写错还是证据没用上,Adaptive RAG 才具备可迭代性。
小样本推演
一个回答生成到中途时出现了三个信号:实体名称含糊、已有证据相互冲突、继续生成会给出具体数字。一个可用的 gate 会输出类似 entity_ambiguous + evidence_conflict 的 reason code,并把 query 限制在“澄清实体”和“验证冲突事实”上。
如果 gate 只看到低置信度就触发全文检索,结果可能召回很多相似段落,却没有解决实体歧义。这样的检索看起来勤奋,实际是在把不确定性扩散到更大的上下文。
直接结论
retrieval gate 的价值不是让 Adaptive RAG 看起来更复杂,而是把检索从隐式 prompt 技巧变成显式责任边界。它负责判断何时查证、为什么查证、查什么、查到什么程度,以及失败时如何降级。
当 gate、query builder、retriever、reranker、evidence validator 都有日志和指标时,RAG 才能进入真正的工程迭代。否则每次效果波动都只能归因给“模型不稳定”。