RAG评估指标2026:忠实度、相关性、上下文精确度
RAG回答感觉还行,但怎么证明检索真的帮上忙?准确率这类指标测不出RAG错在哪一环,需要能拆分阶段的指标。
RAG评估指标2026:忠实度、相关性、上下文精确度
固定测试集上的准确率只告诉你"答对了没有",不告诉你为什么对、为什么错。RAG 的失败有两种完全不同的形态:检索返回了错误的上下文,或者模型手里有正确上下文却没用。这两种病要用不同的指标治,混在一起测,你永远不知道该改检索还是改提示词。
一、为什么准确率不够用
一个 RAG 系统有两条链路:检索和生成。它们的失败模式是正交的。
- 检索失败:该找到的文档没找到,或者找到一堆噪音。这时模型再强也答不对。
- 生成失败:上下文里有答案,模型却编了别的东西,或者干脆忽略。
准确率把两者混成一个数字,你只知道"不好",不知道"哪不好"。所以 RAG 评估的核心思路是分层:先单独评检索质量,再单独评生成质量。
二、四个核心指标
| 指标 | 衡量什么 | 抓哪种失败 | 通常期望 |
|---|---|---|---|
| 忠实度 Faithfulness | 答案里每个论断是否都能被检索上下文支持 | 幻觉、超纲发挥 | 0.8 以上 |
| 答案相关性 Answer Relevancy | 答案是否真的在回答这个问题 | 答非所问、绕圈子 | 0.7 以上 |
| 上下文精确度 Context Precision | 检索回来的片段里有多少真正被用到 | 检索噪音太多 | 0.5 以上 |
| 上下文召回率 Context Recall | 该找到的信息是否都找到了 | 漏检 | 0.7 以上 |
忠实度是 RAG 最重要的指标。做法是把答案拆成若干论断,逐条检查能否在上下文中找到依据。它和市场宣传的"准确性"不同:一个答案可以完全忠实但答非所问,也可以听起来很对但毫无依据。
答案相关性用反向生成的方式评估:拿生成的答案让模型反推可能的问题,看反推问题与原问题的相似度。绕圈子的答案在这里会露馅。
上下文精确度看排序质量:有用的片段是否排在前面。噪音片段挤在前面,模型被误导的概率就高。
上下文召回率需要标准答案做参照,衡量该检索到的内容有没有被检索出来。它是最需要人工标注的指标。
三、RAGAS:把人工评分换成模型评分
RAGAS 是目前最常用的开源 RAG 评估框架,核心思路是用一个强模型当裁判,按上面的维度给每条样本打分。好处是几乎不需要人工标注,当天接入当天就能得到分数。
安装与最小用法:
pip install ragas datasets
数据结构要求四条:问题、生成的答案、检索到的上下文列表、标准答案(可选,评召回率时需要)。
from datasets import Dataset
from ragas import evaluate
from ragas.metrics import (faithfulness, answer_relevancy,
context_precision, context_recall)
data = Dataset.from_dict({
"question": ["退货政策是多少天?"],
"answer": ["30天内可无理由退货,需保留包装。"],
"contexts": [["本店支持30天无理由退货,商品需保持包装完整。"]],
"ground_truth": ["30天无理由退货,需包装完整。"],
})
result = evaluate(data, metrics=[faithfulness, answer_relevancy,
context_precision, context_recall])
print(result)
实际使用时把上面四条换成你的系统真实输出,一次跑 100-200 条就能看出问题在哪一环。注意裁判模型本身需要一定能力,用小模型当裁判会引入偏差,结论要么偏松要么偏严。
四、阈值与告警
分数不用追满分,要看趋势和断点。经验阈值:
| 现象 | 可能原因 | 先改什么 |
|---|---|---|
| 忠实度 < 0.8 | 模型在忽略上下文自由发挥 | 收紧提示词,要求"只依据给定资料" |
| 上下文精确度 < 0.5 | 检索太吵,噪音压过信号 | 收紧分块、加重排、减少 top-k |
| 召回率 < 0.7 | 该找的没找到 | 改分块策略、加混合检索(关键词+向量) |
| 相关性 < 0.7 | 问题理解偏了 | 加查询改写,或补多轮上下文 |
最重要的原则是一次只改一环。忠实度低的时候改分块,等于在错误的层次上折腾。
五、双轨测试:离线加线上
离线:维护一个 100-200 条的黄金集,覆盖典型问题和边界情况,每次改动前后各跑一次。这是防止回归的安全网。
线上:每周从真实查询里随机抽 50 条,用裁判模型打分。真实分布和你的测试集永远不一样,这一步能发现测试集没覆盖的坑。
两条轨道缺一不可。只做离线会和真实用户脱节,只做线上则无法判断改动是不是引入了回归。
六、常见坑
裁判模型偏差:同一个模型既生成又评分,会偏向自己的输出风格。尽量用不同的模型做裁判。
上下文太长:把整篇文档塞给裁判,它容易挑出无关片段当依据,精确度虚高。按实际进入提示词的内容评。
测试集泄漏:黄金集的问题如果出现在训练或提示词示例里,分数会虚高,上线就打回原形。
单指标优化:把忠实度刷到 0.95 但相关性掉到 0.5,等于训练了一个只会照抄上下文的系统。四个指标要一起看。
七、没有标准答案怎么起步
很多团队没有人工标注的 ground truth。这时候先只跑忠实度、答案相关性、上下文精确度三个不需要标准答案的指标,它们已经能定位大部分问题。召回率可以等有了标注再补。
另一条路是用强模型生成候选标准答案,人工抽查修正 20%,成本远低于全人工标注。
常见问题
Q:RAGAS 一定要用 OpenAI 的模型吗? A:不必须,可以配本地模型或其他 API 模型。裁判模型能力越强,评分越可靠,但成本和延迟也越高。
Q:分数波动很大怎么办? A:增加样本量,取多次运行的平均值。100 条以下的样本,单次评分噪声足以让结论翻转。
Q:RAG 和微调需要不同的评估吗? A:需要。微调主要看任务指标(准确率、格式合规率),RAG 主要看上面四个分层指标。
Q:评估很贵怎么办? A:离线全量跑、线上抽样跑。也可以先用便宜模型粗筛,只对可疑样本用强模型复评。
注:RAGAS 的指标名与接口随版本变化,具体用法以官方文档为准;阈值是经验值,需按你的业务调整。
相关文章
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。