AI 工具与知识库 · 第 7 篇

搭建个人知识库与 RAG

整理材料、切分检索并保留引用,让回答能回到原文。

35 分钟知识库实战

学完能做什么

你会建立一个可更新、可追溯、有权限和有测试集的小型知识库,并理解 RAG 如何在回答前找到相关材料。

把文件放进一个文件夹不等于知识库

一个可用知识库至少要回答:

  • 哪些文档有效,版本和负责人是谁;
  • 文档如何被切分、索引和查询;
  • 谁能看到哪些资料;
  • 回答如何引用原文;
  • 旧资料如何下架;
  • 系统如何证明自己找对了。

RAG 的最小流程

text
用户问题
  → 规范化问题和权限范围
  → 从索引召回候选片段
  → 重排并去掉旧版/无权片段
  → 将相关原文与问题交给模型
  → 生成带引用的回答
  → 评估召回、引用和答案

RAG 不会自动使文档正确,它只让模型在回答时有机会看到相关片段。

第一步:先整理资料台账

字段用途
文档 ID稳定引用,不因文件改名而丢失
标题和类别帮助过滤和展示
版本 / 生效日判断新旧口径
状态草稿、生效、废止
负责人知道谁审核和更新
权限标签部门、项目、公开级别
替代关系新文档替代哪个旧版

先把过期、重复、无负责人和不允许入库的文档处理掉,再谈向量和召回。

第二步:切分要保留语义单元

片段过长,不相关内容会一起被召回;片段过短,条件、例外和上下文会断开。优先按标题、章节、段落和表格行切分,并在每个片段附上文档 ID、版本、章节和权限。

不要把一张表的表头和数据行分开,也不要把“不适用于”与后面的例外条件切断。

第三步:权限要在召回前生效

不能先召回全库,再期望模型不泄露无权内容。查询时就要带上当前身份可访问的项目、部门和保密级别,召回结果不应包含无权片段。

第四步:回答要能回到原文

一个好回答包含:

  • 简洁结论;
  • 适用条件和例外;
  • 文档标题、版本、章节或页码;
  • 当前资料不足时的明确说明;
  • 需要人工确认的高风险部分。

引用只要不能定位,就不算可追溯。

第五步:先建测试集,再调参数

至少准备 20 个真实问题,包含:

  • 应该精确命中某个章节的问题;
  • 需要组合两个片段的问题;
  • 应该拒绝回答的无资料问题;
  • 旧版和新版口径冲突的问题;
  • 不同权限用户应得到不同召回结果的问题;
  • 使用同义词、缩写和口语表达的问题。

每个问题标记应命中的文档和章节、不应命中的片段、答案关键点和是否应该说“不知道”。

分开评估召回和生成

问题说明
召回错正确材料没被找到,该修切分、索引、查询改写或过滤
生成错材料已在上下文中,但回答误读、漏条件或没引用
源文档错知识库本身过期或冲突,应先修资料治理

只换模型无法修好召回不到和旧资料问题。

召回测试作业

用 10–20 份自己的非敏感文档建一个小库:

  1. 完成文档台账和版本状态;
  2. 为切分后的片段保留标题和章节;
  3. 写 20 个问题及预期文档;
  4. 先只看召回结果,不生成答案;
  5. 记录漏召回、错召回和旧版命中;
  6. 修正资料和切分后重跑;
  7. 召回达标后再检查答案与引用。

完成检查清单

  • 每份文档有 ID、版本、状态、负责人和权限。
  • 切分没有断开标题、条件、例外和表头。
  • 无权片段在召回前就被排除。
  • 回答带可定位引用,无证据时会说不足。
  • 召回、生成和源文档错误分别评估。
  • 测试集包含无答案、旧版冲突和权限场景。

下一篇

《用工作流工具完成重复任务自动化》——把可验证的手工步骤变成可恢复的流程。