Browse this library

Chinese source article

5.1 · 查询改写、多跳与自适应检索

从查询改写、多跳状态和停止决策出发,解释自适应检索怎样控制证据收益与成本。

View original Markdown ↗

生成器收到的是有限证据集合, 它的任务不只是回答, 还要维持回答与来源之间的可验证关系. 这要求输出协议能够区分来自证据的事实、对证据的推导和无法确认的内容. 当检索控制也交给模型时, 系统还要观察模型为什么继续检索或停止. 训练与评测围绕同一组状态展开, 才能避免最终分数掩盖中间错误.

1. 生成契约

1.1. 命题与证据

将回答分为原子命题 aia_i, 证据为 eje_j. 支持矩阵 MijM_{ij} 表示 eje_j 是否蕴含 aia_i. 一条引用可以支持多个命题, 一个命题也可能需要多条证据共同支持. 比较、因果和多跳结论尤其不能用相邻一段相关文本代替完整证据链.

生成前给证据分配请求内 ID, 模型只输出这些 ID. 服务端验证 ID 存在、版本仍有效并解析成来源链接. 这种设计把链接正确性从语言生成移到确定性代码. 模型仍负责选择哪条证据支持哪句, 该关系随后由规则、NLI、LLM judge 或人工检查.

无答案并非一种状态. 语料确实没有相关文档, 相关文档存在但信息不完整, 多个有效来源互相冲突, 用户没有权限, 问题缺少关键参数, 都需要不同响应. 原因分类有助于后续补语料、改检索或请求澄清.

拒答阈值通过同时含有可答和不可答样本的数据选择. 对每个阈值报告可答覆盖、正确拒答、错误拒答和无据硬答. 高风险场景可以牺牲覆盖降低无据回答, 普通知识问答可能选择另一工作点. 阈值属于任务配置, 不从 embedding 相似度的数值范围直接推导.

2. 学习检索与证据使用

2.1. Self-RAG 的控制信号

Self-RAG 让模型学习 reflection tokens, 表达是否需要检索、段落是否相关、生成是否被支持以及回答整体效用. 训练数据由生成器和 critic 产生监督, 推理时 reflection token 可用于筛选或加权不同生成路径. 与固定每次取 kk 段相比, 它把检索调用和证据判断纳入语言模型策略.

代价也很明确. 特殊信号的质量受 critic 影响, 推理路径增加检索与评分开销, 控制阈值改变质量—成本权衡. 即使模型判断「不需要检索」, 高风险任务仍可由外部策略强制检索. 模型控制与产品约束是两层状态, 不能由一个 token 覆盖权限和合规要求.

RAFT 构造带 oracle 文档和 distractor 文档的领域训练样本, 训练模型利用支持证据回答. 模型看到候选中的噪声, 学会从上下文识别有用内容. 它主要改善生成器使用证据的能力, 对线上召回器没有直接保证. oracle 缺席时, 再强的生成器也无法引用它.

训练数据要覆盖无答案、冲突和时效问题, 否则模型容易形成「上下文里一定有答案」的偏置. distractor 也不能只用随机无关文档, 应包含同主题不同版本、局部相关但缺少条件、数字接近和结论相反的难例. 这些样本正好对应线上最危险的误用方式.

3. 反馈回流

3.1. 反馈归因

用户点踩一条回答, 原因可能是语料过期、检索漏召、上下文噪声、生成误读、引用错误或表达不合适. 直接把点踩作为检索器负样本会混淆层级. 反馈界面和离线标注应尽量记录原因, 再落到对应组件的数据集.

点击同样带有位置偏差. 排名靠前的结果更容易被看见, 既有排序影响训练标签. 可以通过随机探索、反事实估计或人工审查降低偏差, 但探索不能突破权限和安全边界. 新策略先离线回放, 再走影子流量和小比例实验.

语料每天变化, embedding 和重排器却不必同步更新. 请求 trace 必须记录各组件版本, 才能将指标漂移归因. 新 embedding 需要重建向量索引, 新切分器改变证据身份, 新生成模型改变上下文利用方式. 多组件同时发布会让回归难以定位.

更新按单层实验推进: 固定生成器比较检索, 固定候选比较重排, 固定上下文比较生成, 端到端确认放在各层对照之后. 线上错误切片回流到相应层的数据集, 而不是全部堆进一个微调集合. 这种分层回流保留每个组件的可替换性.

4. 评测与上线

4.1. 自动评测的用途与边界

RAGAS 将评测拆成 context relevance、faithfulness 与 answer relevance 等维度, 适合快速回归. LLM judge 能处理开放文本, 同时会受提示、模型版本、答案长度和领域影响. 应从生产分布抽取人工校准集, 报告 judge 与人工的一致性及主要误差类型.

检索指标需要人工或可靠弱监督相关性标签. 生成正确率不能替代检索评测, 因为模型可能凭参数记忆答对;faithfulness 也不能替代事实正确性, 因为来源本身可能错误. 一次完整评测至少保留语料、检索、上下文、生成与系统五层结果.

硬门包括越权候选、删除残留、无效引用和敏感信息泄漏. 回归门覆盖 Recall、集合覆盖、答案正确、命题支持、拒答和关键业务切片. 预算门覆盖索引构建时间、内存、P95/P99 延迟、token 与外部调用成本. 硬门失败不允许用其他分数抵消.

线上监控需要把分布变化与故障分开. 查询语言、长度、实体类型和无答案比例变化会导致指标漂移;索引消费位点落后、重排超时和模型限流属于运行故障. 告警应指向具体层, 请求 trace 用于抽样复现. 只看最终成功率会让根因隐藏在平均值里.

5. 安全、训练与回滚

5.1. 文档中的指令没有控制权

网页、邮件和上传文档可能包含「忽略此前要求」或诱导工具调用的内容. 在 RAG 中这些内容是证据数据, 不能提升为系统指令. 生成器可引用和讨论它们, 工具执行仍由独立策略、参数 schema、权限与审批控制. 对文档做简单关键词删除无法覆盖变体, 权限分层才是主要防线.

语料投毒会通过重复页面、关键词填充和伪造权威来源操纵排序. 摄取阶段记录来源信誉与所有权, 检索阶段限制单一来源占位, 生成阶段保留出处并处理冲突. 评测集加入恶意引用、越权探测和资源耗尽请求, 与普通质量回归同时运行.

一次发布涉及语料快照、解析器、切分器、embedding、索引、重排器、提示和生成模型. 回滚清单要记录相互兼容的版本组合. 例如回滚 embedding 却保留新向量索引会直接失配;回滚语料却保留新缓存会继续返回新内容.

蓝绿索引允许新旧版本并存, 影子查询比较差异后再切换. 删除和权限变更不能因回滚恢复已撤回数据, 这类事件需要在各版本上强制重放. 可回滚指恢复服务行为, 不包括撤销安全和合规状态.

5.3. Self-RAG 的监督与推理路径

6.1. Generator 与 critic

Self-RAG 先训练 critic 为文本和回答产生 reflection token 标签, 再用这些标签增强 generator 的训练数据. 检索需求 token 判断当前步骤是否需要外部文档;相关性 token 判断取回片段是否有用;支持 token 判断生成内容能否由片段支持;效用 token 判断回答对任务是否有帮助. 四类信号落在不同位置, 不能收成一个笼统质量分.

训练 critic 时, 输入包含指令、候选证据与输出. Generator 随后学习普通文本与 reflection token 的联合序列. 推理遇到检索 token 时调用外部检索器, 对候选生成并读取相关性和支持信号. 检索器仍是独立模块, generator 学习调用时机和证据使用策略.

自动标签误差会沿训练传递. critic 把主题相关误判为事实支持, generator 就会给无依据回答较高支持信号;检索需求标签偏向总是检索, 自适应策略会退回固定 RAG 并增加成本. 四类标签需要分别抽查, 最终任务分数不能替代中间监督质量.

6.2. 路径选择与成本

一次生成可以走无需检索路径, 也可以触发多个候选. 对每个候选, 模型产生回答片段和 reflection tokens, 系统按任务给相关性、支持和效用分配权重. 事实问答强调支持, 开放任务更看整体效用. 权重和阈值在验证集选择.

候选数、检索轮数和 beam 数共同决定成本. 如果每条候选都继续生成长答案, 自反思会显著放大 token. 实现可以先用相关性信号淘汰候选, 再为少量路径生成. 外部最大调用数和超时仍然有效, 模型不能自行突破预算.

Self-RAG 的生成和评价来自同一模型家族时, 两种偏差可能相关. 线上仍需独立证据验证与人工抽样. Reflection token 提供可训练接口, 不等于可靠事实判定器.

7.1. Oracle 与 distractor

RAFT 样本包含问题、oracle 文档、若干 distractor 文档和带依据的答案. Oracle 能够支持答案, distractor 模拟检索候选中的噪声. 模型训练时识别 oracle 并利用证据, 比只用问题—答案 SFT 更接近部署输入.

Oracle 必须来自证据标注. 用答案字符串是否出现来筛选, 会漏掉释义和多跳支持, 也会把碰巧含同一字符串的文档当成 oracle. 对政策和时间问题, 旧版本可以成为高质量 distractor, 标签必须绑定语料时间.

Distractor 的难度要分层. 随机文档检验模型能否忽略明显噪声;同主题文档检验细粒度相关性;同实体不同数值、否定或版本检验条件判断. 训练集只有随机噪声, 模型面对线上高排误召时仍可能复制错误内容.

7.2. 推理依据与引用

训练答案可以包含从证据到结论的推理依据. 是否向用户展示完整 CoT 与训练格式是两件事. 监督要让模型找到关键跨度和限定条件, 部署输出可以只保留简洁解释与引用. 多个 oracle 共同支持结论时, 标签记录证据集合, 不强迫模型选择单一来源.

训练候选数量和部署差异过大, 会造成分布偏移. 部署候选很多而训练几乎全是 oracle, 模型容易复制前排;部署证据很少, 过多 distractor 训练可能让模型过度怀疑. 数据配比应参考线上候选相关等级.

RAFT 改善生成器利用候选的能力, 线上召回仍需独立验收. Oracle 没有进入候选时, 模型没有依据可用. 这一边界是区分检索训练与证据使用训练的关键.

6. 自适应控制与联合训练

8.1. Retrieval evaluator

CRAG 使用 retrieval evaluator 判断候选质量, 根据置信度进入可信、错误或模糊状态. 高质量候选进入知识精炼, 低质量候选触发额外搜索, 模糊状态组合多种来源. 它在生成前显式决定检索结果是否够用.

阈值误差会改变整个流程. 阈值过高导致频繁外部搜索, 过低则让错误候选进入生成. 验证集要覆盖领域内文档、过期版本、部分相关和真正无关. 知识精炼前后还要检查否定、时间和例外是否保留.

8.2. 三条路线的差别

RAFT 主要改变生成器训练数据, CRAG 增加推理时评价与纠正, Self-RAG 同时训练控制 token 并在推理使用. 从反馈对象看, RAFT 监督证据使用, CRAG 评价候选质量, Self-RAG 同时评价检索需求、相关性、支持与效用.

三者可以组合, 组合也会增加训练、推理和错误相关性. 比较时固定语料、检索器、生成模型规模与调用预算. 若基础配置不同, 无法判断收益来自方法还是更多外部搜索.

9.1. 文档作为潜变量

原始 RAG 将检索文档 zz 视作潜变量. RAG-Sequence 的形式为:

p(y∣x)=∑z∈top-k⁡(pη(⋅∣x))pη(z∣x)pθ(y∣x,z).p(y\mid x)=\sum_{z\in\operatorname{top-k}(p_\eta(\cdot\mid x))}p_\eta(z\mid x)p_\theta(y\mid x,z).

pηp_\eta 是检索器, pθp_\theta 是生成器. 文档边缘化让答案损失影响检索概率, top-k 截断意味着只有候选中的文档获得信号. RAG-Token 允许不同输出 token 对文档分布边缘化, 表达更灵活, 计算也更复杂.

现代 LLM RAG 常冻结两端, 用索引和 prompt 连接. 模块化降低训练成本, 也让答案损失无法直接修正检索器. 重新联合训练时要保留独立检索指标, 防止生成器凭参数记忆绕过证据后仍获得低损失.

9.2. 版本与 tokenizer

检索器和生成器可以使用不同 tokenizer. 文档切分长度要分别考虑 embedding 限制和生成上下文, 不能把一个模型的 token 数直接当另一个模型的预算. 更新检索器后重建向量索引;更新生成器后, 同一证据集合的利用也可能变化.

训练资产记录检索器、生成器、critic、切分器和语料版本. 联合实验先固定其他组件比较目标模块, 再做端到端确认. 同时更新全部模块即使分数上升, 也无法形成可复用结论.

6.3. 自适应系统怎样验收

10.1. 决策级指标

除最终答案外, 系统报告检索需求判断的 precision 与 recall、候选相关性判断、支持度校准、平均检索轮数和停止原因. 对无需检索的问题, 测额外调用率;对必须多跳的问题, 测过早停止率. 决策指标与成本共同决定策略是否优于固定流程.

每条路径保存原查询、触发 token 或 evaluator 输出、检索结果、精炼内容和生成答案. 回放时固定候选只比较控制器, 固定控制动作比较检索器, 固定证据比较生成器. 三种回放对应三类学习对象.

支持度如果输出连续分数, 还要做校准. 将样本按分数分桶, 比较预测支持与人工支持比例. 一个排序较好的分数未必能作为拒答阈值, 校准曲线给出它在不同风险工作点上的含义.

10.2. 质量—成本曲线

固定 RAG 的调用数稳定, 自适应策略应在相同质量下减少平均调用, 或在相同预算下提高证据覆盖. 同时报告平均与 P95/P99 轮数、检索延迟、生成 token 和外部搜索费用. 只报告答案提升会隐藏分支爆炸.

预算从一轮到多轮扫描, 查看边际收益. 如果第二轮主要修复多跳样本, 可以只对识别出的多跳状态开放;如果后续轮次几乎没有新增证据, 停止规则需要收紧. 工作点由任务损失和容量共同决定.

6.4. 反馈、失效与复现实验

11.1. 反馈先归因

用户点踩可能来自语料过期、检索遗漏、上下文噪声、生成误读、引用错误或表达不合适. 标注界面尽量记录原因. 语料问题进入摄取队列, 召回问题形成 query-document 样本, 证据误用进入生成训练, 控制错误形成状态—动作样本.

点击与停留时间受位置和界面影响. 高排来源更容易被点, 未点击来源不一定不相关. 行为信号用于发现样本与估计体验, 不能未经校正直接作为事实标签. 高风险样本由来源与人工确认.

11.2. 影子运行与回滚

新策略先离线回放, 再在影子流量上产生决策但不影响用户. 比较检索次数、路径分布、证据覆盖和成本. 达到门槛后小比例放量, 并为长尾调用设置熔断.

回滚包含模型、reflection token 配置、evaluator、阈值、最大轮次和外部搜索源. 新版本产生的反馈保留版本标签, 不直接混入旧策略训练集. 文档删除和权限变化在回滚前后都继续生效.

12.1. 自信地跳过检索

模型对参数记忆中的旧知识很自信, 可能判断无需检索. 回归集要包含时间敏感事实和已更新规则. 产品层可对明确时效、高风险和需要引用的任务强制检索, 不完全依赖模型 token.

另一个极端是所有问题都检索. 这种策略可能保持质量, 但失去自适应的成本收益. 无需外部知识的写作、翻译与给定文本改写进入负例, 检验模型能否省略调用.

12.2. 错误第一跳持续扩散

多跳检索若第一轮识别错实体, 后续查询会围绕错误证据继续搜索. 每轮新查询同时参考原问题和已验证证据, 未通过相关性检查的候选不进入状态. 实体歧义时先澄清或并行保留少量候选.

反复改写却没有新增支持也是常见循环. 控制器记录证据集合的新增覆盖, 连续两轮没有新增则停止. 停止后根据已有证据部分回答或拒答, 不继续消耗预算.

7.3. 一组可复算的控制状态

13.1. 三步查询

假设任务需要证据槽位 G={g1,g2,g3}G={g_1,g_2,g_3}. 第一轮覆盖 g1g_1, 控制器生成针对 g2g_2 的查询;第二轮覆盖 g2g_2, 同时发现 g3g_3 所需的中间实体;第三轮覆盖 g3g_3. 每轮记录已覆盖集合 CtC_t, 新增量 Δt=Ct∖Ct−1\Delta_t=C_t\setminus C_{t-1} 与剩余预算.

停止规则可以是所有槽位覆盖、预算耗尽, 或连续两轮 ∣Δt∣=0|\Delta_t|=0. 该规则由外部编排执行, 模型负责提出查询和证据判断. 第一轮候选未通过相关性时, 它不进入 CtC_t, 也不成为下一轮唯一依据.

13.2. 动作评价

固定每轮候选, 人工标记继续、停止、澄清和拒答的合理动作. 控制器输出与标签形成混淆矩阵. 继续过多表现为成本上升, 停止过早表现为证据缺口, 错误拒答降低覆盖, 未澄清容易造成实体漂移.

动作级评测可以发现最终答案偶然答对的错误路径. 即使生成器凭参数记忆补出答案, 证据槽位未覆盖仍记为控制失败. 这条规则保持 RAG 的可核验目标.

自动生成 query 时, 检查答案是否由指定 oracle 支持、问题是否泄漏答案、distractor 是否真的不支持结论. 多跳样本还要验证各跳能够连接, 不能把几篇分别相关的文档拼成虚假证据链.

训练集按来源和时间去重. 同一文档的改写问题不能横跨训练与测试. 自动标签、人工修正和模型版本一起保存, 方便标签策略变化后重新构造.

训练完成后先在固定候选上测证据使用, 再接真实检索器. 如果固定候选改善而端到端无变化, 瓶颈仍在召回或控制;如果端到端提高但支持率下降, 模型可能增加了无依据补全.

  • Lewis et al., RAG, 2020.
  • Petroni et al., KILT, 2021.
  • Es et al., RAGAS, 2023.
  • Asai et al., Self-RAG, 2023.
  • Zhang et al., RAFT, 2024.

7.6. HyDE 与生成中触发检索

HyDE 先让语言模型生成一段假设文档, 再编码假设文档去搜索真实语料. 它改变查询表示的位置: 生成文本提供可能出现在答案文档中的语义和术语, 检索器仍返回真实文档. 假设内容不能作为证据, 其中错误实体和数字也可能把向量引向错误区域, 因而原查询的稀疏分支应保留.

设原查询向量为 eqe_q, 生成 mm 个假设文档向量 ehie_{h_i}, 可用平均 eˉh=1m∑iehi\bar e_h=\frac1m\sum_i e_{h_i} 检索, 也可以分别检索后融合. 手算中三个假设对目标文档的余弦为 0.72、0.68、0.20, 直接平均会受第三个漂移样本拖累; 分支检索后按排名融合更容易观察每个假设的贡献.

FLARE 把触发点放到生成过程中. 模型继续生成, 当即将产生的内容置信较低时, 用相关片段构造查询并补充证据, 随后继续输出. 它适合答案后半段才暴露信息需求的场景, 代价是 token 级置信与事实不确定性并不等价, 多次触发还会增加尾部延迟.

query rewrite 在首次召回前改变输入, HyDE 在首次召回前生成检索代理, Self-RAG 在生成动作中决定是否检索和评议, CRAG 在取得候选后判断质量并纠正, FLARE 在生成途中根据低置信片段再次检索. 把控制位置分开后, 同一问题不必叠加全部方法.

停止条件由覆盖、边际新证据和预算共同决定. 对多跳问题保存待解决子目标 UtU_t, 新一轮证据覆盖集合 CtC_t, 当 Ut∖Ct=∅U_t\setminus C_t=\varnothing 时可以停止; 若连续两轮没有新增支持命题的证据, 即使预算尚余也应结束或拒答. 最大轮数、token、延迟和外部调用数提供硬上限.

实验固定基础检索器, 比较单次检索、固定两轮与自适应策略. 同时报告答案、完整证据组覆盖、平均及 P95 轮数、重复查询率和停止错误. 自适应策略若只改善少数复杂问题, 可以由问题分类器路由, 避免所有请求承担循环成本.

多跳检索可以写成一个部分可观测决策过程。第 tt 轮状态不是聊天文本本身,却是 st=(q0,Q1:t,E1:t,Ct,Bt)s_t=(q_0,Q_{1:t},E_{1:t},C_t,B_t):原问题、历史查询、已取得的证据、尚未闭合的命题槽位和剩余预算。动作集合包含生成新查询、扩大或收紧过滤、读取某个候选、停止并回答、停止并拒答。一次动作后的观测是新候选及其来源、版本、分数和可支持命题。把状态显式化后,系统才能区别“没有搜到”与“已经搜到但尚未证明”,也不会让模型凭一段自由文本暗自改变目标。

以“签署 A 协议时的负责人后来去了哪家公司”为例,第一跳只能由协议找到负责人林某,第二跳才能用“林某 任职”寻找公司。状态初始有两个槽位:负责人 和 后续公司。第一轮查询命中协议后,前者闭合,控制器据此生成带实体的第二轮查询;若第一轮只命中介绍 A 协议的二手新闻,却没有签署人,直接搜索“后续公司”没有锚点,应继续补第一槽位。固定两轮策略常把“轮数已满”误当成“推理已闭合”,而状态机以槽位和证据关系决定是否完成。

查询改写的目标不是让句子更流畅,却是提高目标证据进入候选集的概率。可将一次改写 rr 的效用写成

U(r)=Pr⁡(E∗∩R(r)≠∅)−λ∣R(r)∣−μD(r,q0),U(r)=\Pr(E^*\cap R(r)\neq\varnothing)-\lambda |R(r)|-\mu D(r,q_0),

其中 E∗E^* 是支持证据,R(r)R(r) 是返回集合,DD 衡量改写偏离原意的风险。删除时间、主体或否定条件往往会提高表面召回,却同时增大 DD。原问题“2024 年仍适用于欧洲子公司的退款上限是多少”若被改成“退款政策”,候选更多但条件被抹掉。合格改写要保留 2024、欧洲子公司、上限 三个约束,并只扩展同义词,如“退款额度/最高退款金额”。

多路改写还需要控制相关性。若生成五个近义查询,每路 top-20 看似得到一百项,去重后可能只有二十四项。设第 ii 路独有有效证据数为 gig_i,执行成本为 cic_i,可按边际比率 gi/cig_i/c_i 增量选择,而不是固定发出全部改写。历史日志中,“退款上限”和“最高退款金额”重合率 85%,后者仅新增一条有效证据;“欧洲子公司 2024 例外条款”重合率 30%,新增六条。预算只允许再发一路时应选后者,即使语言模型给前者更高的自然度分。

停止决策比较继续检索的期望价值与成本。令当前回答风险为 L(st)L(s_t),执行动作 aa 后的期望风险为 E[L(st+1)∣st,a]\mathbb E[L(s_{t+1})\mid s_t,a],当

max⁡a{L(st)−E[L(st+1)∣st,a]}≤csearch+clatency\max_a\{L(s_t)-\mathbb E[L(s_{t+1})\mid s_t,a]\}\le c_{search}+c_{latency}

时停止。这里的风险同时包括错误回答和不必要拒答。仅看模型置信度会失效:模型可能对缺证据的常识补全很自信。更可靠的特征包括未闭合槽位数、证据间矛盾、最近一轮独有命中、引用覆盖以及查询是否重复。继续动作必须预先存在可描述的缺口;如果控制器说不出下一轮要补哪个命题,继续搜索通常只是消耗预算。

一组可复算的例子说明阈值怎样工作。初始检索成本按 1 计,错误回答损失为 20,拒答损失为 4。第一轮后完整证据概率为 0.55,回答的期望损失为 0.45×20=90.45\times20=9;预测第二轮能把概率提高到 0.82,检索后损失为 1+0.18×20=4.61+0.18\times20=4.6,应继续。第二轮后预测第三轮只能从 0.82 提到 0.85,新增动作总成本为 1.5,继续后的总损失为 1.5+0.15×20=4.51.5+0.15\times20=4.5,相对当前 3.63.6 反而更差,应停止。若关键槽位仍空,系统不应回答,而在“澄清”与“拒答”之间比较损失。

停止标签不能由最终答案倒推,否则训练数据泄漏了推理后信息。应在每个历史状态截断轨迹,让标注者只看当时已有证据,判断继续、回答、澄清或拒答。正轨迹也要插入无收益检索、同义重复和冲突来源,使控制器学会停止;若训练集中每次继续都得到新证据,模型会上线后机械地搜满预算。相反,若数据只保留最短成功轨迹,它又学不会在召回失败时换实体、时间或关系表达。

自适应检索的消融至少拆开四项:是否状态化槽位、是否允许查询重写、是否学习停止、是否使用成本项。某测试集有 1000 题,其中 650 题单跳、250 题双跳、100 题不可回答。单次检索答对 690 题,平均 1.0 轮;固定三轮答对 775 题,平均 3.0 轮;无成本的自适应策略答对 790 题,平均 2.7 轮;带成本和槽位的策略答对 786 题,平均 1.54 轮。最终一种少四题,却把检索调用减少约 43%,并将不可回答题的虚构答案从 31 降到 12。若只报告准确率,会错误选择无成本策略。

反例要覆盖错误实体接力和证据循环。第一跳同时出现同名的两位“林伟”,控制器若只把名字带到第二跳,就可能把甲的协议与乙的履历拼接成完整但虚假的链。状态中应保存实体消歧属性和证据边,例如 (林伟, 员工编号, 314),第二跳必须继承这些约束。另一个反例是搜索结果反复引用同一篇源文;五个网页不等于五份独立证据。来源谱系去重后若只剩一个根节点,冲突检查和置信度都不能按五票计算。

离线评测同时测单轮改写保真、每跳证据召回、完整链覆盖、停止后悔和单位成本收益。停止后悔定义为实际动作价值与事后最优动作价值之差,但事后最优只用于评测,不能成为在线特征。线上记录每轮状态摘要、动作、候选差集、预算和停止理由,并对同一索引快照重放。只有这样才能定位答案下降来自查询漂移、某跳漏召、错误停止还是生成器没有使用已经到手的证据。

查询改写还要区分扩展与分解。扩展保持一个目标,只增加别名、缩写或词形;分解则把复合问题变成存在依赖的子问题。对“收购完成后两家公司适用哪套休假制度”,先查收购完成日和存续主体,再按日期查制度,不能并行生成两个无条件子查询后拼答案。依赖图中的边表示后一个查询需要前一个结果填槽,调度器只执行入边已满足的节点。若某节点得到多个候选实体,状态应保留分支与各自证据,不要过早压成一个名字。

分支搜索可用束宽限制成本。每轮保留累计支持分最高的 bb 条路径,路径分数由证据支持、来源质量、矛盾和调用成本组成。束宽为 1 容易因首跳歧义走错,束宽过大则组合爆炸。某题首跳有甲 0.55、乙 0.45 两个实体,甲路径第二跳最大支持 0.20,乙路径达到 0.90;贪心最终得 0.11,束宽 2 可保留得分 0.405 的乙路径。消融应按实体歧义切片比较束宽,而非让所有简单题承担同样成本。

线上阈值还需随风险分级。内部导航问题答错代价低,可在证据覆盖稍低时停止;财务、法律或权限结论要求关键槽位全部闭合,并对冲突来源强制拒答。风险等级来自调用方声明和任务类型,不由模型阅读答案后自行判断。每级阈值、最大轮数和允许动作进入版本配置,保证相同状态在回放时得到相同控制决定。