Evaluation Dataset(评测数据集)
评测数据集是同质的数据样本集合,用于评估 AI 应用的性能与能力。在 Ragas 中,评测数据集用 EvaluationDataset 类表示,它提供了一种结构化方式来组织和管理用于评测的数据样本。
概览
评测数据集的结构
评测数据集由以下部分组成:
- Samples(样本):SingleTurnSample 或 MultiTurnSample 实例的集合。每个样本代表一次独特的交互或场景。
- Consistency(一致性):数据集内所有样本应为同一类型(要么全部是单轮,要么全部是多轮),以保持评测一致性。
整理有效评测数据集的指南
- 定义清晰目标:明确你想评测的 AI 应用具体方面,以及你想测试的场景。收集能反映这些目标的数据样本。
- 收集有代表性的数据:确保数据集覆盖多样化的场景、用户输入和期望回复,以对 AI 应用提供全面评测。这可以通过从多种来源收集数据或生成合成数据来实现。
- 质量与规模:目标是数据集足够大,能提供有意义的洞察,但又不会大到难以管理。确保数据质量高,并准确反映你想评测的真实世界场景。
从 SingleTurnSamples 创建评测数据集
在此示例中,我们将演示如何使用多个 SingleTurnSample 实例创建 EvaluationDataset。我们将逐步走完该过程,包括创建单个样本、将它们组装成数据集,以及在数据集上执行基本操作。
Step 1: 导入必要的类
首先,从你的模块中导入 SingleTurnSample 和 EvaluationDataset 类。
from ragas import SingleTurnSample, EvaluationDataset
Step 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",
)
Step 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("vibrantlabsai/amnesty_qa","english_v3")
将数据集加载到 Ragas EvaluationDataset 对象中。
from ragas import EvaluationDataset
eval_dataset = EvaluationDataset.from_hf_dataset(dataset["eval"])