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@k | top 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. 验收题
- RAG 为什么必须分层评测?
- recall@k 和 citation support 分别解决什么问题?
- groundedness 和 correctness 有什么区别?
- top_k 过大有什么风险?
- RAG 拒答样例应该覆盖哪些场景?
- 为什么 RAG 评测必须记录索引版本?