跳转到内容
M6第 1 课 · 辅导 / 客服 RAGM6-L1.2M6-L1.3

Technical Design:课程客服助手

一句话: 一份基于来源的客服助手参考设计:版本化的知识库掌管事实,检索提供证据,模型只负责转述和引用,策略代码决定何时回答、拒答或升级。

教学参考。 这份设计是为 handbook 撰写的,与其他三个 lesson 使用同一套九节骨架。它满足参考 PRD;超出第一版范围的内容有标注。这份设计在 n8n 上的实现见下一页。

知识库是唯一的事实来源;模型只转述并引用它。 检索决定存在哪些证据,代码决定路径,模型决定措辞。模型说的任何内容,只有在代码能把它追溯到某个检索段落时才会展示。

文档(负责人、版本、生效日期)
│ 导入:解析 → 按结构切分 → 加上下文标题 → 清除个人信息
▼
知识库版本 N ──► 索引(关键词 + 向量)
│ 检索 top-k → 重排序
▼
问题 ──► 路由器(策略代码)──► 回答服务(模型,必须引用)
│ │
├─ 升级 ──► 工单 └─ 引用校验器(代码)──► 回复 + 出处
└─ 未覆盖 ──► 找人途径
组件负责第一版的实现
导入把文档变成带元数据的段落;清除个人信息按文档类型的解析器;按标题切分;每个文本块一行上下文标题
知识库版本、生效日期、取代关系每次发布一个版本的文档存储
索引找到候选段落关键词索引加向量;重排序器留到后续
路由器路径:回答、未覆盖、升级配置:升级话题清单、分数阈值
回答服务用用户的语言措辞,附引用模型被要求只依据段落作答,并返回结构化对象
引用校验器拒绝任何不在检索集合内的引用代码
升级适配器创建带上下文的工单客服系统的 API
答案日志可追溯性:问题、知识库版本、段落 ID、路径、延迟、成本只追加的存储
  • 模型输出在校验之前不可信。 回答服务返回 {answer, citations[], route};校验器检查每个引用 ID 都在检索集合内,且被引用的文字与答案有重叠。校验失败则拦截回复,改为返回”未覆盖”。
  • 路由是配置,不是 prompt。 升级话题清单和检索分数阈值放在配置里,所以问题中的 prompt 注入改不了它们。
  • 知识发布是一道人工 gate。 文档负责人发布一个版本;导入先在预发布索引上运行,再跑评测集,之后版本才上线。
  • 用户输入永远到不了业务系统。 第一版没有写工具;升级只把文本传给工单,别无其他。
  • 每份文档都有 owner、version、effective_from 和 superseded_by。检索只在当前版本内进行,所以已下线的段落找不到。
  • 每个答案都记录知识库版本和段落 ID,所以任何答案事后都可以复现或审计。
  • 对话状态只有对话记录本身,按 PRD 规定的期限保留,然后删除。
  • 向量按段落哈希缓存,重建索引时只重算变化的部分。
  • 一个独立于回答 prompt 的基于来源检查器,对答案抽样评分,判断引用段落是否支持答案。
  • 低置信度的答案和所有升级都进入人工复核队列;纠正结果变成新的评测用例,必要时也变成新的知识库条目。
  • 检查器从不改写答案,只报告。
失败行为
没有段落达到阈值回复”未覆盖”并给出找人途径
模型超时或出错重试一次,然后回复”未覆盖”;绝不静默留空
引用校验失败回复被拦截;记录为一次基于来源失败
工单创建被重试每个对话一个幂等键,一次升级只创建一张工单
索引重建失败旧版本继续在线;新版本绝不部分发布
  • 评测集: 真实的历史问题,包括超范围问题、关于已废止政策的问题和升级话题。由知识负责人维护,并从复核队列的纠正中不断补充。
  • 指标: 检索召回率 @k、答案正确率、引用准确率、拒答准确率、升级准确率。阈值来自 PRD,在调优前固定。
  • 何时运行: prompt、切分、索引设置或知识库每次改动时。低于阈值的回退会阻止这次改动。
  • Guard test: 已下线的文档不能被引用;工单导出中埋入的个人信息不能进入索引;检索集合之外的引用必须被拦截;升级话题绝不能被直接回答。
  • 模型和工单系统的凭据放在服务端并遵循最小权限;助手只能创建工单,不能做别的。
  • 成本:缓存向量、限制上下文长度;如果路由环节用到模型,用更便宜的模型。
  • 可观测性:每个答案的追踪记录;“未覆盖”率、升级率、负面反馈、延迟和成本的看板;“未覆盖”率上升时告警,这通常意味着知识库落后了。
  • 知识维护:向负责人发送超过复核日期的文档报告。

第一版之后: 重排序器;混合检索调优;查询用户自己状态的读工具;带确认和审计的写工具,见延伸。

已经告诉模型只引用检索到的段落,为什么还要用代码校验引用?

因为指令不是保证。校验器把”模型应该只引用检索到的段落”变成系统强制成立的属性,也让基于来源的失败出现在日志里,而不是出现在用户的截图里。

在遵守全部产品规则的前提下,这个设计最小的版本是什么?

一个带版本的文档存储、一个关键词索引、一个固定阈值、一次返回结构化输出的模型调用、引用校验器和工单适配器。重排序、向量和基于来源检查器能提高质量,但规则的成立并不依赖它们。

Syllabus 行:M6-L1.2、M6-L1.3