评估生产环境中检索增强生成 (RAG) 系统的性能,需要的不是简单地检查答案是否“正确”,而是更精细的方法。标准的机器学习 (machine learning)指标,如准确率、精确率和召回率,虽然在许多情况下有用,但往往未能全面衡量 RAG 流程的多方面性能特征。RAG 系统的效用主要取决于两个操作:信息检索的质量,以及基于检索信息生成的回答的忠实性和相关性。因此,我们的评估必须剖析这些阶段。
当 RAG 系统生成答案时,简单地标记 (token)为“正确”或“不正确”并不能说明它成功或失败的原因。检索到的上下文 (context)是否与查询无关?生成器是否误解了完全正确的上下文?或者生成器可能引入了任何提供文本中没有的信息,从而导致了幻觉 (hallucination)?基本的准确率衡量方法模糊了这些重要细节,使得诊断问题和系统地改进您的系统变得困难。生产环境 RAG 系统需要能够细致地了解每个组件对最终输出质量贡献的指标。
摆脱基本准确率的限制
设想一个情景:用户提问:“2023年气候峰会的主要决议是什么?”
- RAG 系统可能检索到关于 2022 年峰会的文件。生成器使用这个不正确的上下文 (context),可能仍然会生成一个听起来合理但事实错误的关于“2023”年峰会的答案。这时,基本答案的正确性会很低。
- 或者,检索器找到了关于 2023 年峰会的优秀文档。然而,生成器虚构了一个额外的不存在决议。答案部分正确,但包含一个与生成相关的事实错误。
- 再或者,检索器找到了好的文档,生成器准确地总结了它们,但总结过于冗长,没有帮助。
这些例子突出了需要能够准确查明 RAG 流程不同阶段的失败或成功的指标。
RAG 流程包含不同的阶段,每个阶段都需要有针对性的评估指标。检索指标评估获取文档的质量,而生成指标则侧重于大型语言模型(LLM)如何使用这些文档来回答查询。端到端指标从用户的角度评估最终输出。
让我们审视一些用于生产环境的这些高级指标。
检索质量指标
检索器的职责是从您的知识库中找到与用户查询最相关和最全面的信息集。如果检索器出现问题,生成器几乎没有机会产生高质量的回答,或者它可能因为错误的原因而成功(例如,依赖其参数 (parameter)记忆而不是提供的上下文 (context))。
1. 上下文精确率(或相关性)
上下文精确率衡量检索到的文档(或块)中与用户查询实际相关的部分所占的比例。
- **重要性:**不相关的上下文会使生成器感到困惑,导致离题的答案,或不必要地增加令牌消耗。高上下文精确率可确保生成器获得一组清晰、集中的信息。
- 衡量方法:
- 通常需要人工判断或使用 LLM 作为评判者。对于每个检索到的块,提问:“这个块是否与回答查询 X 相关?”
- 对于查询 Q 和一组检索到的块 C={c1,c2,...,ck},上下文精确率可以表示为:
上下文精确率=C 中块的总数 (∣C∣)C 中相关块的数量
- **示例:**如果检索到的 5 个块中有 3 个被认为是相关的,那么上下文精确率是 3/5=0.6。
2. 上下文召回率
上下文召回率评估回答查询所需的所有信息是否都存在于检索到的文档集中。
- **重要性:**如果检索到的上下文中缺少重要信息,生成器就无法将其包含在答案中,从而导致不完整或可能具有误导性的回答。
- 衡量方法:
- 在没有为给定查询预定义“黄金”标准的所有相关信息集的情况下,这很难衡量。
- 通常通过定性评估,或使用一组已知理想上下文的测试查询进行评估。
- 对于查询 Q、已知理想相关块集 Cgold 和检索到的块 Cretrieved:
上下文召回率=∣Cgold∣∣已检索块中与黄金标准相符的块∩Cgold∣
这需要识别检索到的块中有哪些是理想集的一部分。
- **实际做法:**使用一个精心准备的评估数据集,标注者在其中识别每个查询的所有必要块。然后,检查您的检索器获取了多少这些必不可少的块。
3. 上下文实体召回率
这是一种更细致的召回形式,此指标检查被认为是回答查询必不可少的特定命名实体(如人名、组织、日期)是否存在于检索到的上下文中。
- **重要性:**对于依赖特定事实细节的查询,确保检索到这些细节(通常是实体)非常重要。
- **衡量方法:**在查询或黄金标准答案中识别目标实体。然后,检查它们是否存在于检索到的上下文中。
值得注意的是,平均倒数排名 (MRR) 和命中率@K 等指标对于评估排名检索结果也很有价值,特别是当您对一个查询只有一个已知相关文档时。
生成质量指标(基于上下文 (context))
一旦检索到上下文,生成器(LLM)会合成一个答案。在此,我们关注的是 LLM 如何良好地使用所提供的上下文并遵循查询要求。
1. 忠实度(或根植性、归因)
忠实度衡量生成的答案是否完全由检索到的上下文中存在的信息支持。它有助于检测大型语言模型(LLM)虚构源文档中没有的信息而产生的幻觉 (hallucination)。
- **重要性:**对于 RAG 系统,信任很重要。用户期望答案来源于所提供的知识库,而不是凭空捏造。
- 衡量方法:
- **LLM 作为评判者:**通过向独立的、有能力的 LLM 提供生成的答案和检索到的上下文,进行提示。提问:“生成的答案中的主张是否可以仅使用提供的上下文完全验证?答案中是否有任何语句引入了上下文中不存在的信息?”
- **句子级归因:**将生成的答案分解为单个主张或句子。对于每个主张,尝试在上下文中识别支持证据。支持主张的比例可以得出忠实度分数。
- 示例:
- 查询:“马来西亚的首都在哪里?”
- 上下文:“吉隆坡是马来西亚的首都,以其标志性的双子塔而闻名。”
- 生成的答案(忠实):“马来西亚的首都是吉隆坡,以其标志性的双子塔而闻名。”
- 生成的答案(不忠实): “马来西亚的首都是吉隆坡,以其古老的金字塔而闻名。”(上下文中未提及金字塔。)
2. 答案相关性(与查询的相关性)
此指标评估生成的答案是否直接回答用户的查询,即使它忠实于上下文。
- **重要性:**一个忠实但实际没有回答问题的答案是没有用的。大型语言模型(LLM)可能正确地总结了上下文,但未能提取用户请求的特定信息片段。
- 衡量方法:
- **LLM 作为评判者:**提供原始查询和生成的答案。提问:“这个答案是否充分回答了用户的查询?它是否切题并有所回应?”
- 人工评估在此处也非常有效。
- 示例:
- 查询:“水在海平面的沸点是多少?”
- 上下文:“水是一种化学化合物,分子式为 H2O。它可以以固态、液态和气态存在。海洋覆盖了地球的大部分。”
- 生成的答案(忠实但不相关):“水,分子式为 H2O,以三种状态存在并覆盖了地球的大部分。”(没有回答沸点问题。)
3. 信息包含 / 答案完整性(相对于查询和上下文)
此指标评估生成的答案是否包含了从检索到的上下文中所有与充分回答查询相关的必要信息。
- **重要性:**即使上下文很丰富,生成器也可能产生一个简短或不完整的答案,遗漏了所提供文档中可用的有用细节。
- 衡量方法:
- 识别检索到的上下文中与查询相关的主要信息片段。
- 检查这些信息片段是否存在于生成的答案中。
- LLM 作为评判者:“给定查询和提供的上下文,答案是否包含了上下文中所有相关细节以充分满足查询?”
4. 简洁性
简洁性衡量答案是否适当简短且切中要点,没有不必要的冗长或重复。
- **重要性:**用户通常更喜欢直接的答案。过长的回答可能难以理解,并可能掩盖必不可少的信息。
- 衡量方法:
- 可能带有主观性。人工评估很常见。
- 将生成的答案长度与参考答案长度(如果可用)进行比较。
- LLM 作为评判者:“这个答案对于查询来说是否适当简洁,还是过于冗长/重复?”
端到端质量指标
这些指标从用户的角度审视最终输出,考量 RAG 系统的整体效用和可用性。
1. 整体答案正确性
这是最终检验:答案是否事实正确并令用户满意,无论其内部是如何得出的?
- **重要性:**这通常是用户满意度的主要指标。
- 衡量方法:
- 根据事实真相或专家知识进行人工评估。
- 如果测试查询有“黄金标准”答案,则进行比较。
2. 实用性 / 帮助性
答案是否为用户提供实际价值,帮助他们完成任务或找到他们正在寻找的信息?
- **重要性:**如果答案呈现不佳、缺乏上下文 (context)或不符合用户需求,即使是正确的答案也可能没有用。
- **衡量方法:**主要通过用户反馈(例如,点赞/踩,调查)或人工评估者评估实用性。
3. 无害性(安全性、偏见、毒性)
确保生成的内容无害、无偏见、无冒犯性或不恰当。
- **重要性:**这对于负责任的人工智能部署和维护用户信任必不可少。生产系统必须具备保障措施。
- 衡量方法:
- 毒性、偏见等方面的专用分类器。
- 提示 LLM 作为评判者检查特定类型的有害内容。
- 人工审查,特别是针对敏感话题。
实施您的评估策略
采纳这些高级指标需要从简单的基于脚本的评估转向更精细的流程。
- **LLM 作为评判者:**使用强大的 LLM(如 GPT-4)来评估忠实度和相关性等方面正变得普遍。这需要对“评判者”LLM 进行细致的提示工程 (prompt engineering),以获得一致且可靠的评估结果。请注意,充当评判者的 LLM 也可能存在自身的偏见或局限。
- **人工介入:**对于实用性、偏见或验证 LLM 评判者本身等方面,人工评估仍然必不可少。为人工标注者建立清晰的指导方针和校准标准。
- **评估框架:**像 RAGAS(RAG 评估)、TruLens 和 ARES(自动化 RAG 评估系统)这样的工具和框架提供了预置的指标和流程,用于评估 RAG 系统。这些可以大幅加快您的评估设置。我们将在第 6 章中审视其中的一些。
- **整体视图:**没有单一指标能说明全部情况。目标是建立一个仪表板,跟踪一系列涵盖检索、生成和端到端质量的指标。这使得您能够理解权衡(例如,提高忠实度可能会稍微降低简洁性),并对系统健康状况有一个全面的了解。
通过摆脱基本准确率的限制并使用这些更详细的指标,您获得了必要的可见性,以真正理解、调试并迭代改进您的生产环境 RAG 系统。这种详细的反馈循环是解决本课程后面讨论的长期维护挑战和性能调优的根本。