跳转到内容

评估数据集

评估数据集是 数据样本 的同构集合,旨在评估 AI 应用程序的性能和能力。在 Ragas 中,评估数据集使用 EvaluationDataset 类来表示,该类提供了一种结构化的方式来组织和管理用于评估目的的数据样本。

概述

评估数据集的结构

一个评估数据集由以下部分组成:

  • 样本SingleTurnSampleMultiTurnSample 实例的集合。每个样本代表一个独特的交互或场景。
  • 一致性:数据集中的所有样本都应属于同一类型(要么全是单轮样本,要么全是多轮样本),以保持评估的一致性。

策划有效评估数据集的指南

  • 定义明确的目标:确定您想要评估的 AI 应用程序的特定方面以及您想要测试的场景。收集能够反映这些目标的数据样本。

  • 收集代表性数据:确保数据集覆盖各种场景、用户输入和预期响应,以便对 AI 应用程序进行全面评估。这可以通过从各种来源收集数据或生成合成数据来实现。

  • 质量和规模:目标是数据集足够大,能够提供有意义的见解,但又不能大到难以管理。确保数据质量高,并准确反映您想要评估的真实世界场景。

从 SingleTurnSamples 创建评估数据集

在此示例中,我们将演示如何使用多个 SingleTurnSample 实例创建一个 EvaluationDataset。我们将逐步介绍整个过程,包括创建单个样本、将它们组装成一个数据集,以及对数据集执行基本操作。

第 1 步:导入必要的类

首先,从您的模块中导入 SingleTurnSample 和 EvaluationDataset 类。

from ragas import SingleTurnSample, EvaluationDataset

第 2 步:创建单个样本

创建多个代表单个评估样本的 SingleTurnSample 实例。

# Sample 1
sample1 = SingleTurnSample(
    user_input="What is the capital of Germany?",
    retrieved_contexts=["Berlin is the capital and largest city of Germany."],
    response="The capital of Germany is Berlin.",
    reference="Berlin",
)

# Sample 2
sample2 = SingleTurnSample(
    user_input="Who wrote 'Pride and Prejudice'?",
    retrieved_contexts=["'Pride and Prejudice' is a novel by Jane Austen."],
    response="'Pride and Prejudice' was written by Jane Austen.",
    reference="Jane Austen",
)

# Sample 3
sample3 = SingleTurnSample(
    user_input="What's the chemical formula for water?",
    retrieved_contexts=["Water has the chemical formula H2O."],
    response="The chemical formula for water is H2O.",
    reference="H2O",
)

第 3 步:创建 EvaluationDataset

通过传递一个 SingleTurnSample 实例列表来创建一个 EvaluationDataset。

dataset = EvaluationDataset(samples=[sample1, sample2, sample3])

从 Hugging Face 数据集加载评估数据集

在实践中,您可能需要从现有的数据来源加载评估数据集,例如 Hugging Face Datasets 库。以下示例演示了如何从 Hugging Face 数据集加载评估数据集并将其转换为 EvaluationDataset 实例。

确保数据集包含评估所需的字段,例如用户输入、检索到的上下文、响应和参考答案。

from datasets import load_dataset
dataset = load_dataset("vibrantlabsai/amnesty_qa","english_v3")

将数据集加载到 Ragas EvaluationDataset 对象中。

from ragas import EvaluationDataset

eval_dataset = EvaluationDataset.from_hf_dataset(dataset["eval"])