跳到内容

评估数据集

评估数据集是数据样本的同质集合,旨在评估 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 Datasets 加载评估数据集

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

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

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

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

from ragas import EvaluationDataset

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