05. RAG 系统的评测指标怎么设计?RAGAS 框架是什么?

整理 RAG 系统检索侧与生成侧评测指标,以及 RAGAS 框架的核心思路。

简单回答

RAG 系统的评测需要分检索和生成两个维度分别评估。检索侧关注召回率(Recall@K)和排序质量(MRR、NDCG);生成侧关注答案忠实性(Faithfulness,不能脱离检索结果编造)、答案相关性(Answer Relevance,是否真正回答了问题)、以及上下文利用率(Context Utilization)。RAGAS 是一套自动化 RAG 评测框架,用 LLM 来计算这几个维度的得分,优点是无需人工标准答案,适合快速评测迭代。

详细解答

为什么 RAG 评测比单模型更复杂

RAG 系统的输出质量是检索和生成两个环节共同决定的,两者的失败模式不同,需要分开度量。一个常见的误区是只看最终回答的质量,这样无法区分"检索失败导致的问题"和"检索正确但生成失败的问题",排查起来效率很低。

更麻烦的是,RAG 系统存在特有的失败模式:检索到了正确文档,但模型忽略了;检索到的文档和问题相关但没有直接答案,模型"自由发挥"产生了幻觉;多个检索结果之间存在矛盾,模型没有识别出来。这些失败模式都需要专门的指标来捕捉。

检索侧评测指标

Recall@K:前 K 个检索结果中,正确相关文档的比例。这是最基础的检索质量指标。需要有"标准相关文档"的标注(ground truth),每道测试题要预先标注哪些文档是相关的。

Precision@K:前 K 个检索结果中,相关文档的比例。和 Recall 存在天然的权衡——K 越大,Recall 越高,但 Precision 可能下降(引入了更多不相关文档)。

MRR(Mean Reciprocal Rank):考虑第一个相关文档的排名位置。如果第一个相关文档排在第 1 位,RR=1;排在第 2 位,RR=0.5;排在第 K 位,RR=1/K。MRR 强调第一个相关结果要排得靠前,这对于 Top-1 Rerank 场景很重要。

NDCG(Normalized Discounted Cumulative Gain):考虑相关文档的排名位置和相关程度(有的文档比其他文档更相关)。是信息检索中最全面的评测指标,但需要更细粒度的相关性标注(不只是相关/不相关的二分,而是多级相关性分数)。

生成侧评测指标

Faithfulness(忠实性):最重要的 RAG 特有指标。衡量模型的回答是否只使用了检索到的文档内容,没有"凭空捏造"。一个 Faithfulness=1.0 的回答意味着回答中每一个陈述都能在检索文档里找到支撑;Faithfulness 低说明模型在检索结果之外加入了自己的"创作",也就是幻觉。

计算方式通常是用 LLM 把回答拆解成若干个原子陈述,然后逐条检查每个陈述能否在检索文档中找到依据,最后取比例。

Answer Relevance(答案相关性):衡量回答是否真正回答了用户的问题。检索到了正确文档但模型给了一个不相关的答案,Answer Relevance 就低。RAGAS 的计算方式是让 LLM 根据回答"反推"出这个回答是在回答什么问题,把反推出来的问题和原始问题做相似度比较。

Context Precision(上下文精确率):检索到的上下文中,真正有用的内容占多少。如果检索到的 5 个 Chunk 中只有 1 个对回答有贡献,Context Precision 就低,意味着检索引入了太多噪音。

Context Recall(上下文召回率):回答所需的信息是否都在检索结果里。如果问题的答案需要 A 和 B 两条信息,但检索只找到了 A,Context Recall 就低。

Answer Correctness(答案正确性):和标准答案比较,回答是否正确。需要有预先准备的标准答案,是最直接但也最需要标注工作量的指标。

RAGAS 框架

RAGAS(Retrieval-Augmented Generation Assessment)是由 Exploding Gradients 开发的开源 RAG 评测框架,核心设计思路是无需人工标准答案,完全用 LLM 来自动计算各维度的评测分数。

RAGAS 的输入是:问题(question)、检索到的上下文(contexts)、模型生成的回答(answer),以及可选的标准答案(ground truth)。

它自动计算以下指标:Faithfulness(忠实性,不需要 ground truth)、Answer Relevance(不需要 ground truth)、Context Precision(需要 ground truth)、Context Recall(需要 ground truth)。前两个因为不需要 ground truth,实现了"无标注评测",可以直接在真实用户 query 上跑,成本极低。

RAGAS 的局限是:它本身的评测质量依赖于 Judge LLM 的能力,Judge 的偏差会直接影响 RAGAS 的分数可靠性;它是设计来快速迭代用的,不能完全替代人工评测;对于一些高度专业的领域(医学、法律),LLM Judge 判断 Faithfulness 的能力有限。

构建 RAG 评测数据集

一个完整的 RAG 评测体系还需要构建领域相关的测试集。通常的做法是:从知识库里抽取一批文档,用 LLM 自动生成"如果用户会问什么问题"(可以要求生成多难度的问题——简单的单跳、复杂的多跳、对比类问题等),再用 LLM 生成标准答案,最后人工抽样审核质量。这样能生成大量有针对性的测试样本,成本比全人工低很多。

面试时可以这样答

RAG 评测要分检索和生成两层来看,只看最终答案质量的话,出了问题不知道该改检索还是改生成。

检索侧用 Recall@K、MRR、NDCG,核心是"正确文档有没有被检索到、排在哪"。生成侧最重要的两个指标是 Faithfulness(回答有没有脱离检索结果乱编)和 Answer Relevance(有没有真正回答问题)。RAG 特有的失败模式是"检索到了正确文档但模型忽略了",Faithfulness 就能捕捉这个。

RAGAS 是自动化评测框架,亮点是 Faithfulness 和 Answer Relevance 两个指标不需要人工标准答案,用 LLM 直接计算,适合快速迭代时跑。代价是结果质量依赖 Judge LLM,专业领域不够可靠,不能替代人工评测,但日常迭代够用。

实际建评测集的方法:从知识库里抽文档,用 LLM 自动生成多样性问题(单跳、多跳、对比类),再生成参考答案,人工抽检质量。这样能低成本生成大量有针对性的测试用例。

常见追问

  1. RAGAS 里 Faithfulness 的计算具体步骤是什么?LLM 是怎么做原子陈述分解的?
  2. 如果检索结果和标准答案之间存在矛盾信息,RAGAS 怎么处理?
  3. 除了 RAGAS,还有哪些 RAG 评测框架?它们有什么差异?