Skip to content

05.2 - 评估指标详解

定位: 深入理解 RAG 每个评估指标的计算逻辑和优化方向 面试高频度: ⭐⭐⭐⭐⭐ 考查方式: 各指标含义、计算方式、指标解读、优化方法

一、这是什么?为什么需要它?

是什么

RAG 评估指标是量化 RAG 系统各方面表现的"标尺"。理解每个指标的含义和计算方式,才能知道系统哪里好、哪里需要改进。

指标不是数字——它是系统的"体检报告":

Faithfulness = 0.95  -> "模型很少编造事实"
Context Precision = 0.50 -> "检索结果有一半不相关"
Answer Relevancy = 0.72 -> "回答有时答非所问"

每个指标都指向一个具体的优化方向

为什么需要深入理解指标?

如果只知道"用 RAGAS 跑分"但不理解指标含义:

问题:Faithfulness 分数低 -> 改什么?
可能的方向:改进检索?改 Prompt?换模型?微调?
错误答案:盲目尝试

如果深入理解指标:

Faithfulness 低 -> "回答中的陈述在检索文档中找不到依据"
  -> 可能原因 1:检索结果不包含所需信息 -> 改进检索
  -> 可能原因 2:模型忽略检索结果用自己的知识 -> 改进 Prompt 反幻觉指令
  -> 可能原因 3:检索结果和问题不相关 -> 改进重排序
  
  基于对指标的理解,定位到具体模块,精准优化

二、指标详解

2.1 Faithfulness(忠实度)

定义:回答中的每个陈述是否都能在检索文档中找到来源支持。

计算方式

1. 将回答拆分为独立陈述(claims)
2. 检查每个陈述是否在检索文档中有依据
3. Faithfulness = 有依据的陈述数 / 总陈述数

示例:
回答:"公司年假15天,需要提前3天申请。"
检索文档:"年假为15天。"

陈述1:"公司年假15天" -> 有依据 ✅
陈述2:"需要提前3天申请" -> 无依据 ❌

Faithfulness = 1/2 = 0.5

优化方向

1. 改进检索质量:确保相关文档被检索到
2. 增强 Prompt 约束:强调"只基于提供的信息回答"
3. 添加拒绝机制:当信息不足时,输出"文档中未找到"
4. 减少模型温度:降低模型的"创造性"

2.2 Answer Relevancy(答案相关性)

定义:生成的回答是否与用户问题相关,是否完整地覆盖了问题。

计算方式

1. 从回答反向生成 N 个假设问题
2. 计算假设问题与原始问题的语义相似度
3. Answer Relevancy = 相似度的平均值

示例:
原始问题:"公司年假多少天?"
回答:"公司年假15天,申请需提前3天。"

假设问题1:"年假天数?" -> 相关度高 ✅
假设问题2:"年假申请流程?" -> 部分相关 ✅
假设问题3:"考勤制度?" -> 不相关 ❌

Answer Relevancy = 平均相关度

优化方向

1. 改进 Prompt:要求回答直接针对问题
2. 调整检索:确保检索到的问题相关度高
3. 添加输出格式约束:要求回答覆盖问题的所有子问题

2.3 Context Precision(上下文精度)

定义:检索结果中真正与问题相关的文档块所占的比例。

计算方式

1. 对检索结果中的每个文档块,判断是否与问题相关
2. 相关文档在排序中越靠前,分数越高
3. 考虑排序权重(前面的更重要)

示例:
检索结果顺序:块A(相关), 块B(不相关), 块C(相关)
Context Precision = 考虑排序位置的加权精度
块A在位置1相关 ✓
块B在位置2不相关 -> 降权
块C在位置3相关 -> 但位置靠后权重低

优化方向

1. 改进检索策略(Hybrid Search / Reranking)
2. 调整分块策略(减少块中的无关信息)
3. 优化 Embedding 模型(领域适配)
4. 增加查询转换(HyDE / Multi-Query)

2.4 Context Recall(上下文召回)

定义:回答问题所需的所有相关信息是否都被检索到了。

计算方式

1. 基于标准答案或文档,确定回答问题需要哪些信息
2. 检查这些信息在检索结果中是否存在
3. Context Recall = 检索到的必需信息数 / 总必需信息数

示例:
问题:"公司年假政策是什么?"
需要信息:天数(15天)、申请流程(提前3天)、资格(入职满1年)

检索到的:
块A:"年假15天"           -> 包含天数 ✓
块B:"提前3天申请"         -> 包含流程 ✓
块C:"入职满1年可申请"     -> 没有检索到 ❌

Context Recall = 2/3 = 0.67

优化方向

1. 增加 K 值(检索更多文档块)
2. 使用 Multi-Query(多角度检索)
3. 改进分块(确保信息不被截断)
4. 增加检索路数(向量+关键词+图检索)

2.5 指标间的关系

+------------------------------------------------------------------+
|                     RAG 指标关系矩阵                               |
|                                                                   |
|  指标            | 衡量什么          | 优化方向                     |
|------------------+-------------------+----------------------------|
| Faithfulness     | 是否基于文档      | Prompt + 检索质量            |
| Answer Relevancy | 是否回答准确      | Prompt + 检索针对性          |
| Context Precision| 检索是否精确      | 检索策略 + Reranker         |
| Context Recall   | 检索是否全面      | 检索范围 + Multi-Query      |
|------------------+-------------------+----------------------------|
|                                                                   |
|  四个指标的关系:                                                 |
|                                                                   |
|  Precision (精确) vs Recall (全面) 的权衡:                        |
|  提高 Precision:减少 K, 加强 Reranker                             |
|  提高 Recall:增加 K, 增加检索路数                                 |
|  两者往往需要平衡                                                  |
|                                                                   |
|  Faithfulness 受 Context Precision 影响:                         |
|  检索结果中相关比例越高 -> 模型基于相关信息的概率越大 -> 忠实度越高 |
+------------------------------------------------------------------+

三、图解全景

RAG 系统瓶颈定位

+------------------------------------------------------------------+
|                通过指标组合定位系统瓶颈                              |
|                                                                   |
|  Context Precision 高 | Context Precision 低                       |
|  +---------------------+----------------------+                   |
|  | Faithfulness 高     | 检索准+生成好        | 检索不准但生成好   |
|  | 幻觉低              | (理想状态)           | (幸运)             |
|  +---------------------+----------------------+                   |
|  | Faithfulness 低     | 检索准但模型不遵从   | 检索差+模型乱编   |
|  | 幻觉高              | -> 改 Prompt         | -> 优先修检索     |
|  +---------------------+----------------------+                   |
|                                                                   |
|  诊断流程:                                                        |
|  1. 先看 Faithfulness:高还是低?                                  |
|     - 低:再看 Context Precision                                   |
|       - Precision 高:Prompt 问题(模型不遵从)                     |
|       - Precision 低:检索问题(信息不够或噪声多)                  |
|     - 高:看 Answer Relevancy                                     |
|       - 低:Prompt 问题(答非所问)                                 |
|       - 高:系统整体健康                                           |
+------------------------------------------------------------------+

四、实战验证

4.1 各指标的优化优先级

对于一个新搭建的 RAG 系统,建议的优化顺序:

Step 1:提升 Context Recall(召回)
  确保系统能检索到所有相关信息
  方法:增加 K,增加检索路数
  目标:0.85+

Step 2:提升 Context Precision(精度)
  减少检索结果中的噪声
  方法:加 Reranker,改进检索策略
  目标:0.75+

Step 3:提升 Faithfulness(忠实度)
  确保模型基于检索结果生成
  方法:优化 Prompt,加反幻觉约束
  目标:0.85+

Step 4:提升 Answer Relevancy(相关性)
  确保回答精准对应问题
  方法:优化 Prompt 格式
  目标:0.80+

4.2 指标质量门禁参考

指标优秀良好及格不合格
Faithfulness>0.900.80-0.900.70-0.80<0.70
Answer Relevancy>0.850.75-0.850.65-0.75<0.65
Context Precision>0.850.75-0.850.65-0.75<0.65
Context Recall>0.900.80-0.900.70-0.80<0.70

五、面试视角

问题答案要点
Faithfulness 低一般是什么原因?怎么排查?三种原因:1) 检索结果不包含所需信息(改检索);2) 模型忽略检索结果偏用自身知识(改 Prompt);3) 检索结果有冲突或噪声(改 Reranker)。排查:先看检索结果是否包含正确答案
Context Precision 和 Context Recall 的 trade-off?精度的代价是可能漏掉信息(K 少了就漏),召回的代价是噪声增加(K 多了噪声多)。需要通过 Reranker 来兼顾——粗检索用大 K 保召回,重排序用精排提精度
Answer Relevancy 低但 Faithfulness 高,说明什么?说明模型忠实于检索文档回答,但检索到的文档本身与问题不相关。问题在检索而非生成。优化方向:检索策略、查询理解
如何判断 RAG 系统的瓶颈在检索侧还是生成侧?先看 Context Precision/Recall(检索质量),再看 Faithfulness(生成是否基于检索)。检索差 -> 瓶颈在检索;检索好但 Faithfulness 低 -> 瓶颈在 Prompt 或模型

📚 相关链接

  • **RAGAS评估框架** — RAGAS 框架使用
  • **RAG系统调优策略** — 基于指标的系统调优
  • **检索与重排序** — 检索策略影响 Context Precision/Recall
  • <- 返回 **评估优化索引**

Knowledge4J — Java 知识库