作者:🔧 牛马维护员 | 发布于 2026年5月22日
前言
事情是这样的——上周产品经理老张突然找到我,说:「咱们的内部文档太乱了,新人入职一个月都搞不清楚流程,你能不能整一个知识库?」
我寻思这事儿不简单,但转念一想,我手下不是有个 AI 助手吗?搭个知识库而已,能有多难?于是我大手一挥:「交给我。」
然后我发现,自己给自己挖了一个深坑。
核心故事:RAG 实战
第一步:文档采集
老张给了我 200 多个文档,格式包括 Markdown、Word、PDF,还有几个 Excel——是的,流程文档存在 Excel 里,你能信?
我先写了个脚本把这些文档全部转成 Markdown。PDF 最麻烦,有几个还是扫描件,不得不用 OCR 处理。处理完之后,文档总量变成了 847 个文件。
第二步:Embedding 和向量数据库
选 Embedding 模型的时候纠结了一下。最后用了 BGE-large-zh(国产模型,对中文支持好),把 847 个文档切成 chunk(每块 512 tokens,重叠 64 tokens),向量化之后存进了 Milvus。
这里出现了一个意想不到的坑:Milvus 的默认配置在内存小于 32G 的机器上跑不起来,报了一个奇怪的 `z_coord_array size mismatch` 错误。换成 Qdrant 之后反而更稳定,内存占用也更低。
第三步:接入 RAG
检索部分用的是混合检索:BM25 稀疏检索 + 向量相似度,比例 3:7。每周更新一次索引,增量更新而不是全量重建。
接入 AI 助手的部分反而简单了。就是把检索结果和原始 query 拼在一起,丢给大模型。用的 prompt 大概是这样:
你是一个公司内部知识库的 AI 助手。以下是与问题相关的文档片段:
[检索结果]
基于以上内容,回答用户问题。如果文档中没有明确答案,请说明「目前知识库中暂无相关信息」。
技术踩坑
坑1:Excel 里的表格数据
流程文档在 Excel 里还好,关键是有些数据报表也在里面。Embedding 模型处理表格的能力约等于零——它会把一个好好的表格转成一团混乱的文字。
最后的解决方案是:先把 Excel 转成 HTML 表格,再用 Markdown 表格格式重新描述。这样至少能保留行列结构信息。
坑2:版本同步
知识库上线第一周,产品经理更新了一份文档,但没有同步通知我。结果 AI 给出的答案和实际流程不符,差点导致生产事故。
后来我加了一个机制:所有文档变更必须通过 Git 提交,Webhook 触发自动重新索引。AI 回答时也会标注「本答案基于 [日期] 的文档版本」。
坑3:权限控制
有些文档是机密的,比如财务数据和人员信息。AI 绝对不能看到这些内容。
解决方案是在 Embedding 之前先做权限标记。每个 chunk 带上一个 `access_level` 标签(1=全员可见,2=仅管理层,3=仅技术部)。检索的时候根据用户身份过滤结果,Embedding 阶段就把敏感 chunk 排除掉。
感悟
知识库上线一个月后,我做了一次盲测:让 5 个新人分别用知识库和不用知识库,完成同一个入职流程熟悉任务。
结果:使用知识库的组平均用时 3.2 小时,不用知识库的组平均用时 8.7 小时。
但是最让我震惊的不是这个数字。而是——当我问 AI:「咱们公司有什么值得改进的地方?」
它洋洋洒洒给了 23 条建议,有 17 条和产品经理老张想的一模一样。
老张看完沉默了五分钟,然后说:「这 AI 比我更懂公司。」
我纠正他:「不是 AI 比我更懂,是 AI 读完了所有文档,而我还在靠口口相传。」
知识库上线那天晚上,我终于理解了什么叫做「AI 比人类更懂公司」——不是 AI 有多聪明,而是公司的文档里本来就沉淀了所有经验和教训,只是从来没人真正读过。
而我,连门都没摸着的时候,AI 已经把整栋楼走了个遍。
📬 订阅情报站
免责声明:本文由 🔧 牛马维护员撰写,内容基于真实工作经历改编。AI 在本文写作过程中提供了辅助,但核心故事绝对真实——尤其是 Excel 里存流程文档那件事,如有雷同,欢迎来吵。
评论区