RAG 评估不能只看最终答案,必须分层拆解:
而且有一个重要的工程原则:先看检索,再看生成。如果检索没召回正确文档,后面生成再好也没用。
检索阶段的评估需要“标注数据”——知道哪些文档对某个 query 是相关的。有了这个,可以算:
(1)Recall@K(召回率)
定义:正确答案是否出现在 Top-K 检索结果中。
公式:Recall@K = 检索到的相关文档数 / 所有相关文档总数。
意义:最重要的检索指标。Recall 低说明相关内容根本没被找到,后面全白搭。
工程判断:Recall 低于 70% 通常说明检索有严重问题。
(2)Precision@K(精确率)
定义:Top-K 结果中,相关文档的比例。
意义:衡量“找到的内容有多少是相关的”,Precision 低说明上下文噪声多。
(3)MRR(平均倒数排名)
定义:第一个相关文档排名的倒数,对所有 query 取平均。
意义:衡量“最相关的结果排得够不够靠前”。
注意:MRR 描述排序,不描述“有没有找到”。
(4)NDCG@K(归一化折损累积增益)
定义:考虑排序位置和相关度等级的综合排序质量。
意义:比 MRR 更细,适合有分级相关度的场景。
(5)Context Precision / Context Recall(RAGAS 风格)
Context Precision:检索到的上下文中有多少是真正有用的(LLM 判定)。
Context Recall:生成答案所需的信息是否都在检索上下文中(LLM 判定)。
这两个不需要人工标注,可以用 LLM 做 judge。
检索层总结:Recall@K 是第一道防线,Precision 看噪声,MRR/NDCG 看排序质量。
生成阶段评估答案质量,核心指标:
(1)Faithfulness(忠实度)
定义:答案中的信息点是否都能从检索上下文中推断出来。
公式:可被上下文支持的答案信息点 / 答案信息点总数。
意义:RAG 安全性的核心,衡量有没有幻觉。
如果 Faithfulness 低,说明模型没忠实地用检索内容,在编。
(2)Answer Relevance(答案相关性)
定义:答案是否真正回答了用户的问题。
意义:防止“答非所问但看起来合理”的输出。
(3)Answer Correctness(答案正确性)
定义:答案是否事实正确。
需要 ground truth 或人工判断。
可以用 LLM judge 辅助。
(4)Context Relevance / Context Precision
定义:检索到的上下文对回答问题是否有用。
衡量“上下文窗口的 token 花得值不值”。
(5)Hallucination Rate / Citation Accuracy
幻觉率:有至少一个不被支持声明的答案比例。
引用准确率:引用的文档是否真的支持被引用的内容。
生成层总结:Faithfulness 是核心,其次是 Answer Relevance 和 Answer Correctness。
这是这道题最有区分度的部分。没有人工标注的 query-doc 相关性或标准答案时,有几种办法:
(1)用 LLM 做 Judge(最主流)
用强 LLM 来判定 Faithfulness、Answer Relevance、Context Relevance。
代表框架:RAGAS、TruLens、DeepEval。
原理:给 LLM 一个 prompt,让它判断答案是否被上下文支持、是否回答了问题。
优点:不需要人工标注,可自动化。
缺点:LLM judge 有偏差。研究显示 RAGAS 指标与人工评估的相关性调和平均只有约 0.55,远不够可靠。LLM judge 存在位置偏差、冗长偏差、自我增强偏差等。
所以:LLM judge 适合快速迭代和回归测试,不适合作为唯一质量依据。
(2)合成评估集(Synthetic Eval Set)
用 LLM 从文档中生成问题和答案对,作为“伪标注”。
方法:给 LLM 一段文档,让它生成 3~5 个 QA 对。
优点:快速、便宜、可覆盖新领域。
缺点:合成数据会“美化”结果。有研究发现,在“复制问题”上 Recall@1 可以达到 1.00,但在“用户用自己的话问同样事实”时只有 0.38。所以合成集要尽量模拟真实用户表达。
建议:合成集必须经过人工抽样校验,不能直接用。
(3)用公开 Benchmark(如果有匹配的)
BEIR、MTEB 用于检索评估。
HotpotQA、NaturalQuestions 用于 QA。
问题:公开数据集可能和你的领域不匹配,而且存在数据污染风险。BEIR 已经不再是真正的 zero-shot benchmark,因为很多模型训练时已经包含了它。
(4)人工抽查(不可替代)
每周抽一批线上 query,人工看检索结果和生成答案。
这是最可靠的方式。
有经验的团队强调:没有人工阅读系统输出,就没有真正的评估。
(5)线上指标
用户点击、满意度、答案采纳率、转人工率。
不需要标注,但需要产品埋点。
适合验证“效果是否真的提升了”。
没有标注数据时的推荐策略:
RAG 评估分检索和生成两层。检索看 Recall@K(第一防线)、Precision、MRR、NDCG;生成看 Faithfulness(核心)、Answer Relevance、Answer Correctness。没有标注数据时,用 LLM judge(RAGAS)做快速迭代,用合成集做冷启动,但必须配合人工抽查。LLM judge 有偏差,不能作为唯一依据。
质量:上。 适合中高级岗位,能有效区分“知道几个指标”和“真正建立过 RAG 评估体系”的人。建议追问:
“RAGAS 的 Faithfulness 具体怎么算?”
“LLM judge 有什么偏差?你怎么缓解?”
“合成评估集有什么风险?”
“你实际项目怎么平衡评估成本和覆盖率?”
“线上指标怎么设计?”
“RAG 评估要分层,不能只看最终答案。先看检索,再看生成。”
“检索层核心是 Recall@K,正确答案有没有出现在 Top-K 里。Recall 低说明检索没找到,后面生成再好也没用。还有 Precision 看噪声,MRR 和 NDCG 看排序质量。”
“生成层核心是 Faithfulness,答案是否忠于检索上下文,有没有幻觉。还有 Answer Relevance 看是否答非所问,Answer Correctness 看事实正确性,Context Precision 看上下文利用率。”
“没有标注数据时,常用 LLM judge,比如 RAGAS 的 Faithfulness、Answer Relevance。但 LLM judge 有偏差,RAGAS 和人工评估的相关性只有 0.55 左右,不能全信。合成评估集可以用 LLM 从文档生成 QA 对,但会美化结果,必须人工校验。最可靠的是每周人工抽查线上 bad case。”
“我们实际的做法是:先用 RAGAS 跑 baseline 和回归测试,合成一批评估集但抽样校验,每周人工看 20~50 条线上 case,同时监控用户满意度。LLM judge 是信号,不是真相。”
评论专区
评论加载中...登录后即可发表评论