学完能做什么
你会建立一个可更新、可追溯、有权限和有测试集的小型知识库,并理解 RAG 如何在回答前找到相关材料。
把文件放进一个文件夹不等于知识库
一个可用知识库至少要回答:
- 哪些文档有效,版本和负责人是谁;
- 文档如何被切分、索引和查询;
- 谁能看到哪些资料;
- 回答如何引用原文;
- 旧资料如何下架;
- 系统如何证明自己找对了。
RAG 的最小流程
text
用户问题
→ 规范化问题和权限范围
→ 从索引召回候选片段
→ 重排并去掉旧版/无权片段
→ 将相关原文与问题交给模型
→ 生成带引用的回答
→ 评估召回、引用和答案RAG 不会自动使文档正确,它只让模型在回答时有机会看到相关片段。
第一步:先整理资料台账
| 字段 | 用途 |
|---|---|
| 文档 ID | 稳定引用,不因文件改名而丢失 |
| 标题和类别 | 帮助过滤和展示 |
| 版本 / 生效日 | 判断新旧口径 |
| 状态 | 草稿、生效、废止 |
| 负责人 | 知道谁审核和更新 |
| 权限标签 | 部门、项目、公开级别 |
| 替代关系 | 新文档替代哪个旧版 |
先把过期、重复、无负责人和不允许入库的文档处理掉,再谈向量和召回。
第二步:切分要保留语义单元
片段过长,不相关内容会一起被召回;片段过短,条件、例外和上下文会断开。优先按标题、章节、段落和表格行切分,并在每个片段附上文档 ID、版本、章节和权限。
不要把一张表的表头和数据行分开,也不要把“不适用于”与后面的例外条件切断。
第三步:权限要在召回前生效
不能先召回全库,再期望模型不泄露无权内容。查询时就要带上当前身份可访问的项目、部门和保密级别,召回结果不应包含无权片段。
第四步:回答要能回到原文
一个好回答包含:
- 简洁结论;
- 适用条件和例外;
- 文档标题、版本、章节或页码;
- 当前资料不足时的明确说明;
- 需要人工确认的高风险部分。
引用只要不能定位,就不算可追溯。
第五步:先建测试集,再调参数
至少准备 20 个真实问题,包含:
- 应该精确命中某个章节的问题;
- 需要组合两个片段的问题;
- 应该拒绝回答的无资料问题;
- 旧版和新版口径冲突的问题;
- 不同权限用户应得到不同召回结果的问题;
- 使用同义词、缩写和口语表达的问题。
每个问题标记应命中的文档和章节、不应命中的片段、答案关键点和是否应该说“不知道”。
分开评估召回和生成
| 问题 | 说明 |
|---|---|
| 召回错 | 正确材料没被找到,该修切分、索引、查询改写或过滤 |
| 生成错 | 材料已在上下文中,但回答误读、漏条件或没引用 |
| 源文档错 | 知识库本身过期或冲突,应先修资料治理 |
只换模型无法修好召回不到和旧资料问题。
召回测试作业
用 10–20 份自己的非敏感文档建一个小库:
- 完成文档台账和版本状态;
- 为切分后的片段保留标题和章节;
- 写 20 个问题及预期文档;
- 先只看召回结果,不生成答案;
- 记录漏召回、错召回和旧版命中;
- 修正资料和切分后重跑;
- 召回达标后再检查答案与引用。
完成检查清单
- 每份文档有 ID、版本、状态、负责人和权限。
- 切分没有断开标题、条件、例外和表头。
- 无权片段在召回前就被排除。
- 回答带可定位引用,无证据时会说不足。
- 召回、生成和源文档错误分别评估。
- 测试集包含无答案、旧版冲突和权限场景。
下一篇
《用工作流工具完成重复任务自动化》——把可验证的手工步骤变成可恢复的流程。