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.90 | 0.80-0.90 | 0.70-0.80 | <0.70 |
| Answer Relevancy | >0.85 | 0.75-0.85 | 0.65-0.75 | <0.65 |
| Context Precision | >0.85 | 0.75-0.85 | 0.65-0.75 | <0.65 |
| Context Recall | >0.90 | 0.80-0.90 | 0.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
- <- 返回 **评估优化索引**