Skip to content
预计 1 分钟右侧目录可快速定位

召回之后如何形成证据:Reranking、Threshold 与 Grounding ​

前置:语义搜还是关键词搜:Semantic、BM25 与 Hybrid Search
核心问题:初始检索返回几十个候选后,怎样筛成少量可信 evidence,并证明最终答案确实依据了这些证据?

一次召回结果怎样变成真正 Evidence ​

假设 Retriever 先拿到 50 个候选,其中真正相关的政策条款排在第 17。流程可以是:

text
candidate recall: top-50
→ reranker 重新排序
→ threshold 去掉低相关候选
→ final top-8
→ attach source/chunk/version provenance
→ ContextManager 注入 Evidence

如果第一阶段只取 top-10,正确条款根本没有进入 reranker;后面再强的模型也找不回来。这就是为什么 candidate recall、rerank 和最终 evidence selection 要分开评估。

Reranking:花更高成本把真正相关的候选排到前面 ​

Reranker 只处理第一阶段已经召回的小候选集,用 cross-encoder/LLM 等更昂贵方法重新估计 query-document 相关性。它主要改善 top positions,不负责补召回。

因此常见设计是“便宜 Retriever 扩大 recall,较贵 Reranker 缩小最终集合”,而不是让昂贵模型扫描整个语料库。

Top-K 与 Threshold:分别控制数量上限和最低质量 ​

Top-K 回答“最多留多少条”,score threshold 回答“低到什么程度宁可不填满 K”。二者共同影响 recall、precision、rerank 成本和 Context token。

短事实问题可能 top-3 已足够;跨文档比较可能需要更多 evidence。固定 K/threshold 可以作为 baseline,但最终应由真实 query 分布和 eval 决定,而不是认为“Context 还有空间就把 K 填满”。

Grounding / Citation / Provenance:证明答案依据了哪份证据 ​

Grounding 的底层事实不是“回答里出现一个链接”,而是 Evidence 能回到:

text
document / chunk id
source version
位置/span
当时实际进入 Context 的 evidence identity

Citation 是 provenance 的用户可见表现。如果文档更新后引用无法定位到当时真正使用的 chunk/version,这个引用就无法审计。

Failure Modes ​

Rerank 前候选过早裁剪 ​

后果: 正确证据没有进入候选集,reranker 无法补救。

处理: 分别调 candidate-K、rerank-K 与 threshold,并同时观察 recall、precision、latency。

Citation 不能回到实际 Evidence ​

后果: 看似有来源,但无法证明模型当时使用的是哪个版本/片段。

处理: Evidence 保留 source/chunk/version/span provenance,生成只能引用实际选入的 evidence。

如何验证 ​

场景必须成立
正确证据初始排名较低增大 candidate-K 后 reranker 有机会把它提升到最终集合
threshold 提高最终 evidence 变少,但不会用低质量候选强行填满 K
文档版本被替换citation validator 能识别旧 evidence/version,而不是指向当前同名文档

自测 ​

  1. 正确证据初始只排第 18,如果 candidate-K 在 rerank 前就截到 10,后面的 reranker 还能救回来吗?
  2. 最终答案引用了一个 chunk。除了“检索到了”,还需要保存什么 provenance 才能验证答案确实受该证据支持?

Sources ​

AI Engineering · Agent · Harness · Backend Systems