在评估RAG 系统的性能时,Answer Relevancy(答案相关性)、Faithfulness(忠实性)、Context Precision(上下文精确率)、Context Recall(上下文召回率)和 Answer Correctness(答案正确性) 是五个关键的评估指标。
这五个指标构成了 RAG 系统评估的完整框架:
- Context Precision/Recall 评估检索质量,
- Faithfulness/Relevancy 评估生成质量,
- Answer Correctness 是最终目标。
| 指标 | 关注对象 | 核心问题 | 依赖关系 |
|---|---|---|---|
| Context Precision | 检索模块 | 检索到的内容有多“准”? | 影响 Answer Relevancy 和 Faithfulness |
| Context Recall | 检索模块 | 检索到的内容有多“全”? | 影响 Answer Correctness(信息不足则难答对) |
| Faithfulness | 生成模块 | 答案是否“照本宣科”? | 依赖 Context Precision/Recall 的质量 |
| Answer Relevancy | 生成模块 | 答案是否“答非所问”? | 受检索质量和生成能力共同影响 |
| Answer Correctness | 整体系统 | 答案是否“事实正确”? | 是最终目标,依赖前四项 |
一、定义
1. Answer Relevancy(答案相关性)
-
定义:评估生成的答案是否与用户问题相关。即答案是否回应了问题的核心意图。
-
关注点:答案是否“跑题”。
-
示例:
- 问:“巴黎是哪个国家的首都?”
- 答:“法国是欧洲的一个国家,拥有丰富的文化遗产。”
- → 答案部分相关,但没有直接回答“巴黎是法国的首都”,相关性较低。
-
测量方式:通常通过人工评分或语义相似度模型(如 BERTScore)判断。
2. Faithfulness(忠实性 / 忠诚度)
-
定义:生成的答案是否完全基于提供的上下文(检索到的文档片段),是否存在“幻觉”(hallucination)。
-
关注点:答案是否“捏造”了上下文未包含的信息。
-
示例:
- 上下文:“巴黎是法国的首都。”
- 答:“巴黎是德国的首都。”
- → 不忠实,因为与上下文矛盾。
- 答:“巴黎是法国的首都,也是欧盟的首都。”
- → 若上下文未提“欧盟首都”,则部分信息为幻觉,不忠实。
-
测量方式:通过检查答案中的每个事实是否能在上下文中找到支持。
注意:忠实性不要求上下文本身正确,只要求答案不超出上下文。
3. Context Precision(上下文精确率)
-
定义:检索到的上下文中,有多少信息是回答问题所真正需要的。即“检索结果中有多少是相关的”。
-
关注点:检索的“精准度”,避免无关信息。
-
公式类比:类似于信息检索中的 Precision。
-
示例:
- 问题:“爱因斯坦哪年获得诺贝尔奖?”
- 检索到的上下文包含爱因斯坦生平、相对论、获奖年份等。
- 若只有一小段提到“1921年获奖”,其余无关 → 精确率低。
-
高 Precision:意味着大部分检索到的内容都用于回答问题。
4. Context Recall(上下文召回率)
-
定义:所有回答问题所需的信息中,有多少被成功检索到。即“是否漏掉了关键信息”。
-
关注点:检索的“完整性”。
-
公式类比:类似于信息检索中的 Recall。
-
示例:
- 正确答案需要“1921年”和“光电效应”两个信息。
- 检索到的上下文只有“1921年”,缺少“光电效应” → Recall 较低。
-
高 Recall:表示关键信息基本都被检索到。
Precision vs Recall 权衡:高 Precision 可能牺牲 Recall(只拿最相关的,但可能漏掉),反之亦然。
5. Answer Correctness(答案正确性)
-
定义:生成的答案在事实上是否正确,是否准确回答了问题。
-
关注点:答案的“真实性”和“准确性”。
-
示例:
- 问:“水的化学式是什么?”
- 答:“H₂O” → 正确。
- 答:“H₂O₂” → 错误。
-
测量方式:通常需要人工标注或权威知识库验证。
二、调试建议
[问题]
↓
检索模块 → Context Precision & Recall(检索质量)
↓
上下文 → Faithfulness(生成是否忠实于上下文)
↓
生成答案 → Answer Relevancy(是否相关)
↓
Answer Correctness(最终是否正确)
-
调试 RAG 系统时:
- 若 Correctness 低,先看 Recall 是否低(关键信息没检索到)。
- 若答案“胡说八道”,检查 Faithfulness。
- 若答案“答非所问”,检查 Relevancy 和 Precision。
-
优化方向:
- 提升 Precision:优化检索器(如重排序、query 扩展)。
- 提升 Recall:扩大检索范围、改进 embedding 模型。
- 提升 Faithfulness:使用更严格的生成约束(如引用机制)。