要测试 RAG 系统是否能正确处理需要多条证据的查询,首先要设计明确需要整合来自不同来源的不同事实的测试用例。例如,一个像“电动汽车对环境有什么影响?与汽油车相比如何?”这样的查询需要关于电动汽车电池生产(例如,锂矿开采的影响)和汽油车排放(例如,每英里的二氧化碳排放量)的证据。如果系统只检索到一个文档(例如,电池数据但没有排放比较),答案将是不完整或不正确的。测试用例应该验证所有必要的证据都被检索并且被准确地综合。
接下来,模拟部分或不相关检索可能误导答案的场景。例如,创建一个知识库,其中包含重叠但不完整的文档。假设一个查询询问“凡尔赛条约如何促成二战?条约之后又有哪些经济政策?” 如果系统检索到一份关于条约的领土条款的文件,但遗漏了关于条约后德国恶性通货膨胀的文件,答案可能只会责怪领土争端,而忽略了经济因素。为了检测到这一点,跟踪系统的响应是否包含预先构建的清单中定义的所有关键点(例如,领土变更、赔款、经济崩溃)。自动化检查可以标记缺失的组件,而手动审查可以确保事实之间细微的联系得到保留。
最后,测试删除单个文档会改变正确性的对抗性案例。例如,一个医学查询,例如“糖尿病患者高血压的一线治疗方法是什么?” 需要结合高血压指南(例如,ACE 抑制剂)和糖尿病的具体考虑因素(例如,如果存在低血糖风险,则避免使用 β 受体阻滞剂)。如果系统检索到一般的高血压指南,但遗漏了糖尿病的具体建议,答案可能会推荐不安全的选择。为了验证稳健性,系统地从检索池中删除一个关键文档,并验证系统的答案是否变得不正确。这种“消融”方法可以隔离依赖关系,确保模型不会过度依赖部分数据或做出未经支持的假设。将此与精确率(正确的包含)和召回率(缺失的事实)等指标配对,以量化性能差距。