跳至内容

评估数据集

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

概述

评估数据集的结构

评估数据集包含以下内容:

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

构建高效评估数据集的指导原则

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

  • 收集代表性数据: 确保数据集涵盖多样化的场景、用户输入和预期响应,以全面评估AI应用。这可以通过从不同来源收集数据或生成合成数据来实现。

  • 质量与规模: 目标是构建一个足够大的数据集以提供有意义的洞察,但又不至于庞大到难以管理。确保数据质量优良,并能准确反映您希望评估的真实场景。

从单轮样本创建评估数据集

在本示例中,我们将演示如何使用多个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: 创建评估数据集 通过传入SingleTurnSample实例列表来创建EvaluationDataset。

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

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

在实际应用中,您可能希望从现有数据集源(如Hugging Face数据集库)加载评估数据集。以下示例展示了如何从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"])