第 1 / 21 篇

前言:先让证据站得住

企业知识库最容易展示的部分,是输入一个问题后出现一段流畅答案。真正决定它能否被信任的,却往往是演示之外的细节:制度昨天已经变更,为什么仍引用旧金额;员工刚被移出项目,为什么缓存里还有项目原文;同名文档来自另一家企业,为什么会进入当前回答。

这本书从这些问题出发,搭建一个可以运行、检查和推翻的检索系统。它接收 Markdown 和限定结构的 JSON,把文本投影成可定位的片段,写入真实的 SQLite FTS5 表,计算词项向量或可选的本地模型向量,再执行混合召回、规则重排和引用复核。更新、删除和撤权不是末尾的提醒,而是贯穿索引生命周期的行为约束。

随书核心实验只依赖 Python 标准库与支持 FTS5 的 SQLite。另有已经实际执行的 BGE 中文模型量化 ONNX 实验,用来观察词面匹配与模型表示的差别。核心的词项计数向量没有语义模型,书中不会把它包装成语义嵌入;回答函数直接摘录数据库原文,没有调用大语言模型,也不声称完成了任意语义蕴含判断。

全书使用八篇作者构造的示例文档与十三条标注查询。企业、员工、金额和秘密标记都是教学数据。小数据集可以清楚暴露因果关系,也限制了结论:命中一条同义改写,不能证明模型在真实业务中普遍更优;权限结果测试全部通过,不能证明不存在时间或统计侧信道。

建议按三遍阅读。第一遍顺序理解文档、索引、权限和证据的契约;第二遍运行第十三、十四章,查看原始 JSON 报告与失败测试;第三遍带着自己的文档格式和权限事件,阅读增量更新、墓碑与生产边界。不要先替换模型再寻找问题,应先确认究竟是哪一个契约被破坏。

正文十六章之外,附录提供来源、实验记录和迁移清单;构建时还会把实际实验源码和测试放入代码附录。在线页、EPUB、离线 HTML 与完整 Markdown 来自同一份书稿,实验包与附录代码同源。读者可以脱离在线服务检查本书的核心行为。

本书的目标不是交付一套现成企业产品,而是让你能回答四个具体问题:检索的是什么版本,当前是谁有权看,引用能否重建,以及系统在什么时候应该停止回答。一个允许读者验证这些答案的系统,才有继续扩展的基础。