给个人知识库补上出处

给个人知识库补上出处
主题插图 · AI 辅助生成

从二十篇公开文档出发,搭起能够检查来源、区分版本和说明证据缺失的阅读助手。

把一个文件夹里的文档交给模型,然后要求“只根据资料回答”,听起来已经很接近个人知识库了。真正开始使用时,问题往往出现在更细的地方:检索到的段落缺少标题,旧版本和新版本混在一起,回答里的链接无法指出具体证据。

这份 DIY 笔记从二十篇公开技术文档起步,目标是完成一个有出处、能够拒绝猜测的阅读助手。这里没有跑分结论,只有一套可以逐步检查的搭建方法。

先把引用当作数据

RAG 论文把检索与生成结合起来处理知识密集任务。本文借用的是这个基本方向,后面的目录结构、检查清单和练习阈值都是本站的设计选择。

第一步不急着选向量库。先给每份文档一个稳定编号,并保存来源、版本与段落锚点。一个最小片段可以长这样:

{
  "documentId": "mcp-architecture-2026-07-28",
  "section": "Primitives",
  "sourceUrl": "https://modelcontextprotocol.io/docs/2026-07-28/learn/architecture",
  "retrievedAt": "2026-10-21",
  "text": "此处存放实际抓取并核对的片段"
}

示例中的片段文字是占位说明,不能直接作为证据入库。实际处理时要保留抓取原文和清洗记录,使“这句话来自哪里”成为程序能够回答的问题。

给切分方法做一个小实验

我会先尝试按标题切分,再为过长章节增加长度上限。代码块、表格和列表尽量保持完整。如果把一个参数表切成两半,模型拿到参数名却没有说明,检索命中也未必能帮助回答。

为这个练习准备三类问题:能由一个段落回答的,必须联合两份文档的,以及资料里根本没有答案的。最后一类尤其有用,因为系统不应该把“搜到一些相近词”当作“已经找到证据”。

问题类型需要观察常见修正
单段事实是否检索到准确章节调整标题、别名或切分
跨文档比较是否覆盖双方条件增加多路检索与重排
无答案问题是否明确说明缺失增加证据检查与拒答路径

把检索失败和生成失败拆开看

当回答不对时,先保存当次检索结果,暂时不改提示词。若证据没有进入候选集合,修正方向通常在索引、过滤或查询表达;若证据已经存在却被误读,再查看上下文组织与回答约束。

图表加载中…

查看图表源代码
flowchart LR
  Q[问题] --> R[检索候选片段]
  R --> F[版本与权限过滤]
  F --> E[检查证据覆盖]
  E --> G[组织回答与引用]

练习里的“证据覆盖”不必是一个神秘分数。可以让答案的每个关键结论对应至少一个片段编号,再由程序检查编号确实属于本次检索结果。这只能检查引用关系,不能证明结论本身正确;重要内容仍需要人工核对。

给知识库留一个更新入口

同一份规范出现新版时,不要让两个版本的片段共享一个模糊编号。保留版本信息,并让查询显式选择“当前版本”或“历史比较”。删除文档时,也检查向量索引、文本存储和引用目录是否一起更新。

这个项目可以从一张检索结果页开始验收:问题在上方,候选片段在中间,答案与引用在下方。先让人看清依据,再给界面增加更漂亮的聊天气泡。

相关笔记:上下文也需要预算。

给个人知识库补上出处 · LovelyCat · 2026-10-21

个人学习与创作札记 · 设计参考 Yohaku