Skip to main content
检索增强生成(RAG)是一种通过向大语言模型(LLM)提供相关外部知识来增强其能力的技术。它已成为构建 LLM 应用最广泛使用的方法之一。 本教程将向您展示如何使用 LangSmith 评估您的 RAG 应用。您将学习:
  1. 如何创建测试数据集
  2. 如何在这些数据集上运行您的 RAG 应用
  3. 如何使用不同的评估指标来衡量应用性能

概述

典型的 RAG 评估工作流程包含三个主要步骤:
  1. 创建包含问题及其预期答案的数据集
  2. 在这些问题上运行您的 RAG 应用
  3. 使用评估器来衡量应用的表现,考察因素包括:
    • 答案相关性
    • 答案准确性
    • 检索质量
在本教程中,我们将创建并评估一个机器人,该机器人可以回答关于 Lilian Weng 几篇深刻博客文章的问题。

环境设置

环境

首先,让我们设置环境变量:
然后安装我们需要的依赖项:

应用

虽然本教程使用 LangChain,但这里演示的评估技术和 LangSmith 功能适用于任何框架。请随意使用您偏好的工具和库。
在本节中,我们将构建一个基础的检索增强生成(RAG)应用。 我们将采用一个简单的实现,该实现:
  • 索引:将 Lilian Weng 的几篇博客文章分块并索引到向量存储中
  • 检索:根据用户问题检索这些文本块
  • 生成:将问题和检索到的文档传递给 LLM。

索引与检索

首先,让我们加载要为其构建聊天机器人的博客文章并对其进行索引。

生成

我们现在可以定义生成流程。

数据集

现在我们有了应用,让我们构建一个数据集来评估它。在本例中,我们的数据集将非常简单:我们将包含示例问题和参考答案。

评估器

思考不同类型 RAG 评估器的一种方式是将其视为“被评估对象”与“评估参照物”组成的元组:
  1. 正确性:响应 vs 参考答案
    • 目标:衡量“RAG 链的答案相对于真实答案的相似度/正确程度”
    • 模式:需要通过数据集提供的真实(参考)答案
    • 评估器:使用 LLM 作为评判者来评估答案正确性。
  2. 相关性:响应 vs 输入
    • 目标:衡量“生成的响应对初始用户输入的解决程度”
    • 模式:不需要参考答案,因为它将比较答案与输入问题
    • 评估器:使用 LLM 作为评判者来评估答案相关性、有用性等。
  3. ** groundedness(基于事实性)**:响应 vs 检索到的文档
    • 目标:衡量“生成的响应与检索到的上下文的一致程度”
    • 模式:不需要参考答案,因为它将比较答案与检索到的上下文
    • 评估器:使用 LLM 作为评判者来评估忠实度、幻觉等。
  4. 检索相关性:检索到的文档 vs 输入
    • 目标:衡量“我的检索结果对此查询的相关程度”
    • 模式:不需要参考答案,因为它将比较问题与检索到的上下文
    • 评估器:使用 LLM 作为评判者来评估相关性
RAG 评估概述

正确性:响应 vs 参考答案

相关性:响应 vs 输入

流程与上述类似,但我们只查看 inputsoutputs,不需要 reference_outputs。没有参考答案,我们无法评估准确性,但仍然可以评估相关性——即模型是否解决了用户的问题。

Groundedness(基于事实性):响应 vs 检索到的文档

另一种无需参考答案即可评估响应的有用方法是检查响应是否由检索到的文档所证明(或“基于”)。

检索相关性:检索到的文档 vs 输入

运行评估

我们现在可以使用所有不同的评估器来启动评估任务。
您可以在此处查看这些结果示例:LangSmith 链接##参考代码