数据集格式¶
数据集分为两种类型:问答数据集(QA dataset)和语料数据集(Corpus dataset)。 数据输入必须遵循指定格式。
问答数据集¶
长话短说
您必须在qa.parquet文件中包含qid、query、retrieval_gt和generation_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 Jeans
和Aespa的文档才能回答问题。
这可以是一个"与"操作。
你必须查阅两份不同的文档才能回答这个问题。
另一方面,语料库中会有大量包含"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_id、contents和metadata列。
您可以使用自己的文档创建语料库数据集。 通常需要将文档加载为文本并切分成段落。 完成切分后,单个段落即可作为语料库数据集中的一行记录。 您的RAG系统将从该语料库数据集中检索段落,因此切分策略至关重要。
文档ID¶
每个段落的唯一标识符。其类型为string。
警告
不要创建重复的文档ID,这可能导致意外行为。
此外,我们建议您仔细检查QA数据集中的retrieval_gt id是否已包含在语料库数据集的doc_id中。
目录¶
实际内容。类型必须为string。
为了保存内容,您需要将文档分割成段落。 有多种分割策略可供选择,您可以选择其中一种。
注意
未来将支持多模态,如图像、视频等。 但在AutoRAG的早期版本中,仅支持文本。
此外,我们计划为您的数据支持分块优化功能。
路径(可选但推荐)¶
段落的原始路径。插入此路径时,您将追踪该段落的来源路径。这对于调试或显示检索到的段落来源非常有用。
当您使用AutoRAG的原生解析和分块功能时,此内容将自动填充。
类型是 string。
start_end_idx (可选但推荐)¶
该段落在原解析文档中的起始和结束索引。当您拥有原始数据时,可以通过此索引使用新语料更新问答系统。
使用AutoRAG原生解析和分块功能时将自动填充此项。
该类型是由整型数(start, end)组成的元组。
元数据¶
您文本段的元数据。 这是一个包含信息的字典。
您必须在元数据中包含last_modified_datetime键。
我们建议您包含段落的修改时间,但如果您不想使用时间相关功能,也可以使用datetime.now()。
last_modified_datetime的值必须是python datetime.datetime类的实例。
对于可选元数据,您可以添加'page'。当您需要显示段落来源时,这会很有帮助。
此外,使用prev_next_augmenter时,必须在元数据中包含prev_id和next_id。
这些内容将在您使用AutoRAG的原生解析和分块功能时自动填充。
提示
如果没有元数据,可以传入空字典。
系统会自动生成默认元数据。(例如包含last_modified_datetime字段,其值为datetime.now())
注意
请确保已重置数据集文件的索引。 否则可能会出现意外行为。
示例¶
在寻找数据集示例吗? 查看我们在huggingface上的AutoRAG数据集合集。
或者您可以通过我们GitHub仓库中的脚本下载。 前往此处并按照说明操作。