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

案例概览:辅导 / 客服 RAG

一句话: 辅导或客服助手基于课程资料、FAQ、政策和历史问答来回答问题,为每个答案标注出处;资料没有覆盖的问题会如实说明,该转人工时就转人工。

一家教育机构其实已经拥有学生和客户需要的答案。它们散落在课程讲义、FAQ 页面、退款政策、招生手册和多年来的客服工单里。问题是没人能很快找到。学生每周都在问同样的二十个问题,客服不断粘贴同样的回复。新员工和老员工给出的答案不一样,因为他们找到的文档不一样。

这项工作是给已有的知识装一个对话式入口。助手不做决定、不改任何记录、不执行任何操作。它只负责找到正确的段落,并据此回答。

它排在阶梯第一级是有原因的。问题本身的三个特征让它保持简单:

  • 答案已经写在文档里。 系统的工作是检索,而不是对实时数据做推理。
  • 不写回任何东西。 助手只读,所以答错了虽然尴尬,但可以挽回。
  • 每个答案都能自带证据。 有了引用,读者几秒钟就能核对出处。

三点都成立时,只用 RAG 就够了。知道什么时候停下来,才是这一课的重点。如果把它包装成多 agent 团队,只会多出交接、延迟和新的失败方式,而不会让任何一个答案更正确。

学生 / 客户
│ 提问
▼
UI / Puffo / n8n ──► 检索段落 ──► 带引用的回答
▲ │
│ ├─ 资料覆盖? → 回答 + 出处
知识库 ◄── 导入 │ ├─ 未覆盖 → "资料里没有" + 转给相关人员
(课程资料、FAQ、政策、 │ └─ 敏感话题 → 升级转人工
历史问答,带日期) │
更新通道(新 FAQ 替换旧 FAQ)
组件职责没有它会出什么问题
导入(Ingestion)把文档切成可检索的段落,保留出处、章节和日期表格和 PDF 被切成无意义的碎片
检索(Retrieval)找到真正能回答问题的几个段落模型根据错误的段落流畅作答
基于来源的回答只根据检索到的段落回答并标注引用模型用训练数据填补空白
未知 / 拒答检索不到合适内容时说”资料没有覆盖这个问题”助手开始猜,而且猜得很自信
升级转人工把退款、投诉和涉及个人的问题转给人助手自己编造政策
更新通道政策变化时替换过期段落去年的退款规则排在今年的前面

架构一屏就能画完,工作量集中在五个地方:

  1. 导入质量。 幻灯片、扫描版 PDF 和表格都需要小心处理。丢了标题的文本块也就丢了含义。Anthropic 的 Contextual Retrieval 方法会在建索引前,给每个文本块加一句说明它在原文中位置的描述。
  2. 检索质量。 RAG 系统里大多数”幻觉”其实是检索失败:模型忠实地总结了错误的段落。
  3. 基于来源(Grounding)。 答案必须限制在检索到的文本之内。引用让这一点可以核查,读者和自动化评测都能核查。
  4. 未知与拒答行为。 “我不知道,可以找这位同事”是正确答案,它需要自己的测试用例。
  5. 知识新鲜度。 FAQ 改了,旧版本就必须不能再被检索到。过期知识是最常见的无声失败,因为错误答案看起来和正确答案一样自信。加一道新鲜度检查:每个段落都带来源日期,被取代的文档要删除,而不仅仅是排得靠后。
  • “多几个 agent 会更好。” 每多一个 agent 就多一次可能丢失上下文的交接。一步检索加一步回答能解决问题,就到此为止。
  • “RAG 能消除幻觉。” 它只是转移了风险。模型仍可能超出来源作答,或引用错误的来源。引用和评测让风险变得可见。
  • “拒答就是失败。” 对于知识库之外的问题,拒答并转人工才是成功。
  • “文档上传一次就够了。” 知识会过期。更新通道是产品的一部分,不是事后补丁。
客户希望用五个协作 agent 来搭客服助手,你怎么回应?

先问每个 agent 负责的是什么、而这件事为什么一步”检索并回答”做不到。如果答案已经存在于文档中、助手也不执行任何操作,那么一步带引用、拒答和升级的 RAG 更简单、更快,也更容易评测。只有出现独立职责时(例如对账户进行操作,或需要独立审核),agent 才值得引入。

用户反馈助手给出的是旧的退款政策。你先查哪里?

先查知识库,而不是 prompt。确认旧政策文档是否仍在索引里,新政策是否以更晚的日期导入了。然后修好更新通道,让被取代的文档被删除,再加一个测试用例:询问退款问题并检查引用来源的日期。

怎么衡量助手是否达到上线标准?

用真实的历史问题建一个评测集,其中包括资料没有覆盖的问题。衡量答案正确率、引用正确率(被引用的段落是否真的支持答案)、对超范围问题的拒答率,以及升级转人工的频率。上线阈值要在调优之前和客户商定。

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