RAG 项目最早的错误常发生在检索器出现之前: 团队没有规定问题需要哪类外部知识, 答案必须达到何种精度, 哪些来源允许使用, 证据不足时应该怎样响应. 于是同一套系统同时承担事实问答、统计计算、流程执行和开放创作, 最终只能用模糊的主观评分判断效果.
这一章以任务契约为共同对象. 契约至少包含输入问题 , 允许访问的语料范围 , 期望输出形态, 可接受证据, 时效要求和失败动作. 时间与权限进入定义以后, “回答正确”才成为可复现判断. 同一句问题在不同用户、地区或日期下可能有不同可用证据.
任务从哪里分流
外部知识需求
需要查找外部事实并给出出处的任务适合进入 RAG. 需要精确计数、联接、排序和事务一致性的任务更适合结构化查询; 需要执行动作的任务应调用带鉴权的工具; 只要求风格和想象力的任务可以直接生成. 混合任务可先分解: 检索负责证据, 数据库负责计算, 工具负责动作, 模型负责解释.
是否采用 RAG, 取决于任务是否需要可更新、可撤回、可授权并可引用的外部知识. 这个判断比模型是否“知道答案”更稳定. 参数记忆偶尔答对, 不能替代来源约束; 检索到材料, 也不能替代精确计算.
判断时先圈出答案中必须核验的命题. 若这些命题来自频繁变化或组织私有材料, 检索具有直接价值. 若命题主要是稳定常识, RAG 的收益可能小于接入和治理成本. 若输出只是改写用户已经提供的文本, 当前上下文本身就是证据, 没有必要再访问知识库.
确定性能力分流
结构化数据的查询语言已经规定过滤、聚合和联接语义. 把库存表、交易明细或权限关系转成自然语言片段再做向量搜索, 会把确定性问题改造成近似问题. 更稳妥的分工是由数据库产生数值和记录, 检索补充解释材料, 生成模型只组织两类结果.
带副作用的请求进入工具系统. “退款政策是什么”可以检索文档, “为订单退款”则需要经过业务 API 的身份校验、金额检查和幂等控制. RAG 提供决策依据, 不承担动作权限.
共同的系统对象
快照、候选与证据
语料快照 保存文档身份、版本、来源位置、有效时间和访问控制. 检索运行记录查询表示、过滤条件、索引版本和候选 . 证据选择器输出 , 生成器输出回答 , 引用映射 连接命题与证据. 这些对象应能独立保存和重放.
错误也按对象归属. 目标证据不在语料属于覆盖问题; 在语料但未进入候选属于召回问题; 进入候选却未进上下文属于排序或预算问题; 上下文包含证据但回答错误属于生成问题; 回答正确却链接错位置属于引用问题. 这种分层让优化不再依赖猜测.
候选 与证据 的区别尤其重要. 候选只表示检索器认为值得进一步检查, 可以包含近似、重复和干扰项. 证据则应足以支持某个回答命题, 并满足版本、权限和来源条件. 重排器提高相关性, 证据选择器还要处理互补与预算.
运行记录
一次运行绑定查询时间、用户范围和语料快照. 查询改写、过滤、候选、上下文、回答与引用依次记录, 每一步都能重放. 如果系统只保留最终答案, 同一问题隔天变化时无法判断是源文档更新、索引切换还是模型输出波动.
运行对象也为离线实验提供接口. 固定候选可比较重排器, 固定上下文可比较生成模型, 固定回答可比较引用验证器. 这种边界测试与端到端测试互补.
基线的比较口径
三条最低对照
最小基线使用少量人工核验文档、固定切分、一个稀疏检索器、一个生成提示和一组带证据标注的问题. 它不追求最高分, 作用是让每次改动只改变一个变量. 若一开始就混合查询改写、多个向量模型、重排和代理循环, 失败无法归因.
基线同时保留无检索生成、只返回搜索片段和检索后生成三条结果. 无检索结果显示模型参数记忆的贡献; 只返回片段显示搜索本身的上限; 检索后生成显示语言模型是否正确使用证据. 三者共同构成最低限度的参照系.
假设 100 个问题中, 无检索答对 48 个, 搜索片段对 76 个问题包含充分证据, 完整 RAG 答对 65 个. 当前检索提供了明显的可达空间, 生成环节仍损失 11 个有证据样本. 这组数不能证明某个组件必然有错, 却能把第一轮检查聚焦在上下文和证据使用.
分层测量
语料覆盖、recall@k、重排指标、上下文证据覆盖、答案正确性和引用支持率分别报告. 一个总分可以用于发布概览, 不足以指导修复. 权限与删除采用硬门槛, 不参与质量平均.
问题集按实体、数字、时间、多跳、表格和无答案等属性切片. 某次改动若提高平均召回却破坏编号查询, 切片结果会显示退化. 总体样本较少时同时给出原始计数, 避免百分比显得过度精确.
失败动作属于定义
四类检索结果
证据不足、证据冲突、来源过期和权限不足需要不同响应. 证据不足可以拒答并说明缺少哪类材料; 冲突应展示来源与时间; 过期需要触发更新或限制结论; 权限不足只能返回授权范围内的信息. 一个统一相似度阈值无法表达这些状态.
“未找到”还需区分两种内部原因: 授权语料确实没有答案, 或答案存在但召回失败. 两者可以向用户给出相近的保守响应, 在评测中必须分开. 前者评价拒答是否正确, 后者评价检索覆盖.
响应与验收
拒答不是空白输出. 系统应说明当前材料能够支持到哪里、缺少什么类型的证据, 并在允许时提供下一步. 冲突响应列出来源、日期和适用范围; 过期响应标明版本边界; 权限不足不透露受限材料的存在细节.
验收先检查越权、删除和引用解析, 再检查召回、答案与拒答. 这套顺序让高平均分无法抵消一次严重泄露, 也让证据不足时的保守响应得到正向评价.
本章两篇正文分别展开任务契约与系统边界和最小基线与误差归因. 前者确定系统该做什么, 后者确定第一次实验怎样留下可比较的参照.