跳到主要内容

召回回归测试

AI 知识库改版后,怎么做 RAG 召回回归测试?

用版本化黄金评测集,对比语料、Embedding、切块、混合检索或 reranker 改动前后,是否仍能召回预期来源

Qi-Xuan Lu更新 8 分钟阅读

文章封包

01

Workflows

02

正在更换 AI 知识库语料、Embedding、切块、混合检索或 reranker 的开发者

03

8 分钟阅读

01

改检索前,先固定代表性问题与预期来源

02

一次改一个因素,先对比召回,再评估生成回答。

03

逐条检查退步案例,原因没查清前保留回滚能力。

01

先说结论

要验证 AI 知识库改版后的检索质量,先建立一份有版本的黄金评测集:每题记录自然提问、预期 source ID 或文档、无答案案例与基准配置。改动一项语料或检索因素后,重跑同一批问题,先对比召回结果,再检查丢失或新增的来源,差异能够解释才接受新版本。

这和引用校验不同。引用校验从一个已经生成的回答出发,检查来源是否支持每个主张;召回回归测试发生在生成之前,确认改版后是否仍能取回原本应该出现的证据。

02

哪些改动之后要重跑?

新增、删除或更新来源文档,更换 Embedding,调整 chunk size、metadata filter、BM25 与向量权重、top-k 或 reranker,都可能让部分问题变好,却让另一些问题找不到原来的证据。不要只用一道 demo 题判断整体成功。

  • 收录常见真实问题、已知失败、边界案例,以及知识库不应该回答的问题。
  • 每个预期结果旁保留权威来源版本,来源真的改变时才明确更新标签。
  • 新系统与黄金答案不同时,先调查原因,不要直接把新结果 bless 成正确。

03

黄金评测集至少记录什么?

每个案例需要稳定 ID、用户自然问题、预期来源、禁止出现的来源、是否允许无答案,以及这道题为什么重要。语料版本与检索配置要单独保存,否则两次结果无法公平比较。

最小黄金案例

version: 1
corpus_revision: docs-2026-08-26
cases:
  - id: windows-installer
    query: Windows 桌面版应该下载哪个文件?
    expected_sources: [release-v0.16.0]
    excluded_sources: [runtime-zip]
    no_answer: false
  - id: enterprise-price
    query: 企业版价格是多少?
    expected_sources: []
    no_answer: true

04

固定基线,一次只改一个因素

记录语料 revision、Embedding 模型、切块参数、filter、混合检索权重、reranker 版本、top-k 与运行环境。能一次只改一项最好;同时改很多项时,测试也许看得出 drift,却无法指出原因。

先对比 source-level Recall@k 或 Hit@k;排序重要时再看 MRR 或 NDCG。无答案案例与 latency 要分开保留,不要把所有数字合成一个分数,掩盖关键来源消失。

05

先查召回失败,再看回答好不好

对每个失败案例,依次检查 query rewrite、召回片段、分数、source ID、filter、融合结果、reranker 与最终排序。把文档缺失、错误标签、提取失败、metadata filter、Embedding drift、切块边界与 reranker 变化分开。

预期来源本身也可能标错;反过来,整体平均分数很好,也可能漏掉一个高风险问题。只有预期证据确实被取回后,才继续评估 grounding、回答质量与引用。

06

诚实使用 Wenlan 的 maintainer drift test

Wenlan repository 维护了带标签的检索 fixtures、仅针对 retrieval 的 Recall@5、MRR、NDCG@10 快照、固定 ranking goldens,以及 main canary 使用的 ignored drift test。它检测的是相对可信基线的漂移,不是绝对正确性。

这是 Wenlan 维护者工作流,不是已发布的 `wenlan eval` 用户命令,也不是 hosted CI 功能。即使不用 Wenlan,你仍可把黄金评测集、来源版本与回滚决策保存在自己的 repository。

仅供 Wenlan repository 维护者使用

cargo test -p wenlan-core --lib \
  eval::retrieval_drift::tests::ranking_drift_vs_golden \
  -- --ignored --nocapture

先固定一份召回基线

选择代表性项目问题,记录预期来源与版本,再开始更换 Embedding、切块或 reranker。

FAQ

RAG 黄金评测集需要准备多少题?+
先覆盖重要来源、常见问题、已知失败与无答案行为。少量但经过人工验证的案例,比大量错误标签更有用;之后再从真实失败持续补充。
语料改变后,可以直接更新黄金答案吗?+
只有权威来源契约确实改变时才更新。先对照新旧来源、记录理由并创建新版本,不能因为新召回结果不同就静默 bless。
召回回归测试通过,就代表回答一定正确吗?+
不代表。它只证明测试范围内的检索符合契约;生成质量、引用是否支持主张,以及来源本身是否正确,都要单独检查。