RAG 评测指标速查表
RAG 指标大体分为四层:
Retriever 是否找得到
↓
Context 是否完整、干净
↓
Generator 是否答对、忠于证据
↓
整个系统是否安全、快速、经济
传统检索指标通常通过人工标注的相关文档直接计算,不需要 LLM Judge;当前 NVIDIA 的 Retriever 评测就包括 Precision、Recall、nDCG、MAP、Reciprocal Rank 和 Success@k。Ragas、AWS 和 Databricks 则补充了 Context、Groundedness、Correctness、Citation 等面向完整 RAG 的指标。
@k表示:只检查检索结果的前k个,例如Recall@10就是只看前 10 个结果。
一、检索与排序指标
| 指标 | 它为什么重要 | 大概怎么算 |
|---|---|---|
| Hit@k / Success@k | 判断前 k 名里是否至少找到了一条正确证据,适合单证据问题 | Top-k 中存在至少一个相关结果记为 1,否则为 0;对所有问题取平均 |
| Recall@k | 判断必需证据有没有被漏掉,是 RAG Retriever 最重要的基础指标之一 | Top-k 中找到的相关证据数 ÷ 所有应该找到的相关证据数 |
| Precision@k | 判断检索结果中有多少是真正有用的,反映噪声大小 | Top-k 中相关结果数 ÷ k |
| MRR | 判断第一个正确结果出现得有多靠前,适合“找到一个权威答案即可”的问题 | 找到第一个相关结果的排名,取其倒数;例如第 2 名就是 1/2,再对所有问题平均 |
| MAP@k | 同时关注多个相关结果是否被找到、是否排得靠前 | 每出现一个相关结果,就计算当时的 Precision,最后对这些 Precision 和所有问题取平均 |
| nDCG@k | 不仅判断是否相关,还能区分“核心证据、辅助证据、部分相关”,特别适合评估 Reranker | 给结果标注不同相关性等级;越重要、排名越靠前,贡献越大;再和理想排序比较 |
| All-Evidence@k | 判断多跳问题所需的完整证据链是否全部被找到 | 所有必需证据组都进入 Top-k 时为 1;缺少任何一组就是 0 |
| Document Recall@k | 判断是否找到了正确文档,适合先定位问题是在文档级还是 Chunk 级 | Top-k 中命中的正确文档数 ÷ 应命中的正确文档数 |
| Evidence/Chunk Recall@k | 判断正确文档内部真正支持答案的段落是否被找到 | Top-k 中命中的 Golden Evidence Chunk 或证据范围 ÷ 全部必需证据 |
快速理解
Hit@k:
有没有找到至少一条?
Recall@k:
应该找到的证据,找到了多少?
Precision@k:
找回来的结果中,有多少是真的有用?
nDCG@k:
最重要的证据有没有排在最前面?
All-Evidence@k:
完整证据链是否全部找齐?
All-Evidence@k 是很实用的工程自定义指标,但不像 Recall、nDCG、MAP 那样具有统一的标准名称。设计时最好按“证据组”标注,允许多个等价证据满足同一个要求。
二、Context 上下文质量指标
传统 Retriever 指标一般依赖人工标注的相关文档;Context 类指标则经常使用参考答案或 LLM Judge,判断最终交给生成模型的 Context 是否干净、完整和足够。
| 指标 | 它为什么重要 | 大概怎么算 |
|---|---|---|
| Context Precision | 判断最终 Context 中噪声是否过多,以及相关 Chunk 是否排在前面 | 逐个判断 Chunk 是否有用;相关 Chunk 越多、越靠前,分数越高 |
| Context Recall | 判断参考答案需要的事实是否都能在 Context 中找到 | 将参考答案拆成事实声明,计算其中有多少能被检索 Context 支持 |
| Context Coverage | 与 Context Recall 接近,强调 Context 是否覆盖了标准答案所需信息 | 被 Context 覆盖的标准答案信息 ÷ 标准答案所需的全部信息 |
| Context Relevance | 判断检索内容是否真的和用户问题有关 | 通常让 LLM Judge 对每个 Chunk 与问题的相关程度评分,再取平均 |
| Context Sufficiency | 判断现有 Context 是否已经足够生成完整答案 | 根据 expected_facts 或标准答案,判断 Context 能否支持完整回答,通常使用二值或分级评分 |
| Context Noise Ratio | 判断多少 token 被无关内容占用,关系到效果、延迟和成本 | 无关 Context token 数 ÷ Context 总 token 数 |
| Duplicate Context Rate | 检查同一信息是否被重复塞给模型,避免重复偏置和浪费 token | 重复或高度相似 Chunk 数 ÷ 最终 Context Chunk 总数 |
Context Recall 和 Recall@k 的区别
Recall@k:
基于人工标注的相关文档或证据 ID 计算。
Context Recall:
基于参考答案中的事实,判断这些事实是否能从 Context 获得支持。
三、答案生成质量指标
| 指标 | 它为什么重要 | 大概怎么算 |
|---|---|---|
| Answer Correctness | 判断最终答案在事实和结论上是否正确,是最直接的结果指标 | 将答案与标准答案或 expected_facts 比较,计算正确事实比例,或由 LLM Judge 按 Rubric 评分 |
| Faithfulness / Groundedness | 判断回答是否忠于检索证据,用来发现幻觉 | 将回答拆成事实性断言,计算其中有多少能被 Context 支持 |
| Completeness | 防止答案虽然正确,但只回答了问题的一部分 | 标准答案要求的必要事实中,实际答案覆盖了多少 |
| Answer Relevance / Response Relevancy | 判断答案是否真正回应用户问题,而不是正确但跑题 | 判断答案内容与用户意图的相关程度,并惩罚无关、重复内容 |
| Helpfulness | 判断答案是否能真正帮助用户完成任务 | 通常由人工或 LLM Judge 根据实用性、清晰度和可执行性综合评分 |
| Logical Coherence | 判断答案内部是否存在矛盾、逻辑跳跃或前后不一致 | 按 Rubric 检查答案逻辑是否完整一致 |
| Exact Match | 适合型号、日期、数值、枚举值等答案固定的场景 | 系统答案与标准答案标准化后完全相同则为 1,否则为 0 |
| Fact-level Accuracy | 比整段文本相似度更适合企业 RAG | 将答案拆成多个事实,统计正确事实数 ÷ 被评测事实总数 |
Correctness 和 Faithfulness 不一样
Correctness:
答案在现实或标准答案中是否正确?
Faithfulness:
答案是否能从检索 Context 中得到支持?
可能出现:
答案正确,但没有 Context 支持
→ 可能是模型靠自身记忆猜对
答案忠于 Context,但答案错误
→ 可能是知识库文档已经过期或本身有误
四、引用质量指标
| 指标 | 它为什么重要 | 大概怎么算 |
|---|---|---|
| Citation Precision | 防止引用虽然存在,但实际上不能支持对应断言 | 能正确支持相应断言的引用数 ÷ 全部引用数 |
| Citation Coverage / Citation Recall | 防止只给少量正确引用,但大量事实没有引用 | 带有有效引用的事实性断言数 ÷ 所有需要引用的断言数 |
| Citation Validity | 检查引用是否真实存在、链接和页码是否有效 | 有效引用数 ÷ 全部引用数 |
| Citation Entailment | 判断被引用原文是否真的能够推出答案中的结论 | 对每组“断言—引用”进行支持、不支持或矛盾判断 |
例如:
答案包含 10 条事实
只引用了其中 2 条,而且这 2 条都引用正确
Citation Precision = 很高
Citation Coverage = 很低
五、拒答与可回答性指标
只评测“回答得好不好”不够,还要评测系统是否知道什么时候应该拒答。
| 指标 | 它为什么重要 | 大概怎么算 |
|---|---|---|
| Refusal Accuracy | 判断系统是否在正确的场景拒答 | 正确回答或正确拒答的案例数 ÷ 全部案例数 |
| Unsupported Answer Rate | 衡量文档没有证据时,系统仍强行回答的比例 | 不可回答问题中,被系统强行回答的数量 ÷ 不可回答问题总数 |
| Over-refusal Rate | 衡量明明有充分证据,系统却拒绝回答的比例 | 可回答问题中,被系统错误拒答的数量 ÷ 可回答问题总数 |
| Clarification Accuracy | 判断遇到歧义问题时,系统是否正确要求澄清 | 应该澄清的案例中,真正触发澄清的比例 |
理想状态是:
有证据 → 正确回答
没证据 → 拒答
有歧义 → 先澄清
无权限 → 拒绝访问
六、安全、权限与生产指标
这些不一定属于统一的学术指标,但在企业上线时通常应该作为硬性 Release Gate。
| 指标 | 它为什么重要 | 大概怎么算 |
|---|---|---|
| Unauthorized Retrieval Rate | 检查 Retriever 是否把无权限 Chunk 取了出来 | 无权限结果数 ÷ 检索结果总数 |
| Cross-tenant Leakage Rate | 防止租户 A 获得租户 B 的数据 | 发生跨租户暴露的测试数 ÷ 权限测试总数 |
| Document Injection Success Rate | 判断恶意文档指令是否能控制模型 | 被文档注入成功操纵的案例数 ÷ 注入测试总数 |
| p50 / p95 / p99 Latency | 平均延迟会掩盖少数极慢请求,生产中通常更关注 p95 | 将请求延迟排序;p95 表示 95% 的请求都不超过该延迟 |
| Cost per Query | 防止质量提高很小,但 token 和模型费用大幅上涨 | Retriever、Reranker、Embedding 和 LLM 的总费用 ÷ 请求数 |
| Token per Query | 判断 Context 是否过长、是否存在重复和浪费 | 每次请求使用的输入与输出 token 数取平均或分位数 |
| Error Rate | 监控超时、模型错误和解析失败 | 失败请求数 ÷ 请求总数 |
安全指标通常应该要求:
Unauthorized Retrieval Rate = 0
Cross-tenant Leakage Rate = 0
不能通过提高其他质量指标来抵消权限泄漏。
七、最推荐的一套最小指标组合
刚开始构建 RAG 系统时,不需要一次实现所有指标。可以先建立这一组:
| 评测层 | 优先指标 |
|---|---|
| 检索有没有漏 | Recall@k |
| 排序是否合理 | nDCG@k |
| 完整证据是否找齐 | All-Evidence@k |
| Context 是否干净 | Context Precision |
| Context 是否足够 | Context Recall 或 Context Sufficiency |
| 答案是否正确 | Answer Correctness |
| 是否忠于证据 | Faithfulness / Groundedness |
| 是否遗漏信息 | Completeness |
| 引用是否可靠 | Citation Precision + Citation Coverage |
| 没证据是否乱答 | Unsupported Answer Rate |
| 是否过度拒答 | Over-refusal Rate |
| 生产性能 | p95 Latency + Cost per Query |
| 权限安全 | Unauthorized Retrieval Rate |
可以将这套组合记成:
Recall:
找没找全?
nDCG:
排得好不好?
All-Evidence:
证据链齐不齐?
Context Precision:
噪声多不多?
Correctness:
答案对不对?
Faithfulness:
答案是不是根据证据说的?
Completeness:
有没有漏答?
Citation:
引用是否正确、是否完整?
Refusal:
没证据时会不会瞎编?
Latency / Cost / ACL:
系统能不能安全地投入生产?
参考资料
- NVIDIA NeMo Evaluator Retriever Metrics https://docs.nvidia.com/nemo/microservices/latest/evaluator/metrics/retriever.html
- Ragas Context Precision https://docs.ragas.io/en/stable/concepts/metrics/available_metrics/context_precision/
- AWS Bedrock Knowledge Base Evaluation Metrics https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-eval-llm-results.html
- Microsoft RAG Evaluation Guidance https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/rag/rag-llm-evaluation-phase