跳转到主要内容
检索增强生成(RAG)和知识库问答助手,其正确性通常由四个环节共同决定:是否发起了正确的检索请求、检索回来的文档是否被正确引用、回复内容是否完全忠于检索材料(无幻觉),以及面对知识库外的问题时是否诚实拒答。 这一页说明怎样用 NiceEval 给 RAG 应用编写完整的端到端评估用例。

检索过程与工具断言

RAG 应用通常由模型决定何时调用检索工具。如果问题包含明确的实体,检索请求应当包含对应的查询参数。 用 turn.calledTool 配合 toolMatch 和 jsonMatch 检查检索调用:
如果应用要求必须在单轮内完成检索,可以通过 .exactly(1) 约束调用次数。

检查引用标记与确定性事实

知识库系统通常要求回复中附带文档来源标识或角标。这类规则属于确定性事实,使用确定性 Match 检查:
确定性规则只用于断言固定的数字、条款编号或格式要求。开放式的语义表述留给 Judge。

用 Judge 验证回答依据与防幻觉

RAG 最严重的质量问题是模型编造检索文档里不存在的信息(幻觉)。可以通过 defineJudge 声明一个裁判模型,把用户问题、检索到的文档片段与助手的实际回复组合为材料交由 Judge 打分:
低于 0.8 时判定未达到质量要求。

测试未知问题的诚实拒答

高质量的 RAG 系统不仅要在有答案时答对,还要在知识库缺失相关信息时明确告知用户,而不是凭空猜测。这类用例称为负向测试。
把正向问答与负向拒答一起放入评估测试集,可以防止改动 Prompt 导致助手过度自信或胡乱回答。