Agent RAG 测试工程笔记 14:RAG门控层拆解:什么时候该答?什么时候必须拒绝?

Agent  RAG 测试工程笔记 14:RAG门控层拆解:什么时候该答?什么时候必须拒绝? 一、背景为什么RAG不能“有内容就回答”在做RAG系统测试时觉得只要检索到了内容就应该回答实际情况是很多“看起来能答”的问题其实不应该回答例如检索到了相关词但没有操作步骤检索结果来自多个文档存在污染用户问对比/推荐问题但没有明确依据如果直接让模型生成很容易“合理胡说”所以需要引入一层门控层Gate / Decision Layer二、门控层在做什么判断当前检索结果是否“足以支持回答”也就是说检索层尽量“找”门控层负责“筛”本质不是生成是证据判断 风险控制三、门控层整体流程可以抽象为检索结果top_k chunks↓是否有命中↓证据是否充足↓是否存在高风险问题↓是否存在跨文档污染↓最终决策ANSWER / REFUSE可以压缩为三类判断核心判断逻辑1️⃣ 没有证据 → 不答检索为空或相关性极低直接拒绝2️⃣ 证据不足 → 不答典型场景操作类问题Howto例如问题如何查看系统日志检索结果可以通过日志查看系统状态问题没有步骤没有操作细节结论证据不足 → 拒绝回答3️⃣ 证据完整 → 才答例如问题如何设置 top_k 参数检索结果1. 打开配置文件2. 修改 top_k33. 保存有步骤参数结论证据充分 → 可以回答四、典型风险场景测试重点1️⃣ 错误放行不该答却答了常见情况操作类问题但没有步骤检索结果不完整多文档混合风险模型开始“编步骤”2️⃣ 过度拒绝该答却拒绝了常见情况有内容但规则过严关键词没命中“证据词”风险用户体验差明明能答却拒绝3️⃣ 多文档污染Scope问题检索结果A文档 B文档混在一起风险模型拼接不同文档内容产生错误回答解决SCOPE过滤只保留主文档4️⃣ 对比 / 推荐类问题例如课程A和课程B哪个更推荐风险没有明确依据模型容易主观判断策略拒绝回答五、测试思路这一层怎么测1️⃣ 验证“该拒绝的是否拒绝”构造无命中问题操作类无步骤问题对比类问题预期REFUSE2️⃣ 验证“该回答的是否能回答”构造明确步骤参数说明完整预期ANSWER3️⃣ 验证“边界问题”重点半有步骤是否误判多文档混入是否过滤六、一个关键认知重要门控层决定的是“是否允许生成”不是“生成什么”如果这一层失效检索错 → 还能修门控错 → 直接乱答所以这是RAG系统“可控性”的核心七、总结检索层的核心就是决定“回不回答”本质是在做证据判断。具体需要从三种情况去看第一种没有证据 → 直接拒绝如果检索层没有返回内容或者相关性很低说明系统根本没有依据这种情况必须拒绝。第二种证据不够 → 也不回答比如用户问的是“如何操作”这种问题但检索结果里只有一些关键词描述没有步骤、参数这种关键证据这种也会判定为证据不足不能放给模型去生成不然模型很容易自己编。第三种证据完整 → 才允许回答只有当检索结果能提供相对完整的信息比如有步骤、有明确说明这时候才会进入生成阶段。一句话门控层不是在做生成而是在判断“当前信息是否有资格被用来回答”。