知识库答非所问,问题出在哪一层
文档切分决定知识库是否把信息切成了可检索的单元。切得太粗,一个段落里混杂多个信息点,难以精准匹配;切得太细,完整信息被拆散,检索时找不到上下文。
向量召回决定知识库是否能从海量文档中准确找到和问题相关的片段。召回策略不精准时,匹配到的可能是相似但不相关的内容。
答案生成决定大模型是否基于召回的正确内容生成回答。缺乏约束时,模型可能自由发挥、补充了不在知识库里的信息,或者把 A 产品的能力安到了 B 产品上。

一、文档切分:回答准确性的起点
切分方式 | 做法 | 优点 | 风险 |
|---|---|---|---|
固定长度切分 | 按字符数或 Token 数切段 | 实现简单,通用性强 | 一个段落被切断,语义不完整;答非所问高发 |
语义切分 | 按段落、标题、章节边界切分 | 保持语义完整,匹配准确率高 | 需要理解文档结构,实现成本略高 |
混合切分 | 先按语义边界切分,对长段再按层级拆分 | 兼顾语义完整和检索粒度 | 配置复杂度增加 |
优先按语义边界切分。 文档中的标题、段落、列表项本身就是天然的分割线。把每个二级标题下的内容作为一个独立知识单元,比按固定 512 字切一段效果更好。
保留上下文元信息。 每个知识片段应该携带来源文档名、章节标题、段落编号。这样当 AI 引用该片段时,可以追溯到原文位置,方便运营人员验证和修正。
对 FAQ 类型知识做单独处理。 FAQ 的"一问一答"是最适合知识库的格式——问题天然是检索索引,答案是召回目标。一份 FAQ 的命中率和准确率通常远高于长篇文档切分。
避免"信息混装"。 如果一个段落里同时包含价格、参数、保修政策三个信息点,建议拆为三个独立知识单元。否则当客户问"保修多久"时,AI 可能匹配到整个段落,然后把价格和参数也一起输出。
二、向量召回:让 AI 找到对的文档片段
语义相似≠答案正确。 "退款流程"和"退货流程"语义相似,但答案完全不同。如果召回到的片段是"退货流程",而客户问的是"退款流程",AI 就会答非所问。
关键词匹配的局限。 客户用口语化表达时(如"退票"),知识库里的正式表述可能是"取消订单",关键词不匹配就召不到。
返回片段过多。 召回 Top5 或 Top10 片段传给大模型,其中可能混杂了不相关的内容,大模型在多个片段中选择了错误的那一个。
混合检索模式(关键词 + 向量)。 纯向量检索在语义相似场景下效果好,但容易忽略精确匹配。纯关键词检索可以精确匹配"退票"这样的核心词,但无法理解"我不想要这张票了"这种表达。混合检索同时使用两种方式,取两者结果的交集或加权排序,是目前召回效果最好的方案。
问题改写。 客户的问题可能是碎片化的、口语化的、甚至带错别字的。在检索前,先让大模型把客户问题改写成标准表述,再用改写后的表述去检索知识库。比如"这票能不能退"改写为"退票政策查询",召回效果明显提升。
知识分类与检索范围限定。 不是所有问题都需要搜索全部知识库。把知识按业务分类(产品 A、产品 B、售后政策、物流说明),在意图识别阶段就确定检索范围,可以大幅减少不相关内容的干扰。
三、答案生成:控制大模型别"自由发挥"
知识库里没有的信息,AI 自己编造了。
知识库里明确禁止的表述,AI 忽略了。
知识库里的信息有多个版本,AI 选择了错误的那一个。
客户问了三个问题,AI 只回答了其中一个。
知识库片段中有明确的限制条件(如"仅限 VIP 会员"),AI 没有引用。
设置严格的引用约束。 在 Prompt 中明确要求:只基于提供的知识片段回答;如果知识片段中没有相关信息,直接回答"暂未查到相关信息,建议转人工咨询";不补充知识片段以外的信息。
引用来源可见。 在回复中标注引用来源(如"根据《退换货政策》第 3 条"),一方面让客户知道答案有依据,另一方面便于运营人员追踪和验证。
多轮对话中的上下文管理。 在连续对话中,AI 可能把上一轮的信息带到了下一轮。需要设定每轮对话的检索范围,避免跨轮次信息混淆。
Badcase 回流机制。 每一次答非所问的案例,都应该被记录、分类、分析,然后反哺到知识库或 Prompt 优化中。答非所问不是终点,而是下一次优化的起点。
从"答非所问"到"持续优化":知识库运营的四个阶段
检查清单:回答前的自查
文档切分:是否按语义边界切分?FAQ 是否单独处理?是否存在"信息混装"的段落?
检索策略:是否同时使用关键词和向量检索?是否需要问题改写?是否需要限定检索范围?
答案生成:是否设置了引用约束?是否要求标注来源?是否明确告诉 AI 不知道时该怎么做?
运营机制:是否有答非所问案例的记录和分类流程?知识更新是否有专人负责?质检数据是否反哺知识库?
