RAG 不等于可回答:知识可信度与 Answerability Gate 设计
# RAG 不等于可回答:知识可信度与 Answerability Gate 设计
RAG 系统最容易被忽略的一层,不是“能否检索到片段”,而是“这些片段是否足以支撑当前回答”。
在企业客服中,检索结果常常只是相关:它可能属于另一个商品、对应旧版本规则,或者只覆盖了问题的一部分。如果模型直接根据相关片段生成回答,就会把“找到了资料”误写成“已经有事实依据”。
因此,智能客服项目把检索和回答之间增加了一道 Answerability Gate:只有通过可信度筛选和语义充分性判断的证据,才允许进入最终回复链。
本文只介绍可公开的工程方法,不包含业务知识正文、客户会话、商品资料或任何账号信息。
# 检索命中不等于可以回答
下面三种情况都可能出现检索命中,但不应直接回答:
- 候选知识与当前商品或规格不一致;
- 候选内容相关,却没有覆盖用户真正想问的事实;
- 同一问题存在同优先级、相互冲突的知识版本。
如果跳过判断层,模型往往会用看似合理的语言补齐缺失信息。对客服来说,这种回答比“暂时无法确认”更危险。
# 可信知识链路的五个阶段
系统将知识处理拆成一条可审计的链路:
已发布知识
↓
确定性检索、范围过滤与优先级排序
↓
当前问题与商品对象锚定
↓
冲突检查与 Answerability Gate
↓
可信证据 → 最终回复 / 安全草稿 / 人工接管
每一步都可以解释“为什么保留、拒绝或阻断某条知识”,而不是只给模型一个不透明的上下文拼接结果。
# 第一步:知识本身要有来源和生命周期
知识库不应是一堆可随时覆盖的文本。项目将知识按文档、商品知识、店铺规则和高频问答等业务类型管理,并保留来源、版本、解析状态、优先级和发布状态。
正式检索只读取已发布内容。重复上传会被识别,同名但内容变化则形成新版本,而不是静默覆盖旧记录。这样才能在问题发生后回答:这条回复引用了什么资料、来自哪个版本、当时为什么有效。
第一阶段采用可解释的本地全文检索和规则评分,而不把普通规则分伪装成向量相似度。向量检索当然可以成为后续能力,但在事实边界尚未稳定时,先保证来源、范围和排序可追溯更重要。
# 第二步:先识别知识对象,再处理自然语言
客服对话中经常出现“这个”“那款”“它什么时候发”的短追问。直接把长聊天记录交给模型,容易让很久以前的商品信息覆盖当前问题。
系统对对象锚定采用固定优先级:
- 当前消息携带的商品卡或结构化商品信息;
- 当前文本中明确出现的商品;
- 紧邻当前问题的商品卡或文本锚点。
短追问只能使用最近、相邻且可证明相关的对象;无业务含义的文本、纯编号和陈旧上下文都不能借用历史商品事实。这样可以减少“模型记得上一件商品,于是回答错对象”的问题。
# 第三步:Gate 只接受必要的判断输入
Answerability Gate 不需要浏览整段聊天记录。它只接收当前问题、经过补全的检索 query、紧邻商品锚点、候选知识和冲突信息,并返回结构化判断。
当前问题 + 当前对象 + 候选证据 + 冲突信息
↓
Answerability Gate
↓
是否可答、可信证据、缺失信息、拒绝原因
这种输入收敛有两个好处:一是避免历史上下文把错误事实带进判断;二是让 Gate 的结论能与候选证据一一对应,方便审计和回归测试。
最终回复只接收 Gate 明确认可的证据。原始候选可以保留给运营诊断,但不能因为“看起来相关”就进入 Prompt。
# 四类不能直接生成答案的结果
系统把“不够确定”拆成不同状态,而不是笼统地交给模型兜底:
| 结果 | 代表含义 | 后续动作 |
|---|---|---|
NO_KNOWLEDGE | 没有可信命中 | 记录知识缺口;低风险时生成安全草稿 |
NOT_ANSWERABLE | 有候选,但信息不足以回答 | 不生成具体业务事实 |
KNOWLEDGE_CONFLICT | 高优先级知识相互矛盾 | 阻断自动处理,等待人工审核 |
UNCERTAIN | Gate 超时、异常或无法给出确定结论 | 失败关闭,禁止自动发送 |
尤其是 UNCERTAIN:模型服务异常不应该被当作“默认通过”,也不应该让系统伪造确定答案。首次低风险场景可以保留安全的 AI 草稿,但自动发送必须停止。
# 知识测试必须和生产链同源
很多系统的“知识库测试”只是另一个聊天窗口,因此测试结果和生产客服不一致。这里的知识测试复用生产链的 Resolver、范围过滤、可信门槛、优先级、Gate 和 Evidence Builder。
测试链与生产链共享判断逻辑,但测试永不创建发送任务。这样运营人员可以先验证某条知识是否真的会被信任、为什么被拒绝,再决定是否发布或修订。
# 从知识缺口到人工审核发布
当系统发现真实问题没有可信知识时,不把它当成简单失败,而是记录为知识缺口。客服人工修改 AI 建议并成功发送后,系统可以将这一差异沉淀为候选知识;但候选内容必须经过人工审核才能发布。
这意味着知识库不是“自动训练模型”的黑箱,而是一个有来源、有审核、有版本的运营闭环:
真实未命中问题
↓
知识缺口
↓
人工修正与候选内容
↓
人工审核
↓
发布后参与下一次可信检索
# 如何验证这条链路
回归测试覆盖了多个关键边界:无候选时不调用 Gate、商品锚点不一致时硬拒绝、知识冲突时不调用模型、Gate 服务异常时返回 UNCERTAIN、置信度不足时保持 AI 草稿,以及自动发送必须同时满足所有可信条件。
这些测试的目的不是追求更高的“命中率”,而是确保系统在不知道、冲突或异常时不会把不确定性伪装成答案。
# 结语
RAG 的正确评价标准,不是检索出多少文本,而是系统能否清楚地区分:哪些事实已经被证据支持,哪些还需要人工确认。
当“可回答性”成为一层独立能力,RAG 才能从给模型补上下文,升级为可进入业务流程的事实服务。
- 01
- AI 应用前端:把生成结果做成可理解、可确认的交互09-24
- 02
- Docker 实战:让服务从本地可运行走向可交付09-24
- 03
- Linux 服务部署与排障:一份从症状到证据的清单09-24