灵策全能AI助手

知识库问答怎么做好:切片、检索与引用

为什么有的知识库答非所问?文档准备与检索的关键细节。

不少公司兴冲冲地把几百份文档传进知识库,结果第一天就被员工吐槽:问「年假有几天」,它答了一条三年前的旧规定;问「A 产品保修多久」,它答出了 B 产品的条款;问「报销要什么单据」,它干脆说「未找到」,可那份制度明明就在里面。

上一节我们讲了 RAG 的原理:先检索,再回答。原理不复杂,做好却处处有讲究。知识库答得好不好,很大程度上取决于资料准备和检索,而不只是换一个更强的模型。这一节我们沿着整条流水线,一关一关地看。

一条流水线,四道关

第一关  文档整理:挑对资料、去掉旧版、补上标签
   ↓
第二关  切片入库:把文档切成能单独看懂的小块,转成向量存好
   ↓
第三关  检索:根据问题找出最相关的几块
   ↓
第四关  生成与引用:让模型只依据这些内容作答,并标明出处

任何一关掉链子,最终答案都会出问题。下面逐个拆开说。

第一关:文档准备——垃圾进,垃圾出

这是最容易被忽视、却最影响效果的一关。常见的错误示范是:把整个共享盘打包上传,里面混着草稿、旧版本、会议纪要和个人笔记。AI 可分不清哪一份才算数。

做好这一关,可以对照这份清单:

  • 只放权威版本:同一份制度只保留现行版;确实要保留历史版本的,在文件名和正文里写清版本号和生效日期。
  • 一份文档讲一件事:把「大杂烩」式的文档拆开,标题直接写主题,比如「XX 产品退换货政策」。
  • 检查格式:扫描件和图片型 PDF 要先做文字识别并抽查;表格转换后常常错行,需要人工核对。
  • 补上隐性知识:很多答案只存在于老员工的脑子里。把高频问题整理成「一问一答」,是性价比很高的投入。
  • 打标签:给每份文档标注所属部门、适用产品、生效日期、可见范围。这些标签(也叫元数据)后面可以用来筛选和控制权限。
  • 明确负责人:谁来更新、多久检查一次。没人维护的知识库,用不了多久就会变成「过期资料库」。

第二关:切片——把手册拆成「能单独看懂的卡片」

检索时交给模型的不是整份文档,而是挑出来的几个小片段。所以切片的质量,直接决定了模型能看到什么。

切得太大,一片里混着好几个话题,检索不准,还挤占模型的阅读空间;切得太小,又容易断章取义。看一个很常见的问题:

不好的切片(条件被切断了):
片段 12:……正式员工每年可享受 5 天带薪年假。但试用期
片段 13:员工除外。年假须提前三个工作日申请……

更好的切片(带上标题,意思完整):
【员工休假制度 > 第二章 年假】
正式员工每年可享受 5 天带薪年假,但试用期员工除外。
年假须提前三个工作日申请……

如果员工问「试用期能休年假吗」,检索只捞到片段 12,模型就会自信地回答「可以休 5 天」。几条实用原则:

  • 按自然结构切:优先按章节、段落、条款来切,而不是机械地每隔固定字数切一刀。
  • 给每片带上「出身」:在片段开头加上文档名和章节标题。否则「保修期为两年」这句话单独拿出来,谁也不知道说的是哪个产品。
  • 适当重叠:相邻片段之间保留一小段重复内容,降低关键句被切断的概率。
  • 表格保留表头:表格被切开后,下半截如果没有表头,数字就失去了意义。
  • 问答对天然好切:一问一答本身就是一张完整的卡片。

第三关:检索——找得到,还要找得准

上一节提到,RAG 常用向量检索来「按意思找」。但只靠它也有短板:

检索方式擅长不擅长
向量检索(按意思)同义改写,比如「钱怎么退」和「退款流程」型号、编号、人名等需要一字不差的词
关键词检索(按字面)产品型号「XR-200」、合同编号、专有名词换个说法就找不到

所以效果好的知识库,通常会两种一起用,也就是混合检索,再配上几个技巧:

  • 重排序:先粗略捞出几十个候选片段,再用更精细的模型逐一打分,只留下最相关的几个。好比招聘先海选、再复试。
  • 取多少片要合适:取太少会漏掉信息,取太多会把无关内容也塞给模型,反而干扰判断。
  • 按标签筛选:问的是 A 产品,就只在 A 产品的资料里找;问的是现行政策,就排除已失效的版本。
  • 补全问题:多轮对话里用户问「那它保修多久?」,系统要先把问题补全成「A 产品保修多久?」再去检索。
  • 权限前置:员工无权查看的资料,应该在检索阶段就过滤掉。资料一旦被送到模型面前,光靠提示词叮嘱「请保密」并不可靠。

第四关:生成与引用——让答案有据可查

资料找对了,最后一步是让模型老老实实地用。一份实用的提示词可以这样写:

你是公司内部知识助手。请遵守:
1. 只根据【参考资料】回答,不要使用资料以外的信息;
2. 找不到答案时,回答「知识库中暂无相关内容,建议咨询相关部门」;
3. 不同资料说法冲突时,列出冲突点,并优先采用生效日期最新的一份;
4. 每个关键结论后标注来源,格式为 [文档名 - 章节]。

【参考资料】
(这里放检索到的片段)

【用户问题】
(这里放用户的提问)

引用不只是为了显得专业。它让员工可以回到原文核对,也让管理员一眼看出「这次答错,是因为引用了哪份过时文档」。涉及法律、财务、医疗等专业问题时,还应提醒以原文和专业人士的意见为准。

上线前后:用测试题说话

别凭感觉判断知识库好不好用。上线前,请业务同事收集几十到上百个真实问题,为每个问题写好标准答案,并注明「应该从哪份文档里找到」。然后逐个测试,分开看两件事:找没找到(检索有没有捞出正确的片段)和答没答对(回答是否准确、有没有编造)。

遇到问题时,可以按这张表对症排查:

症状常见原因先查哪一关
答出旧规定新旧版本并存第一关:文档整理
答案漏了关键条件切片切断了上下文第二关:切片
换个问法就找不到只用了单一检索方式第三关:检索
A 产品答成 B 产品片段缺少标题和标签第二关和第三关
资料找对了却答错或编造提示词约束不够第四关:生成

上线之后,定期把「答不上来」和「被点差评」的问题汇总起来,补文档、修切片,知识库才会越用越准。

本节要点

  • 知识库答得好不好,很大程度上取决于资料准备和检索,而不只是模型。
  • 文档要权威、一份讲一件事、带上标签,并有专人维护。
  • 切片要让每一片都能单独看懂:按结构切、带标题、保留表头。
  • 向量检索和关键词检索各有所长,混合检索加重排序更准;权限要在检索阶段控制。
  • 用真实问题建测试集,分别检查「找没找到」和「答没答对」。

「RAG 与智能体」其他课程

灵策全能AI助手