数据集
数据集与实验结果
在评估人工智能系统时,我们通常处理两种主要类型的数据:
1、评估数据集:这些存储在 datasets 目录下。
2、评估结果:这些存储在 experiments 目录下。
评估数据集
评估数据集包含:
1、输入 :系统将处理的一组输入。
2、预期输出(可选) :系统对给定输入的预期输出或响应。
3、元数据(可选) :可与数据集一起存储的附加信息。
例如,在检索增强生成(RAG)系统中,它可能包含查询(系统输入)、评分说明(用于评分系统输出)以及查询复杂度等元数据。
元数据对于对数据集进行切片和切块特别有用,使您能够跨不同方面分析结果。例如,您可能希望查看系统在复杂查询与简单查询上的表现,或者它如何处理不同语言。
实验结果
实验结果包括:
1、 数据集中的所有属性。
2、 被评估系统的响应。
3、 指标结果。
4、 可选元数据,例如指向给定输入的系统跟踪的 URI。
例如,在 RAG 系统中,结果可能包括查询、评分说明、响应、准确率分数(指标)、系统跟踪链接等。
在 Ragas 中使用数据集
Ragas 提供了一个 Dataset 类来处理评估数据集。以下是使用方法:
创建数据集
fromragasimportDataset# Create a new datasetdataset=Dataset(name="my_evaluation",backend="local/csv",root_dir="./data")# Add a sample to the datasetdataset.append({"id":"sample_1","query":"What is the capital of France?","expected_answer":"Paris","metadata":{"complexity":"simple","language":"en"}})加载现有数据集
# Load an existing datasetdataset=Dataset.load(name="my_evaluation",backend="local/csv",root_dir="./data")数据集结构
Ragas 中的数据集具有灵活性,可以包含评估所需的任何字段。常见字段包括:
- id:每个样本的唯一标识符
- query或input:人工智能系统的输入
- expected_output或ground_truth:预期响应(如有)
- metadata:关于样本的附加信息
数据集创建最佳实践
1、代表性样本:确保数据集代表人工智能系统将遇到的真实场景。
2、均衡分布:包含不同难度级别、主题和边缘情况的样本。
3、质量优于数量:拥有少量高质量、精心策划的样本比大量低质量样本更好。
4、丰富元数据:包含相关元数据,以便跨不同维度分析性能。
5、版本控制:跟踪数据集随时间的变化,确保可重现性。
数据集存储与管理
本地存储
对于本地开发和小型数据集,您可以使用 CSV 文件:
dataset=Dataset(name="my_eval",backend="local/csv",root_dir="./datasets")云存储
对于较大的数据集或团队协作,考虑使用云后端:
# Google Drive (experimental)dataset=Dataset(name="my_eval",backend="gdrive",root_dir="folder_id")# Other backends can be added as needed数据集版本控制
跟踪数据集版本以实现可重现的实验:
# Include version in dataset namedataset=Dataset(name="my_eval_v1.2",backend="local/csv",root_dir="./datasets")与评估工作流集成
数据集与 Ragas 评估工作流无缝集成:
fromragasimportexperiment,Dataset# Load your datasetdataset=Dataset.load(name="my_evaluation",backend="local/csv",root_dir="./data")# Define your experiment@experiment()asyncdefmy_experiment(row):# Process the input through your AI systemresponse=awaitmy_ai_system(row["query"])# Return results for metric evaluationreturn{**row,# Include original data"response":response,"experiment_name":"baseline_v1"}# Run evaluation on the datasetresults=awaitmy_experiment.arun(dataset)此集成使您能够在测试数据(数据集)和评估结果(实验)之间保持清晰的分离,从而更轻松地跟踪进度并比较不同方法。