数据集格式

数据集分为两种类型:问答数据集(QA dataset)和语料数据集(Corpus dataset)。 数据输入必须遵循指定格式。

问答数据集

长话短说

您必须在qa.parquet文件中包含qidqueryretrieval_gtgeneration_gt列。

QA数据集包含用户预期的问题及其标准答案。 同时还会提供相关文档ID作为标准检索依据。 如您所知,对于单个问题可能存在多种优质答案的变体。

您的qa.parquet文件必须包含以下列:

查询ID

查询的唯一标识符。其类型为string

警告

不要创建重复的查询ID,否则可能导致意外行为。

查询

用户的问题。 其类型为string。 在这组数据中,您可以设想或收集用户向RAG系统提出的问题。 用户会向您的数据提出哪些类型的问题?

retrieval_gt

长话短说

将检索基准真值保存为二维列表。也可以是一维列表或纯字符串。

二维文档ID列表。您可以将检索的真实ID保存为列表的列表。

为什么我们需要二维列表? 某些指标支持检索时的"与"/"或"条件。 想想现实生活中的问题。 要回答单个问题,可能需要多个知识来源。

例如,如果我询问Which K-pop girl group has more members, New Jeans or Aespa?, 你必须查阅关于New JeansAespa的文档才能回答问题。 这可以是一个"与"操作。 你必须查阅两份不同的文档才能回答这个问题。

另一方面,语料库中会有大量包含"New Jeans有五位成员"知识的文档。 这些文档可以进行"或"运算。 您可以使用其中任意文档来回答问题。

因此,在这种情况下,数据将会呈现如下形式。

[
 ['NewJeans1', 'NewJeans2'],
 ['Aespa1', 'Aespa2', 'Aespa3'],
]

这意味着你必须查阅 'NewJeans1'、'NewJeans2' 中的一个以及 'Aespa1'、'Aespa2'、'Aespa3' 中的一个来回答问题。

提示

如果没有足够信息构建完整的二维检索真值列表,保存为一维列表或字符串也可以。若保存为一维列表,系统会将其视为"与"运算处理。

注意

retrieval_gt的ID必须作为doc_id包含在语料库数据集中。

当AutoRAG开始评估时,它会检查语料数据集中检索ID的存在情况。

你必须将retrieval_gt的ID与语料库数据集进行匹配。

该列至关重要,因为AutoRAG通过此列评估检索性能。 它可能影响优化性能或检索、查询扩展、段落重排等节点。

generation_gt

长话短说

将生成的正确答案保存为列表形式。如果只有一个标准答案,可以直接使用字符串格式。

您期望LLM模型生成的真实答案(ground truth)列表。

对于同一个问题,可能存在多种优质答案的变体。 因此您可以将它们全部列在一个列表中。

提示

如果只有一个标准答案,可以将其保存为字符串。

语料库数据集

长话短说

corpus.parquet文件中必须包含doc_idcontentsmetadata列。

您可以使用自己的文档创建语料库数据集。 通常需要将文档加载为文本并切分成段落。 完成切分后,单个段落即可作为语料库数据集中的一行记录。 您的RAG系统将从该语料库数据集中检索段落,因此切分策略至关重要。

文档ID

每个段落的唯一标识符。其类型为string

警告

不要创建重复的文档ID,这可能导致意外行为。

此外,我们建议您仔细检查QA数据集中的retrieval_gt id是否已包含在语料库数据集的doc_id中。

目录

实际内容。类型必须为string

为了保存内容,您需要将文档分割成段落。 有多种分割策略可供选择,您可以选择其中一种。

注意

未来将支持多模态,如图像、视频等。 但在AutoRAG的早期版本中,仅支持文本。

此外,我们计划为您的数据支持分块优化功能。

元数据

您文本段的元数据。 这是一个包含信息的字典。

您必须在元数据中包含last_modified_datetime键。 我们建议您包含段落的修改时间,但如果您不想使用时间相关功能,也可以使用datetime.now()last_modified_datetime的值必须是python datetime.datetime类的实例。

对于可选元数据,您可以添加'page'。当您需要显示段落来源时,这会很有帮助。

此外,使用prev_next_augmenter时,必须在元数据中包含prev_idnext_id

这些内容将在您使用AutoRAG的原生解析和分块功能时自动填充。

提示

如果没有元数据,可以传入空字典。 系统会自动生成默认元数据。(例如包含last_modified_datetime字段,其值为datetime.now()

注意

请确保已重置数据集文件的索引。 否则可能会出现意外行为。

示例

在寻找数据集示例吗? 查看我们在huggingface上的AutoRAG数据集合集。

或者您可以通过我们GitHub仓库中的脚本下载。 前往此处并按照说明操作。