引言
检索增强生成(RAG)流程将检索阶段与生成阶段结合起来:检索阶段获取相关文档,生成阶段由 LLM 根据这些文档回答问题。要判断系统表现,需要分别评估两个组件,并评估端到端结果。本课关注开发阶段的评估,使用离线指标和测试数据集。
开发阶段使用包含查询、文档和参考答案的标注数据集评估 RAG 流程,通过自动化指标衡量检索准确性与回答质量,尽早发现问题。这些指标提供快速、可重复的反馈,指导模型改进。生产环境的评估则监测真实用户交互,例如点击率、用户评分和 A/B 测试,重点关注用户满意度及业务关键绩效指标(KPI)。
RAG 流程的评估阶段
基础 RAG 架构包含两个主要阶段,需要分别评估,并结合起来评估:
- 检索阶段:检索器根据用户查询,从知识库中选择相关文本块或文档。评估重点是它能否找到所需信息。
- 生成阶段:LLM 根据查询和检索上下文生成答案。评估结合问题与上下文,检查答案的准确性、相关性和连贯性等质量。
分别评估两个阶段,可以判断问题来自上下文缺失或无关等检索问题,还是来自 LLM 的生成结果。还应评估端到端输出,检查最终答案能否正确、完整地回答用户问题。
评估检索组件
检索阶段通常使用带标注的测试集或参考集,即已知每个问题对应哪些相关文档的数据集,并采用信息检索指标。常见指标包括精确率、召回率和排序指标:
- Precision@K:前 K 个检索结果中,与查询相关的文档所占比例。数值越高,说明检索结果中真正有用的内容越多。例如,Precision@5 = 0.6 表示前五个文本块中有 60% 与问题相关。希望上下文包含较多正确文档、较少干扰内容时,精确率非常重要。它也有助于调整检索文档数量,或者决定重排序后保留多少文档。
- Recall@K:前 K 个结果覆盖的相关文档数量,占全部相关文档数量的比例。它衡量信息覆盖程度。Recall@K 越高,说明检索器找到了越多回答问题所需的材料。例如,Recall@10 = 0.8 表示前十个结果覆盖了 80% 的相关信息。较高召回率有助于确保必要事实得到检索。
- F1@K:Precision@K 与 Recall@K 的调和平均数。它把两者合并为一个分数,便于在精确率与召回率之间进行取舍。较高 F1@K 表示检索器能够找到大部分正确信息,同时控制无关信息数量。
- 平均倒数排名(Mean Reciprocal Rank,MRR):对于每个查询,取第一个相关文档排名的倒数,再计算平均值。它考虑结果顺序。MRR = 1.0 表示每次查询的首个结果都相关,是理想情况;数值较低意味着用户可能需要查看更多结果才能找到相关内容。如果通常只需要一个文档,并希望它排在第一位或靠前位置,MRR 尤其有用。
实际应用中,应根据系统使用的文档数量选择 K,例如 5 或 10。RAG 通常需要较高召回率,以获得回答所需的全部事实;精确率同样重要,因为上下文中的无关内容可能干扰 LLM。无关文本过多,可能影响生成过程,或者使答案包含多余信息。因此,需要同时监测精确率与召回率,兼顾上下文的针对性与完整性。
面向上下文的检索质量指标
除了传统指标,RAG 专用评估还可以直接衡量检索上下文对回答问题的帮助:
- 上下文相关性(Context Relevance):检查检索上下文是否与查询相关,以及其中是否主要包含回答所需的信息。理想情况下,上下文只包含必要信息。无关文本越多,相关性分数越低;较高分数说明检索文档的信噪比较高。
- 上下文召回率(Context Recall):衡量检索器是否找到了回答问题所需的全部信息。一种计算方法是逐项检查参考答案中的事实是否出现在检索文档中。如果上下文缺少关键事实,分数就会降低。较高分数说明关键内容得到充分覆盖。
这些指标帮助检索阶段尽可能有效地获取全部正确信息,并减少无关内容。
评估生成组件
检索到相关文档后,LLM 继续生成答案。生成阶段需要从正确性、与查询的相关性、语言流畅性,以及对来源材料的忠实程度等方面进行评估。评估场景大致分为两类:
- 有参考答案的评估:如果查询存在标准答案或参考输出,就可以将模型答案与参考内容比较。
- 无参考答案的评估:开放式问题或未标注答案的问题可能没有唯一正确答案,此时可以检查答案与上下文的事实一致性,或者由人工、LLM 判断质量。
传统的参考答案指标
存在参考答案时,可以使用经典自然语言处理指标,将生成答案与标准答案比较:
- Exact Match 与 F1:Exact Match 检查模型回答的字符串是否与正确答案完全相同。token 级 F1 使用更宽松的比较方式,衡量答案与参考内容之间的词语重合程度。
- BLEU(Bilingual Evaluation Understudy):衡量生成文本与参考文本之间 n-gram 重合的精确率,统计模型回答中的词语或短语有多少也出现在参考文本中。BLEU 越高,表示两者在词汇表达上越接近。
- ROUGE(Recall-Oriented Understudy for Gisting Evaluation):常用于摘要任务,衡量相对于参考文本的 n-gram 召回率。在问答任务中,它可以检查模型答案是否包含足够多的参考关键词。较高 ROUGE 表示覆盖了较多参考文本中的词语,可用于检查要点是否得到表达。
- 注意:作为召回类指标,ROUGE 可能给予冗长答案较高分数,因此应结合精确率指标解读。
参考答案指标方便且客观,但开放式生成的表达具有多样性,需要谨慎使用。两个答案可以使用不同措辞表达相同的正确信息。研究发现,简单的词语重合指标与答案的真实质量可能相关性较低。
检查答案正确性与事实性
许多检索问答任务的最终目标是提供事实正确的答案。存在标准答案时,可以直接衡量准确率,例如模型是否说出了正确事实。对于判断题或选择题,准确率含义明确;对于开放式问题,可以让 LLM 参照标准答案评判正确性。例如,Answer Accuracy 指标采用 LLM-as-a-judge,将模型回答与真实答案比较。RAG 评估可以要求评判模型按等级评分,例如 0 表示错误、1 表示部分正确、2 表示正确,再转换为指标分数。这种方法允许语义等价的不同表述。
另一个关键方面是答案与检索上下文之间的事实一致性,通常称为忠实度(Faithfulness)。答案应以提供的文档为依据。相关指标包括:
- 忠实度(Faithfulness):衡量答案中的事实或论断是否都得到检索上下文支持。评估会将答案与来源文本块比较,模型加入缺少上下文依据的信息时,分数会降低。RAGAS 的一种实现方式是将答案划分为独立陈述,再使用 LLM 或字符串匹配逐项核验。分数通常介于 0 和 1 之间,表示有多少陈述能够在检索文档中找到依据或由其推断得到。分数为 1 表示答案完全有提供的证据支持。即使答案听起来合理,如果缺少上下文依据,忠实度仍会较低,因此该指标有助于发现幻觉。开发阶段应标记低忠实度答案并进行审查,它们可能包含幻觉,也可能反映检索问题。
- 注意:需要了解所用评估框架的指标计算方法。例如,RAGAS 可能为单个查询多次调用 LLM 评判模型,从而增加费用。
- 答案相关性与完整性:还需要检查答案是否真正回应了用户的问题。答案可能准确描述文档中的某些事实,却与用户询问的内容无关。Answer Relevancy 衡量回答与问题的直接相关程度,通常会降低离题、包含多余信息或只回答部分问题的答案分数,也可以借助 LLM 评估。较高分数表示回答切合问题,提供足够信息,并覆盖所需内容。该指标关注是否切题及是否有效回应,因此需要与正确性指标共同使用。
生成阶段同时评估语言表现和内容质量。语言表现包括流畅性、语法等现代 LLM 通常处理较好的方面;内容质量包括事实是否正确、是否忠于提供的来源,以及是否相关且完整地回答问题。可以结合参考答案比较与模型评判,量化这些质量要求。