要测试 RAG 系统在同一问题的不同措辞下的一致性,首先创建一个语义等效但措辞不同的问题数据集。例如,“光合作用是如何工作的?” 和 “解释植物中将阳光转化为能量的过程” 等问题应该检索到相同的核心信息。使用自动化指标比较答案,例如嵌入相似度(例如,来自 BERT 等模型的答案向量之间的余弦相似度)或关键术语的重叠(例如,检查 “叶绿素”、“CO2”、“葡萄糖”)。这有助于量化答案是否解决了相同的概念,即使措辞不同。此外,设计单元测试来标记相似度得分低或缺少关键细节的答案,以便开发人员识别检索或生成方面的差距。
接下来,评估系统对结构变化的鲁棒性。例如,测试添加了噪声(“你能告诉我,比如,光合作用是如何工作的吗?”)或重新排列的子句(“在植物中,使用光产生能量的机制是什么?”)的问题。这些变化评估检索组件是否正确识别了潜在意图。如果系统依赖于关键词匹配,那么当问题省略特定术语时,它可能会失败。为了缓解这种情况,通过比较为每个措辞获取的文档或上下文片段来单独测试检索。如果不同的措辞检索到不一致的上下文,则微调检索器或扩展知识库中的同义词覆盖范围。对于生成器,即使上下文略有不同,也要确保它综合出一致的答案 —— 例如,通过测试对 “法国的首都是什么?” 和 “巴黎是哪个国家的首都?” 的回答是否都清楚地说明 “巴黎”,而没有歧义。
最后,纳入人工评估以处理细微的案例。例如,如果用户问 “我如何重置我的密码?” 与 “我的登录不起作用;我如何恢复访问?” 相比,自动化指标可能会错过预期步骤中的细微差异(例如,“重置” 与 “恢复”)。人工审核员可以评估答案是否在功能上等效并满足用户意图。为了扩展此过程,使用抽样策略:使用指标自动测试 80% 的变化,并手动审核剩余的 20%。记录常见的故障模式,例如过度依赖检索中的特定措辞或生成中过度创造性,并迭代地改进系统。这种混合方法平衡了效率和彻底性,确保在各种输入下都能获得高质量的答案。