要创建 RAG(检索增强生成)系统的测试集,首先要利用现有的问答 (QA) 数据集,并使用上下文文档和经过验证的答案来扩充它们。从 SQuAD、Natural Questions 或 TriviaQA 等已提供问题和答案的数据集开始。这些数据集通常包含可以作为上下文的源文档(例如,维基百科段落)。例如,SQuAD 将问题与包含答案的特定段落配对,允许您将问题直接映射到其支持上下文。如果数据集缺少显式上下文(例如,开放域 QA 数据集),请使用 BM25 或 DPR 等检索模型从知识库(例如,维基百科)中为每个问题提取相关文档。确保检索到的上下文包含答案或推断答案的足够信息。
接下来,验证问题、上下文和答案之间的一致性。手动或以编程方式检查答案是否存在于提供的上下文中。例如,如果问题是“电吉他是何时发明的?”,上下文说明“Les Paul 在 1940 年开发了实心电吉他”,请验证“1940”是正确答案。对于模棱两可的问题,请确保上下文消除了歧义。如果问题问“什么是 Java?”,并且上下文讨论的是编程,则答案应引用该语言,而不是岛屿。对于多跳问题(例如,“球员 X 在离开 Y 队后加入了哪个队?”),组合多个上下文片段以确保可以逻辑地推导出答案。
最后,构建测试集以涵盖各种场景。包括直接的基于事实的问题、需要推理的推理性问题(例如,从出生年份计算年龄)以及具有多个有效答案的问题(例如,“汽车”与“轿车”等同义词)。将数据集拆分为训练、验证和测试子集,以避免重叠并确保公平评估。Hugging Face Datasets 等工具或自定义脚本可以自动执行上下文检索和对齐检查。例如,使用 Haystack 框架,您可以索引 Wikipedia,检索每个问题的前 k 个文档,并过滤掉不相关的上下文。这种方法平衡了效率和严谨性,为评估 RAG 的检索和生成能力提供了可靠的基准。