检索增强生成(RAG) 在扩展独立大型语言模型(LLM)的限制和克服其诸多局限性方面发挥了关键作用。通过整合检索器,RAG 提高了响应相关性和事实准确性:它只需实时利用外部知识源(如矢量文档库),并在原始用户查询或提示中添加相关上下文信息,然后将其传递给 LLM 进行输出生成过程。
对于那些深入研究 RAG 领域的人来说,一个自然的问题出现了:我们如何评估这些远非简单的系统?
为此,存在几个框架,例如DeepEval,它提供了超过 14 种评估指标来评估幻觉和真实性等标准;MLflow LLM Evaluate以其模块化和简单性而闻名,支持在自定义管道内进行评估;RAGAs专注于定义 RAG 管道,提供真实性和上下文相关性等指标来计算综合的 RAGAs 质量得分。
以下是这三个框架的摘要:
了解 RAGA
RAGA(检索增强生成评估的缩写)被认为是评估 LLM 应用程序的最佳工具包之一。它以最简单的方式成功评估了(即检索器和生成器)的性能——既可以单独评估,也可以作为单个管道联合评估。
RAGA 的核心要素是其指标驱动开发(MDD) 方法,该方法依靠数据做出明智的系统决策。MDD 需要持续监控一段时间内的重要指标,从而清晰地了解应用程序的性能。除了允许开发人员评估他们的 LLM/RAG 应用程序并进行指标辅助实验外,MDD 方法还与应用程序可重复性非常契合。
RAGA 组件
- 提示对象:定义提示的结构和内容的组件,用于引出语言模型生成的响应。通过遵循一致且清晰的提示,它有助于准确的评估。
- 评估样本:封装用户查询、生成的响应以及参考响应或基本事实的单个数据实例(类似于 ROUGE、BLEU 和 METEOR 等 LLM 指标)。它是评估 RAG 系统性能的基本单元。
- 评估数据集:一组评估样本,用于基于各种指标更系统地评估整个 RAG 系统的性能。旨在全面评估系统的有效性和可靠性。
RAGA 指标
RAGAs 提供了配置 RAG 系统指标的功能,通过定义检索器和生成器的特定指标,并将它们混合成整体 RAGAs 分数,如以下直观示例所示:
图片来源:RAGAs 文档
让我们来了解一下事物检索和生成方面的一些最常见的指标。
检索性能指标:
- 上下文召回率:召回率衡量从知识库中检索到的相关文档在真实 top-k 结果中所占的比例,即检索到多少与回答提示最相关的文档?它的计算方法是将检索到的相关文档数量除以相关文档总数。
- 上下文精度:在检索到的文档中,有多少文档与提示相关,而不是噪音?上下文精度回答了这个问题,其计算方法是将相关检索到的文档数除以检索到的文档总数。
生成性能指标:
- 忠实度:它评估生成的响应是否与检索到的证据相符,换句话说,就是响应的事实准确性。这通常通过比较响应和检索到的文档来完成。
- 语境相关性:此指标决定了生成的响应与查询的相关性。它通常基于人工判断或通过自动语义相似性评分(例如余弦相似性)计算得出。
作为连接 RAG 系统两个方面(检索和生成)的示例指标,我们有:
- 上下文利用率:这评估了 RAG 系统如何有效地利用检索到的上下文来生成其响应。即使检索器获取了出色的上下文(高精度和召回率),生成器性能较差也可能无法有效地使用它,因此提出了上下文利用率来捕捉这种细微差别。
在 RAGAs 框架中,各个指标组合起来计算出一个整体 RAGAs 分数,该分数全面量化了 RAG 系统的性能。计算此分数的过程包括选择相关指标并计算它们,将它们标准化为在同一范围内移动(通常为 0-1),并计算指标的加权平均值。权重是根据每个用例的优先级分配的,例如,对于需要高度事实准确性的系统,您可能希望优先考虑忠实度而不是召回率。
您可以在此处找到更多有关 RAGA 指标及其通过 Python 示例进行计算的信息。
总结
本文介绍并概述了 RAGA:这是一种流行的评估框架,用于从信息检索和文本生成的角度系统地衡量 RAG 系统性能的多个方面。了解此框架的关键元素是掌握其实际用途以利用高性能 RAG 应用程序的第一步。