评估和监视 RAG 应用程序简介
评估和监视是了解 RAG 应用程序是否达到用例所规定的*质量、成本和延迟要求的关键组件。 从技术上讲,评估发生在开发过程中,监视发生在应用程序部署到生产环境后,但基本组件是相似的。
非结构化数据上的 RAG 是一个复杂的系统,包含许多影响应用程序质量的组件。 调整任何单个元素可能会对其他元素产生级联影响。 例如,数据格式更改可能会影响检索的区块以及 LLM 生成相关响应的能力。 因此,除了将应用程序作为一个整体进行评估之外,还必须评估应用程序的每个组件,以便根据这些评估来迭代地优化它。
评估和监视:经典 ML 与生成式 AI
对生成式 AI 应用程序的评估和监视(包括 RAG)在几个方面与经典机器学习不同:
主题 | 经典 ML | 生成式 AI |
---|---|---|
指标 | 指标评估组件的输入和输出,例如特征偏移、精度、召回率、延迟等。 由于只有一个组件,因此总体指标 == 组件指标。 | 组件指标评估每个组件的输入和输出,例如精度 @ K、nDCG、延迟、有害性等。 复合指标评估多个组件如何相互作用:忠实度衡量生成器对需要链输入、链输出和内部检索器输出的检索器知识的遵守情况。 总体指标评估系统的总体输入和输出,例如答案的正确性和延迟。 |
计算 | 答案肯定是“正确”或“错误”。 确定性指标有效。 | 答案是“正确”或“错误”,但是:• 有很多正确答案(不确定性)。 • 有些正确答案更加正确。 需要:• 人工反馈以确保信心。 • 用于缩放评估的 LLM 判定指标。 |
评估和监视的组件
有效评估和监视 RAG 应用程序的质量、成本和延迟需要多个组件:
- 评估集:若要严格评估 RAG 应用程序,需要一组能够代表应用程序预期用途的特选评估查询(最好是输出)。 这些评估示例应具有挑战性、多样性,并进行更新,以反映不断变化的用途和要求。
- 指标定义:无法管理未衡量的内容。 若要提高 RAG 质量,必须定义用例的质量含义。 根据应用程序,重要指标可能包括关键利益干系人的响应准确性、延迟、成本或评级。 需要衡量每个组件、组件之间的交互方式以及整个系统的指标。
- LLM 判定: 鉴于 LLM 响应的开放式性质,在每次评估时读取每个响应以确定输出是否正确是不可行的。 使用额外不同的 LLM 来审查输出有助于缩放评估并计算额外指标,例如对数千个上下文令牌的响应的基础性,这对于人类测评员来说是不可行的,无法有效地进行规模评估。
- 评估工具:在开发过程中,评估工具可以帮助你为评估集中的每条记录快速执行应用程序,然后通过 LLM 判定和指标计算运行每个输出。 这尤其具有挑战性,因为此步骤会“阻止”内部开发循环,因此速度至关重要。 一个好的评估工具会尽可能地并行化这项工作,通常需要额外的基础结构,例如更多 LLM 容量。
- 面向利益干系人的 UI:作为开发人员,你可能不是正在开发的应用程序内容的领域专家。 若要从能够评估应用程序质量的人类专家那里收集反馈,需要一个界面,允许他们与应用程序交互并提供详细的反馈。
- 生产跟踪日志记录:一旦投入生产,需要评估大量请求/响应以及每个响应是如何生成的。 例如,你需要知道低质量答案的根本原因是检索步骤还是幻觉。 生产日志记录必须跟踪输入、输出和中间步骤(如文档检索),以便能够对生产中出现的问题进行持续监视、早期检测和诊断。
这些文档在评估 RAG 质量中更详细地介绍了评估。