如何评估 RAG 系统的效果?检索和生成分别看哪些指标?
- 标签:RAG、效果评估
🏛 业务架构师
评估 RAG 效果的指标体系(检索与生成分开看):
检索层指标(找没找到):
- 命中率 Hit Rate@K:正确文档出现在 Top-K 的比例——最直观的"找没找到";
- MRR(平均倒数排名):正确文档排在第几位(第 1 位得 1 分、第 3 位得 1/3)——衡量"排得好不好",对 Rerank 效果敏感;
- 召回率 Recall@K:所有相关文档被召回的比例——多文档答案(综述类)场景重要;
- 上下文精确率:进入上下文的内容中相关占比——衡量噪声水平(喂太多垃圾照样答错)。
生成层指标(答得好不好):
- 忠实度 Faithfulness:答案的每个论断是否被检索内容支持——幻觉的核心度量,RAGAS 的旗舰指标;
- 答案相关性:是否切题回应了问题(答得流畅但跑题也是失败);
- 引用正确率:标注的出处真实支持答案的比例——可信与合规的度量;
- 拒答质量:无答案场景是否诚实拒答(而非硬编)——常被忽略但决定信任度。
方法与工具:评测集(100+ 条人工标注黄金对)+ RAGAS/LangSmith 自动化跑批(LLM-as-Judge 评生成层,人工抽检校准)+ 线上指标(点踩率、转人工率)三环验证。
业务用法:分层归因——命中率低改检索(混合检索/查询改写/换 Embedding),忠实度低改生成(提示约束/Rerank 提纯上下文/降 temperature),拒答差补知识库。指标的意义在于指导"钱花在哪"——这是评估体系的最终目的。
🏗 系统架构师
RAG 评估我按检索与生成分层 + 指标定义 + 落地方法讲(分层归因是架构师的核心视角):
检索层指标(决定上限):
- Recall@K:金标相关文档进入 Top-K 的比例——第一指标(没召回,生成再好也没用);
- Precision@K / MRR / nDCG:候选的纯净度与排序质量(nDCG 适合分级相关性场景);
- 评估前提:标注"query→相关文档"金标集(200~500 条,真实分布+难例)。
生成层指标(决定下限之上的发挥):
- Faithfulness(忠实度):答案的每个论断是否被检索内容支撑——幻觉的核心度量(NLI 模型或 LLM Judge 逐句判);
- Answer Relevancy:回答与问题的对题程度(答得"有据"但"跑题"也是失败);
- Context Utilization:检索内容被有效使用的比例(塞了 10 段用 2 段 → 检索过量);
- 格式合规率:结构化输出/引用格式的通过率(工程可用性)。
端到端(业务真相):解决率、用户点踩率、引用点击率、转人工率;延迟 P95 与单条成本(工程约束)。
落地方法:
- 工具:RAGAS(四指标开箱)、LangSmith evals、自建 LLM Judge(rubric 结构化 + 人工抽检 5~10% 校准——Judge 有偏);
- 流程:金标集进 CI——任何变更(分块/Embedding/Prompt/参数)跑回归,劣化挡发布;线上 badcase 回流扩充评测集;
- 归因纪律:效果差先看 recall(上限病,改检索),上限健康再看 faithfulness(下限病,改 Prompt/模型)——不分层的评估无法指导迭代。
一句话:检索指标告诉你"能不能答对",生成指标告诉你"答得像不像话",业务指标告诉你"用户买不买账"。
💻 全栈开发专家
RAG 评估分检索、生成两层(指标必须分开看,混在一起无法归因):
检索层指标(决定上限):
- Recall@k:标准答案文档出现在 top-k 的比例——最核心(召回都没有,生成免谈);
- Context Precision:检索结果中相关 chunk 的占比(信噪比);
- MRR / nDCG:排序质量(相关的排得靠不靠前);
- 命中率/拒答正确率:知识库没有答案时,正确拒答的比例。
生成层指标(决定呈现):
- Faithfulness(忠实度):答案是否被检索内容支撑——幻觉率的直接对立面,RAGAS 用 NLI 句级验证;
- Answer Relevancy:答案与问题的对题程度(答非所问检测);
- 引用正确率:标注引用 [n] 与内容的真实对应关系;
- 端到端任务成功率 + 人工抽检校准。
落地工具与流程:
python
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_recall
score = evaluate(dataset, metrics=[faithfulness, answer_relevancy, context_recall])我的实操纪律:
- golden set(50~200 条真实 query+标注)是前提,没有它一切指标无从谈起;
- 归因路径固定:faithfulness 低→生成问题(改 prompt/温度);context recall 低→检索问题(embedding/分块/混合检索);两层都好但答案差→模型能力问题;
- 每次变更单变量+全量回归(进 CI);
- 线上指标(点踩率、转人工率)与离线指标定期对齐——离线分数和用户满意度会漂移。
参考门线:faithfulness ≥ 0.9、recall@5 ≥ 0.85 是多数知识问答场景的合格线。