← 返回文章
RAGGroundingEvaluation

RAG 没检索到证据时,应该怎么回答?

区分没有命中、命中但无权限、证据冲突;拒答也要告诉用户下一步。

一个常见的 RAG 失败路径是:检索没有找到能支持结论的片段,模型仍根据通用知识给出流畅答案。对知识库问答来说,语言流畅不能代替证据。

我会把“没有答案”拆成至少三类:查询范围内确实没有相关文档;相关文档存在但当前用户无权访问;找到了多份互相矛盾或版本不明的资料。对用户的措辞可以保持简洁,但系统内部必须保留这些不同原因,方便排障,也避免泄露无权限文档的存在或内容。

让拒答可操作

当授权范围内证据不足时,回答应说明当前无法依据资料确认,并建议缩小时间范围、补充文档编号或找负责人核实。不要凭空编出处,也不要把低相似度阈值当成唯一判断:高分片段仍可能只谈到了相似主题,没有回答问题。

离线评估要加入“应该拒答”的问题,衡量系统在无依据时是否克制。只用有标准答案的题测准确率,会奖励系统猜测,却看不到真实业务里最危险的错误。

不要把一个阈值当作全部判断

检索相似度回答的是“这段文本与问题有多像”,不等于“这段文本是否支持某个结论”。问“合同是否允许提前终止”,命中的段落可能只是在定义合同期限。分数再高,也不能从定义推导出允许终止。

一个较稳的流程是先检查候选是否属于当前版本与授权范围,再判断证据是否覆盖问题中的主体、时间、条件和结论。需要组合多段资料时,保留各段的出处,并标出条件之间是否矛盾。若只找到部分条件,答复应区分“已确认部分”和“尚无法确认部分”,而不是把缺口补成肯定句。

拒答也有质量指标

评估集应包含无文档、旧版文档、无权限文档、同名实体和相互矛盾文档。分别看:应答的问题有多少被错拒,应拒的问题有多少被硬答;同时人工检查拒答是否泄露了受限文档的存在。

面向用户可以说“在当前可访问资料中没有找到足够依据,请提供合同编号或联系负责人核实”,但不要说“我知道某份无权查看的文件里有答案”。内部诊断则应记录检索阶段和证据判断的失败原因,帮助维护人员分辨需要补资料、修索引还是调整问题表达。

拒答不应抹掉已知事实

有的问题一半能回答、一半不能。例如资料能确认报销额度,却没有给出新政策的生效时间。系统可以分别陈述“额度在当前文件中为多少”以及“生效时间未找到足够依据”,并给每个确定陈述附上引用。简单返回“我不知道”虽然安全,却浪费了已有证据;把时间自行推断出来则危险。

实现上可以把问题拆成待验证的事实点,逐项寻找证据,再决定完整回答、部分回答或拒答。这个步骤不必一定交给多轮 Agent:固定模板、结构化中间结果和人工可读的证据表也能完成。关键是让答案中的每个关键断言都有对应来源,并把缺失部分保留下来供用户追问。

一个容易答错的反例

问“2026 年新制度规定所有员工都可以远程办公吗?”检索命中了“员工可以申请远程办公”,但同一文档后面规定“须经主管批准,且部分岗位除外”。若只引用第一句,系统会把有条件的申请资格说成无条件权利。这里不是没有命中,而是证据不完整。

对于这种题,我会要求证据覆盖量词、主体、条件和例外,再判断能否给出肯定结论。若只能确认“可以申请”,回答就停在“可以申请,是否批准还取决于条件”;若例外条款无法定位,就说明尚不能确认适用范围。拒答的本质是停止未经证实的推断,而不是机械输出一句“资料不足”。