一、RAG 评估指标
1、RAG 评估的两种方法
评估 RAG(Retrieval-Augmented Generation)系统主要有两种方法:独立评估(分别评估检索器和生成器)和端到端评估(整体评估)。两者从不同维度检验 RAG 系统的效能,确保各组件和整体均表现良好
┌─────────────────────────────────────────────────────┐
│ RAG 评估体系 │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ 检索器评估 │ │ 生成器评估 │ ← 独立评估 │
│ │ Hit Rate │ │ BLEU/ROUGE │ │
│ │ MRR/NDCG │ │ │ │
│ └──────┬───────┘ └──────┬───────┘ │
│ └────────┬────────┘ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 端到端评估 │ ← 整体评估 │
│ │ 生成质量+检索 │ │
│ │ 效果+响应时间 │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────┘
2、检索器评估(Retriever Evaluation)
检索模块的评估借鉴了搜索引擎、推荐系统等领域的经典指标,用于衡量系统在给定查询下的排名质量
| 指标 | 英文全称 | 中文名 | 核心关注点 |
|---|---|---|---|
| Hit Rate | Hit Rate | 命中率 | 是否找到了相关文档 |
| MRR | Mean Reciprocal Rank | 平均排名倒数 | 第一个相关文档排在第几 |
| DCG | Discounted Cumulative Gain | 折扣累积增益 | 排名+相关性得分的综合 |
| NDCG | Normalized Discounted Cumulative Gain | 归一化折扣累积增益 | DCG 的归一化版本,可跨查询比较 |
2.1 命中率(Hit Rate)
核心思想:检索系统是否至少返回了一个相关结果?
- 命中率是最直观的检索评估指标,衡量"检索到相关文档的查询次数"占总查询次数的比例
- 命中率高 → 用户在首次查询时更有可能获得相关结果
公式:
$$
\text{Hit Rate} = \frac{\text{检索到相关文档的查询次数}}{\text{总查询次数}}
$$
示例:
- 共 10 次查询,其中 7 次检索到了至少 1 个相关文档
- $\text{Hit Rate} = \dfrac{7}{10} = 0.7 = 70%$
解读:70% 的查询至少返回了一个相关文档,说明检索系统具备较好的基础响应能力。
2.2 平均排名倒数(MRR)
核心思想:第一个相关文档出现的位置越靠前越好。
- MRR 关注的是第一个正确答案的排名位置,排名越靠前,贡献越大
- 常用于信息检索和问答系统
公式:
$$
\text{MRR} = \frac{1}{N} \sum_{i=1}^{N} \frac{1}{\text{rank}_i}
$$
其中 $N$ = 查询总数,$\text{rank}_i$ = 第 $i$ 个查询中第一个相关文档的排名。
示例:
| 查询 | 第一个相关文档排名 | 倒数(1/rank) |
|---|---|---|
| 查询1 | 第 1 位 | 1/1 = 1.000 |
| 查询2 | 第 3 位 | 1/3 ≈ 0.333 |
| 查询3 | 第 2 位 | 1/2 = 0.500 |
$$
\text{MRR} = \frac{1.000 + 0.333 + 0.500}{3} \approx 0.611
$$
解读:MRR 越高,说明系统越倾向于将相关文档排在靠前位置。
2.3 折扣累积增益(DCG)
核心思想:排名越靠前的结果,其相关性得分权重越大。
- DCG 对每个位置的相关性得分施加对数折扣——排名越靠后,贡献被"打折"越多
- 相关性得分通常为人工标注(如 3=高度相关, 2=相关, 1=弱相关, 0=不相关)
公式:
$$
\text{DCG@k} = \sum_{i=1}^{k} \frac{\text{rel}_i}{\log_2(i + 1)}
$$
- $\text{rel}_i$:第 $i$ 个位置文档的相关性得分
- $\log_2(i+1)$:位置折扣因子(位置越靠后,分母越大,得分越小)
示例:假设一次查询返回 4 个文档,相关性得分如下:
| 排名 $i$ | 文档 | 相关性 $\text{rel}_i$ | $\log_2(i+1)$ | $\dfrac{\text{rel}_i}{\log_2(i+1)}$ |
|---|---|---|---|---|
| 1 | Doc A | 3 | $\log_2(2)=1.000$ | 3.000 |
| 2 | Doc B | 2 | $\log_2(3)\approx 1.585$ | 1.262 |
| 3 | Doc C | 1 | $\log_2(4)=2.000$ | 0.500 |
| 4 | Doc D | 3 | $\log_2(5)\approx 2.322$ | 1.292 |
$$
\text{DCG@4} = 3.000 + 1.262 + 0.500 + 1.292 = \mathbf{6.054}
$$
⚠️ DCG 的致命缺陷:DCG 的值取决于测试集中相关文档的数量和分布,不能直接跨查询比较。
- 查询 A 有 5 个 3 分文档 → DCG 上限 ≈ 12.8
- 查询 B 只有 1 个 3 分文档 → DCG 上限 ≈ 3.0
因此 DCG = 6.0 对查询 A 可能是差结果,对查询 B 却是完美结果。解决方案 → NDCG
2.4 归一化折扣累积增益(NDCG)
核心思想:用"理想排序"的 DCG 做归一化,使不同查询之间可比较。
公式:
$$
\text{NDCG@K} = \frac{\text{DCG@K}}{\text{IDCG@K}}
$$
- IDCG(Ideal DCG):将同一组文档按相关性降序排列后算出的 DCG,代表理论最优得分
示例(接上例):将相关性得分降序排列 → [3, 3, 2, 1]
| 理想排名 | 理想 $\text{rel}_i$ | $\log_2(i+1)$ | $\dfrac{\text{rel}_i}{\log_2(i+1)}$ |
|---|---|---|---|
| 1 | 3 | 1.000 | 3.000 |
| 2 | 3 | 1.585 | 1.893 |
| 3 | 2 | 2.000 | 1.000 |
| 4 | 1 | 2.322 | 0.431 |
$$
\text{IDCG@4} = 3.000 + 1.893 + 1.000 + 0.431 = \mathbf{6.324}
$$
$$
\text{NDCG@4} = \frac{\text{DCG@4}}{\text{IDCG@4}} = \frac{6.054}{6.324} \approx \mathbf{0.957}
$$
解读:NDCG = 0.957 表示当前排序达到了理想排序的 95.7%,非常接近最优。NDCG ∈ [0, 1],越接近 1 越好。
2.5 检索器指标速记
| 指标 | 一句话记忆 | 范围 |
|---|---|---|
| Hit Rate | 找到没? | [0,1] |
| MRR | 第一个排第几? | [0,1] |
| DCG | 排名越靠前权重越大 | 无上限 |
| NDCG | DCG ÷ 理想DCG,可跨查询 | [0,1] |
3、生成器评估(Generator Evaluation)
生成模块的评估关注生成文本的质量——与参考文本的相似度、流畅度和一致性。核心指标:BLEU 和 ROUGE。
| 指标 | 英文全称 | 侧重点 | 核心思想 |
|---|---|---|---|
| BLEU | Bilingual Evaluation Understudy | 精度 | n-gram 匹配了多少 |
| ROUGE | Recall-Oriented Understudy for Gisting Evaluation | 召回率 | 参考文本被覆盖了多少 |
3.1 BLEU
BLEU 源自机器翻译领域,核心是衡量生成文本与参考文本的 n-gram 重叠精度。
3.1.1 核心公式
$$
\text{BLEU} = \text{BP} \times \exp\left( \sum_{n=1}^{N} w_n \log p_n \right)
$$
三个关键要素:
| 要素 | 含义 | 说明 |
|---|---|---|
| $p_n$ | n-gram 精度 | $p_n = \dfrac{\text{匹配的 n-gram 个数}}{\text{生成文本中的 n-gram 总数}}$ |
| BP | 长度惩罚(Brevity Penalty) | 防止生成文本过短 |
| $w_n$ | n-gram 权重 | 通常取均等权重 $1/N$ |
3.1.2 评估三步骤
步骤1:n-gram 精度计算 → 统计各阶 n-gram 的匹配度
步骤2:长度惩罚 → 若生成文本过短则施加惩罚
步骤3:加权平均 → 对各阶精度取对数加权,得到最终 BLEU 值
3.1.3 案例详解
问题:巴黎的埃菲尔铁塔有多高?
参考答案:埃菲尔铁塔的高度为 330 米
生成答案:埃菲尔铁塔的高度是 330 米
1-gram 精度:
| 类型 | 分词结果 | 数量 |
|---|---|---|
| 参考 | ["埃菲尔铁塔", "的", "高度", "为", "330", "米"] | 6 |
| 生成 | ["埃菲尔铁塔", "的", "高度", "是", "330", "米"] | 6 |
| 匹配 | ["埃菲尔铁塔", "的", "高度", "330", "米"] | 5 |
$$
p_1 = \frac{5}{6} \approx 0.8333
$$
2-gram 精度:
| 类型 | 2-gram 列表 | 数量 |
|---|---|---|
| 参考 | ["埃菲尔铁塔 的", "的 高度", "高度 为", "为 330", "330 米"] | 5 |
| 生成 | ["埃菲尔铁塔 的", "的 高度", "高度 是", "是 330", "330 米"] | 5 |
| 匹配 | ["埃菲尔铁塔 的", "的 高度", "330 米"] | 3 |
$$
p_2 = \frac{3}{5} = 0.6
$$
长度惩罚:生成文本长度 = 6 ≥ 参考文本长度 = 6 → BP = 1
最终 BLEU(假设 1-gram 和 2-gram 各占 0.5 权重):
$$
\begin{aligned}
\text{BLEU} &= 1 \times \exp\left(0.5 \times \log 0.8333 + 0.5 \times \log 0.6\right) \
&= \exp\left(0.5 \times (-0.1823) + 0.5 \times (-0.2218)\right) \
&= \exp(-0.20205) \approx \mathbf{0.817}
\end{aligned}
$$
解读:BLEU = 0.817,说明生成答案与参考答案在 n-gram 层面有较高相似度,生成质量较好。
3.1.4 局限性
| 局限 | 说明 |
|---|---|
| 忽略词语顺序 | 对顺序变化不敏感,语序不同但语义相似的文本可能被评低分 |
| 忽略语义 | 仅关注表面 n-gram 匹配,无法评估语义准确性 |
| 对短文本不稳定 | 短文本的 n-gram 太少,BLEU 值波动大 |
3.1.5 长度惩罚(Brevity Penalty, BP)
BP 的初衷:防止模型通过生成极短文本"作弊"——短文本更容易在 n-gram 精度上得高分。
公式:
$$
\text{BP} =
\begin{cases}
1 & \text{若 } c \geq r \[8pt]
\exp\left(1 - \dfrac{r}{c}\right) & \text{若 } c < r
\end{cases}
$$
其中 $c$ = 生成文本长度,$r$ = 参考文本长度。
示例:
| 生成长度 $c$ | 参考长度 $r$ | BP 值 | 说明 |
|---|---|---|---|
| 6 | 6 | 1.000 | 长度相等,无惩罚 |
| 5 | 6 | 0.819 | 生成偏短,受到惩罚 |
| 7 | 6 | 1.000 | 生成偏长,不惩罚 |
3.2 ROUGE
ROUGE 与 BLEU 互补——BLEU 侧重精度,ROUGE 侧重召回率。
核心对比:
BLEU → 问:生成文本中的 n-gram 有多少在参考文本中出现了?(精度视角)---找的对不?
ROUGE → 问:参考文本中的 n-gram 有多少被生成文本覆盖了?(召回视角)---找的到不?
3.2.1 ROUGE-N
ROUGE-N 衡量生成文本与参考文本的 n-gram 召回率。
公式:
$$
\text{ROUGE-N} = \frac{\sum \text{重叠的 n-gram 数量}}{\sum \text{参考文本中的 n-gram 数量}}
$$
- ROUGE-1:单字词重叠召回率
- ROUGE-2:连续双词重叠召回率
3.2.2 ROUGE-L
ROUGE-L 基于最长公共子序列(LCS, Longest Common Subsequence)——在不打乱顺序的前提下,两段文本能匹配的最长词序列。
三个指标:
| 指标 | 公式 | 含义 |
|---|---|---|
| Precision | $\dfrac{\text{LCS 长度}}{\text{生成文本长度}}$ | 生成文本中有多少在参考中出现 |
| Recall | $\dfrac{\text{LCS 长度}}{\text{参考文本长度}}$ | 参考文本中有多少被生成覆盖 |
| F1-score | $\dfrac{2 \times P \times R}{P + R}$ | 精度和召回率的调和平均 |
ROUGE-L 考虑了词语顺序,适合评估长文本的连贯性和流畅性。
3.2.3 案例详解
参考摘要:埃菲尔铁塔高 330 米,是法国巴黎的标志性建筑
生成摘要:巴黎的埃菲尔铁塔有 330 米高,是著名的旅游景点
ROUGE-1 计算:
| 项目 | 内容 | 数量 |
|---|---|---|
| 参考 unigram | ["埃菲尔铁塔", "高", "330", "米", "是", "法国", "巴黎", "的", "标志性", "建筑"] | 10 |
| 生成 unigram | ["巴黎", "的", "埃菲尔铁塔", "有", "330", "米", "高", "是", "著名", "的", "旅游", "景点"] | 12 |
| 重叠 unigram | ["巴黎", "埃菲尔铁塔", "高", "330", "米", "是"] | 6 |
$$
\text{ROUGE-1} = \frac{6}{10} = \mathbf{0.60}
$$
ROUGE-2 计算:
| 项目 | 2-gram 列表 | 数量 |
|---|---|---|
| 参考 | ["埃菲尔铁塔 高", "高 330", "330 米", "米 是", "是 法国", "法国 巴黎", "巴黎 的", "的 标志性", "标志性 建筑"] | 9 |
| 生成 | ["巴黎 的", "的 埃菲尔铁塔", "埃菲尔铁塔 有", "有 330", "330 米", "米 高", "高 是", "是 著名", "著名 的", "的 旅游", "旅游 景点"] | 11 |
| 重叠 | ["330 米", "巴黎 的"] | 2 |
$$
\text{ROUGE-2} = \frac{2}{9} \approx \mathbf{0.222}
$$
ROUGE-L 计算:
- LCS(最长公共子序列):["埃菲尔铁塔", "330", "米", "是", "的"],长度 = 5
| 指标 | 计算 | 结果 |
|---|---|---|
| Precision | $5 / 12$ | 0.417 |
| Recall | $5 / 10$ | 0.500 |
| F1-score | $\dfrac{2 \times 0.417 \times 0.500}{0.417 + 0.500}$ | 0.455 |
对比分析:ROUGE-1 = 0.60(词级别覆盖不错)、ROUGE-2 = 0.22(连续词对覆盖较差)、ROUGE-L F1 = 0.455(顺序和连贯性一般)。ROUGE-2 低说明生成文本在词语顺序上与原参考有较大差异。
4、端到端评估(End-to-End Evaluation)
端到端评估从整体视角衡量 RAG 系统在实际应用中的综合表现,而不仅仅是各组件的独立指标。
4.1 评估维度总览
| 维度 | 评估内容 | 常用方法 |
|---|---|---|
| 生成质量 | 文本流畅性、准确性、相关性 | BLEU, ROUGE, METEOR, 人工评估 |
| 检索效果 | 检索准确性和召回率 | Hit Rate, NDCG, Precision@K, Recall@K |
| 检索-生成融合 | 生成文本是否有效利用了检索到的信息 | 忠实度(Faithfulness)评估、人工评审 |
| 响应时间 | 检索和生成的延迟 | 延迟测量(P50/P95/P99) |
| 人工测评 | 综合用户体验 | A/B 测试、人工打分 |
4.2 各维度详解
-
生成质量:评估输出的文本是否流畅、准确、与问题相关。除了自动化指标,还需要考虑事实一致性和幻觉(Hallucination)检测。
-
检索效果:验证检索模块是否从知识库中提取到了相关且有价值的信息。
-
检索-生成融合:检查生成结果是否真正使用了检索到的信息,而非忽略或曲解。常见做法是评估"忠实度"——生成内容是否忠实于检索到的上下文。
-
响应时间:对实时场景(如对话系统),检索和生成的延迟直接影响用户体验。通常关注 P50/P95/P99 延迟。
-
人工测评:自动化指标有局限,人工评估仍是"金标准"——尤其对开放性问答、创意写作等场景。
5、指标对比总结
5.1 检索器指标对比
| 指标 | 公式记忆 | 核心问题 | 优点 | 缺点 |
|---|---|---|---|---|
| Hit Rate | 命中次数 / 总次数 | 找到没? | 直观简单 | 不考虑排名质量 |
| MRR | $\frac{1}{N}\sum \frac{1}{\text{rank}_i}$ | 第一个排第几? | 关注首个相关文档 | 只关注第一个 |
| DCG | $\sum \frac{\text{rel}_i}{\log_2(i+1)}$ | 排名+相关性? | 同时考虑位置和相关性 | 不可跨查询比较 |
| NDCG | DCG / IDCG | 达到最优的多少? | 可跨查询比较,归一化 | 需要理想排序参考 |
5.2 生成器指标对比
| 指标 | 视角 | 核心公式 | 优点 | 缺点 |
|---|---|---|---|---|
| BLEU | 精度 | $\text{BP} \times \exp(\sum w_n \log p_n)$ | 经典,广泛应用 | 忽略语义和语序 |
| ROUGE-N | 召回率 | 重叠 n-gram / 参考 n-gram | 关注覆盖率 | 不考虑连贯性 |
| ROUGE-L | LCS | 基于最长公共子序列的 F1 | 考虑词语顺序 | 对长文本计算复杂 |
5.3 选用建议
检索系统 → Hit Rate(快速筛查)+ NDCG(精确评估)
生成文本 → BLEU(精度)+ ROUGE(召回率)配合使用
整体系统 → 自动化指标 + 人工评估(金标准)
线上部署 → 以上 + 响应时间(P95延迟 < 目标阈值)
📌 核心要点回顾
- 检索评估:Hit Rate(找没找到)→ MRR(排第几)→ NDCG(排序有多好)
- 生成评估:BLEU(精度,生成文本对了多少)vs ROUGE(召回,参考文本覆盖了多少)
- 端到端评估:不只关注单一指标,而是从生成质量、检索效果、融合程度、响应时间、人工体验五个维度综合衡量
- 最佳实践:自动化指标用于快速迭代,人工评估用于最终把关——两者互补,不可偏废
浙公网安备 33010602011771号