AI教程网

每天一篇AI教程

我用RAG技术给公司做了个内部知识库,全过程记录

2026-07-24

我用RAG技术给公司做了个内部知识库,全过程记录

上个月,我们公司的技术总监突然找到我,说新来的几个同事每天要花大量时间在群里问各种重复的问题——"开发环境的数据库地址是多少?""部署流程文档在哪里?""这个接口的API密钥怎么申请?"——搞得大家都挺烦的。

他问我能不能搞个类似ChatGPT的东西,能直接回答这些内部问题。我第一反应是:那得训练个模型?成本太高了吧。后来转念一想,RAG(检索增强生成)不就是干这个的吗?

于是我就接下了这个活,整个过程花了大概两周时间,从零到一落地了一个内部知识库。今天就把完整的实践过程分享出来,希望能给有类似需求的朋友一些参考。

为什么要用RAG而不是直接训练模型

为什么要用RAG而不是直接训练模型

很多人一听到"企业内部AI知识库",第一反应就是微调一个LLM。说实话,我之前也这么想过,但仔细算了一笔账就放弃了。

方案 成本 更新难度 准确性 部署复杂度
微调模型 数万元起(GPU+训练费用) 每次更新需重新训练 可能产生幻觉 高
RAG方案 几百元(向量数据库+API调用) 直接更新文档库即可 基于原文,幻觉少 中等
纯搜索方案 零成本 容易 需要用户自行筛选 低

微调一个大模型,光租GPU训练就得花好几千,而且一旦公司内部文档更新了,你还得重新训练。RAG就灵活多了——文档改了,直接把新内容扔进向量数据库就行,完全不用动模型。

更重要的是,RAG的回答是基于你提供的文档生成的,所以不会出现模型自己编造公司内部信息的情况。比如我问"公司VPN的地址是什么",RAG会从文档库里找到对应的配置文档,然后基于这段文字生成回答,不可能凭空捏造一个地址出来。

技术选型:我用的是这些工具

我选的技术栈其实挺常见的,都是开源或者有免费额度的方案:

说实话,选型的时候我也纠结过要不要用Milvus或者Pinecone,但考虑到公司内部文档总共也就几百份,ChromaDB完全够用了,而且它可以直接跑在服务器上,不需要额外维护集群。

落地过程:从文档清洗到上线

落地过程:从文档清洗到上线

第一步其实是最痛苦的——文档清洗。公司内部文档散落在各个地方:飞书文档、GitLab Wiki、本地Markdown文件,甚至还有几个同事的Word文档。我写了一个脚本,把飞书文档通过API导出来,然后统一转成Markdown格式。

文档清洗的核心就是分块(chunking)。我试了两种策略:

  1. 固定长度分块:每512个token切一块,重叠128个token
  2. 语义分块:根据Markdown的标题层级来切,每个二级标题下的内容作为一个块

测试下来,语义分块的效果明显更好。因为固定长度分块经常把一段完整的技术说明切断,导致检索的时候上下文不完整。比如一个"数据库连接配置"的说明被切成两半,RAG只拿到前半段,回答自然就不对了。

分块之后,我把每一块用bge模型转成向量,存到ChromaDB里。整个知识库大概有800多份文档,分成了3000多个块,建索引花了大概10分钟。

检索和生成的调优过程

这部分是我花时间最多的。刚开始直接用最基础的"检索+拼接prompt"方式,效果惨不忍睹。举个例子,我问"怎么部署生产环境",RAG返回了"测试环境部署文档"和"开发环境部署文档"的片段,然后模型就把两者混在一起回答,完全没法用。

我做了三个关键优化:

第一,检索策略改用MMR(最大边际相关性)。普通的相似度检索会返回最相似的top-k个块,但可能这k个块都来自同一份文档,信息量不够。MMR在保证相关性的同时,会尽量选择多样化的结果。这样我就能同时拿到"部署流程"和"环境配置"两个不同维度的信息。

第二,重排序(Re-ranking)。ChromaDB第一次检索返回30个候选块,再用一个cross-encoder模型(BAAI/bge-reranker-large)重新排序,只取前5个。这一步大概增加了100ms的延迟,但准确率提升了将近20%。

第三,prompt模板里加了一层"引用格式"约束。我让模型在回答的时候必须注明信息来源,格式是[来源: 文档标题 - 章节名称]。这样用户看到回答的时候,可以直接去原文确认,也方便追责。比如:

生产环境的数据库地址是192.168.1.100:3306,用户名prod_user,密码请向运维组申请。[来源: 运维手册 - 数据库配置]

上线后的效果和踩坑

部署了两周,目前公司有30多个同事在用这个知识库。后台统计了一下,平均每天有150次左右的查询,其中80%的问题都能在5秒内给出满意的回答。

但也有几个坑:

现在这个知识库已经跑了三周,同事们的反馈还不错,至少群里问重复问题的人少了很多。下一步我打算接入企业微信,让同事可以直接在聊天里@机器人提问,不用再打开网页。

RAG这个技术真的挺适合做内部知识库的,成本低、效果好、更新灵活。如果你公司也有类似的需求,不妨试试看,不用一上来就想着训练大模型。