跳到主要内容

03-RAG评测

核对日期:2026-05-13。

不稳定项:embedding 模型、rerank 模型、RAG 指标、评测框架、引用校验方法和向量数据库能力变化较快;评测结果必须绑定知识库版本、索引版本和检索参数。

1. 学习目标

本专题关注 RAG 的分层评测。RAG 出错不一定是模型问题,可能是文档缺失、检索失败、排序错误、上下文污染或引用不支持。

学完后你应该能做到:

  • 设计 RAG eval 样例和 golden source。
  • 分层评估检索召回、排序、上下文、答案和引用。
  • 区分 correctness 与 groundedness。
  • 评估拒答、权限过滤和文档冲突处理。
  • 用评测结果定位 RAG 失败根因。

2. RAG 分层

用户问题
-> query rewrite
-> retrieval
-> rerank
-> context build
-> generation
-> citation check
-> refusal / final answer

每层都可能失败。只看最终答案无法定位问题。

3. 样例字段

{
"id": "rag-001",
"question": "试用期员工可以报销差旅住宿吗?",
"gold_sources": ["travel-policy-2026#section-3"],
"expected_behavior": "根据制度回答并引用条款",
"must_refuse": false,
"tags": ["policy", "citation", "normal"],
"risk_level": "medium"
}

如果是拒答样例:

  • gold_sources 可以为空。
  • must_refuse 为 true。
  • expected_behavior 写清为什么拒答。

4. 检索评测

指标:

指标说明
recall@k正确证据是否在 top k
precision@ktop k 中相关证据比例
MRR第一个正确证据排名
nDCG排序质量
empty retrieval rate空召回比例

定位问题:

gold source 不在知识库 -> 数据问题
在知识库但没召回 -> retrieval 问题
召回但排名低 -> rerank 问题
进入上下文但答案错 -> generation 问题
答案对但引用不支持 -> citation 问题

5. 上下文评测

上下文不是召回越多越好。

指标:

  • context precision。
  • context recall。
  • 冗余 chunk 比例。
  • 冲突证据是否保留。
  • 权限过滤是否正确。
  • token 占用。

反模式:

  • top_k 过大,把噪声塞给模型。
  • 权限过滤发生在生成后。
  • 旧版本文档和新版本文档混用。
  • 文档中恶意指令没有隔离。

6. 答案评测

答案维度:

维度说明
correctness答案是否事实正确
groundedness答案是否被当前证据支持
completeness是否覆盖关键条件
citation coverage关键结论是否有引用
refusal accuracy无证据或无权限时是否拒答
conflict handling证据冲突时是否升级

Correctness 和 groundedness 不一样:答案可能事实正确,但没有被当前证据支持,这在 RAG 中仍然是失败。

7. 引用评测

引用要评:

  • 是否有引用。
  • 引用是否存在。
  • 引用是否可访问。
  • 引用是否支持该结论。
  • 引用版本是否正确。
  • 引用是否越权。

不要把“引用了某个文档”当成引用准确。引用必须支持具体结论。

8. 拒答评测

RAG 必须学会不知道。

拒答样例:

  • 知识库没有答案。
  • 用户无权限。
  • 文档冲突。
  • 问题过宽。
  • 请求敏感信息。

指标:

  • refusal accuracy。
  • over-refusal rate。
  • under-refusal rate。
  • clarification quality。

过度拒答会降低可用性,不足拒答会制造幻觉和安全风险。

9. 工程案例

9.1 制度问答 RAG

评测集:

  • 正常政策问题。
  • 旧版和新版冲突。
  • 无权限文档。
  • 没有文档的问题。
  • prompt injection 文档。

指标:

  • recall@5。
  • citation support。
  • refusal accuracy。
  • conflict detection。

9.2 代码文档 RAG

评测:

  • 是否召回正确模块。
  • 是否引用真实路径。
  • 是否区分 README 和源码。
  • 是否在源码缺失时拒答。

10. 常见反模式

反模式表现后果修正
只看最终答案不知道哪里错无法优化分层评测
top_k 越大越好噪声入上下文幻觉增多context precision
引用主题相关就算对引用不支持结论误导citation support
不评拒答无证据也答幻觉refusal eval
不记录索引版本分数不可复现无法回滚index version

11. 练习

为企业知识库 RAG 设计 20 条 eval:

  • 8 条正常问答。
  • 4 条缺文档拒答。
  • 4 条权限拒答。
  • 2 条文档冲突。
  • 2 条安全负例。

每条写出 gold source、must_refuse 和评分维度。

12. 验收题

  1. RAG 为什么必须分层评测?
  2. recall@k 和 citation support 分别解决什么问题?
  3. groundedness 和 correctness 有什么区别?
  4. top_k 过大有什么风险?
  5. RAG 拒答样例应该覆盖哪些场景?
  6. 为什么 RAG 评测必须记录索引版本?