不少公司兴冲冲地把几百份文档传进知识库,结果第一天就被员工吐槽:问「年假有几天」,它答了一条三年前的旧规定;问「A 产品保修多久」,它答出了 B 产品的条款;问「报销要什么单据」,它干脆说「未找到」,可那份制度明明就在里面。
上一节我们讲了 RAG 的原理:先检索,再回答。原理不复杂,做好却处处有讲究。知识库答得好不好,很大程度上取决于资料准备和检索,而不只是换一个更强的模型。这一节我们沿着整条流水线,一关一关地看。
一条流水线,四道关
第一关 文档整理:挑对资料、去掉旧版、补上标签
↓
第二关 切片入库:把文档切成能单独看懂的小块,转成向量存好
↓
第三关 检索:根据问题找出最相关的几块
↓
第四关 生成与引用:让模型只依据这些内容作答,并标明出处任何一关掉链子,最终答案都会出问题。下面逐个拆开说。
第一关:文档准备——垃圾进,垃圾出
这是最容易被忽视、却最影响效果的一关。常见的错误示范是:把整个共享盘打包上传,里面混着草稿、旧版本、会议纪要和个人笔记。AI 可分不清哪一份才算数。
做好这一关,可以对照这份清单:
- 只放权威版本:同一份制度只保留现行版;确实要保留历史版本的,在文件名和正文里写清版本号和生效日期。
- 一份文档讲一件事:把「大杂烩」式的文档拆开,标题直接写主题,比如「XX 产品退换货政策」。
- 检查格式:扫描件和图片型 PDF 要先做文字识别并抽查;表格转换后常常错行,需要人工核对。
- 补上隐性知识:很多答案只存在于老员工的脑子里。把高频问题整理成「一问一答」,是性价比很高的投入。
- 打标签:给每份文档标注所属部门、适用产品、生效日期、可见范围。这些标签(也叫元数据)后面可以用来筛选和控制权限。
- 明确负责人:谁来更新、多久检查一次。没人维护的知识库,用不了多久就会变成「过期资料库」。
第二关:切片——把手册拆成「能单独看懂的卡片」
检索时交给模型的不是整份文档,而是挑出来的几个小片段。所以切片的质量,直接决定了模型能看到什么。
切得太大,一片里混着好几个话题,检索不准,还挤占模型的阅读空间;切得太小,又容易断章取义。看一个很常见的问题:
不好的切片(条件被切断了):
片段 12:……正式员工每年可享受 5 天带薪年假。但试用期
片段 13:员工除外。年假须提前三个工作日申请……
更好的切片(带上标题,意思完整):
【员工休假制度 > 第二章 年假】
正式员工每年可享受 5 天带薪年假,但试用期员工除外。
年假须提前三个工作日申请……如果员工问「试用期能休年假吗」,检索只捞到片段 12,模型就会自信地回答「可以休 5 天」。几条实用原则:
- 按自然结构切:优先按章节、段落、条款来切,而不是机械地每隔固定字数切一刀。
- 给每片带上「出身」:在片段开头加上文档名和章节标题。否则「保修期为两年」这句话单独拿出来,谁也不知道说的是哪个产品。
- 适当重叠:相邻片段之间保留一小段重复内容,降低关键句被切断的概率。
- 表格保留表头:表格被切开后,下半截如果没有表头,数字就失去了意义。
- 问答对天然好切:一问一答本身就是一张完整的卡片。
第三关:检索——找得到,还要找得准
上一节提到,RAG 常用向量检索来「按意思找」。但只靠它也有短板:
| 检索方式 | 擅长 | 不擅长 |
|---|---|---|
| 向量检索(按意思) | 同义改写,比如「钱怎么退」和「退款流程」 | 型号、编号、人名等需要一字不差的词 |
| 关键词检索(按字面) | 产品型号「XR-200」、合同编号、专有名词 | 换个说法就找不到 |
所以效果好的知识库,通常会两种一起用,也就是混合检索,再配上几个技巧:
- 重排序:先粗略捞出几十个候选片段,再用更精细的模型逐一打分,只留下最相关的几个。好比招聘先海选、再复试。
- 取多少片要合适:取太少会漏掉信息,取太多会把无关内容也塞给模型,反而干扰判断。
- 按标签筛选:问的是 A 产品,就只在 A 产品的资料里找;问的是现行政策,就排除已失效的版本。
- 补全问题:多轮对话里用户问「那它保修多久?」,系统要先把问题补全成「A 产品保修多久?」再去检索。
- 权限前置:员工无权查看的资料,应该在检索阶段就过滤掉。资料一旦被送到模型面前,光靠提示词叮嘱「请保密」并不可靠。
第四关:生成与引用——让答案有据可查
资料找对了,最后一步是让模型老老实实地用。一份实用的提示词可以这样写:
你是公司内部知识助手。请遵守:
1. 只根据【参考资料】回答,不要使用资料以外的信息;
2. 找不到答案时,回答「知识库中暂无相关内容,建议咨询相关部门」;
3. 不同资料说法冲突时,列出冲突点,并优先采用生效日期最新的一份;
4. 每个关键结论后标注来源,格式为 [文档名 - 章节]。
【参考资料】
(这里放检索到的片段)
【用户问题】
(这里放用户的提问)引用不只是为了显得专业。它让员工可以回到原文核对,也让管理员一眼看出「这次答错,是因为引用了哪份过时文档」。涉及法律、财务、医疗等专业问题时,还应提醒以原文和专业人士的意见为准。
上线前后:用测试题说话
别凭感觉判断知识库好不好用。上线前,请业务同事收集几十到上百个真实问题,为每个问题写好标准答案,并注明「应该从哪份文档里找到」。然后逐个测试,分开看两件事:找没找到(检索有没有捞出正确的片段)和答没答对(回答是否准确、有没有编造)。
遇到问题时,可以按这张表对症排查:
| 症状 | 常见原因 | 先查哪一关 |
|---|---|---|
| 答出旧规定 | 新旧版本并存 | 第一关:文档整理 |
| 答案漏了关键条件 | 切片切断了上下文 | 第二关:切片 |
| 换个问法就找不到 | 只用了单一检索方式 | 第三关:检索 |
| A 产品答成 B 产品 | 片段缺少标题和标签 | 第二关和第三关 |
| 资料找对了却答错或编造 | 提示词约束不够 | 第四关:生成 |
上线之后,定期把「答不上来」和「被点差评」的问题汇总起来,补文档、修切片,知识库才会越用越准。
本节要点
- 知识库答得好不好,很大程度上取决于资料准备和检索,而不只是模型。
- 文档要权威、一份讲一件事、带上标签,并有专人维护。
- 切片要让每一片都能单独看懂:按结构切、带标题、保留表头。
- 向量检索和关键词检索各有所长,混合检索加重排序更准;权限要在检索阶段控制。
- 用真实问题建测试集,分别检查「找没找到」和「答没答对」。
