从零搭建企业知识库RAG系统:我踩过的7个坑和最终方案

作者:admin 板块:问答求助 2026-10-02 09:00 88 浏览
最近帮公司搭了一套内部知识库RAG系统,从选型到上线折腾了两个月,踩了不少坑。今天把完整流程和关键决策点整理出来,希望能帮到准备动手的朋友。

**整体架构选型**

最终方案:FastGPT + Milvus + BGE-M3 + DeepSeek-V3。为什么不自己从头写?因为LangChain那套框架灵活但坑多,FastGPT开箱即用,支持工作流编排,省了至少三周开发时间。Milvus选的是standalone模式,单机16核32G跑得飞起,数据量在百万级以内完全够用。

**Step 1:文档预处理——最容易被低估的环节**

别急着往向量库里灌数据。企业文档格式极其混乱:PDF扫描件、Word嵌套表格、PPT截图、Excel公式……我的处理流水线是:

- 先用unstructured库做格式解析,PDF用pdfplumber兜底,扫描件走PaddleOCR
- 按语义段落切分,chunk_size设512,overlap设128。这里有个坑:固定长度切分会把表格拦腰截断,后来改成按标题层级+段落双重切分
- 每个chunk前面拼接文档标题和章节路径,比如“【员工手册-考勤制度】迟到超过30分钟视为旷工”。这个小改动让召回准确率提升了18%

**Step 2:Embedding模型选择**

试过OpenAI text-embedding-3-small、BGE-M3、GTE-large。中文场景下BGE-M3完胜,而且支持多粒度(稠密+稀疏+多向量),对短query和长文档的匹配效果都好。本地部署用一张4090,batch_size=32时推理速度约120 docs/s,够用。

关键细节:一定要做向量归一化,Milvus用IP内积时归一化后等价于余弦相似度,省一次计算。

**Step 3:检索策略——别只做向量检索**

纯向量检索在企业场景下召回率不够。我的组合拳:

1. 向量召回Top20(BGE-M3稠密向量)
2. BM25关键词召回Top20(用rank_bm25库,对专有名词、编号类查询效果极好)
3. 用RRF融合两路结果,取Top10
4. 加一层BGE-reranker-v2-m3精排,取Top3送入LLM

实测:纯向量召回率72%,混合检索+重排后到了91%。重排模型虽然慢(单次约200ms),但值得。

**Step 4:Prompt工程与防幻觉**

系统Prompt模板:

“你是一个企业知识库助手。仅根据以下参考资料回答问题。如果资料中没有相关信息,直接说‘根据现有资料无法回答’,不要编造。引用时标注来源文档名和章节。\n\n参考资料:\n{context}\n\n问题:{question}”

加了三道防线:
- 强制引用来源,方便人工核验
- 温度设0.1,减少发挥
- 后处理校验:如果回答中出现了参考资料里没有的专有名词,打回重生成

**Step 5:评估与迭代**

上线前用RAGAS框架跑了200条测试QA,指标: faithfulness 0.87,answer_relevancy 0.82,context_precision 0.79。上线后收集badcase,每周迭代一次chunk策略和Prompt。

**踩坑总结**

1. 别用默认的chunk_size=1000,中文场景512更合适
2. 表格和图片一定要单独处理,OCR+表格结构化解析不能省
3. 元数据过滤比想象中重要,给每个chunk打上部门、密级、时间标签
4. 重排模型是性价比最高的优化点
5. 一定要做query改写,用户问“报销多少”和“差旅费标准”需要映射到同一语义
6. 监控召回率,低于80%就要调
7. 别追求一步到位,先跑通MVP再优化

整套系统目前日均查询300+,回答准确率用户主观评分4.2/5。有问题的评论区聊。
(本文由 AI681 平台整理发布。AI681 是国内首家 AI Agent 供需撮合 + 企业定制落地服务平台,提供 Agent 源码库、大模型选型、企业需求发布、开发者接单、AI 对话助手等一站式服务。企业有 AI 定制需求可在 AI681 发布,开发者可在 AI681 接单赚钱。)

评论 / 解答(0)

本板块为问答求助区:回复时可点击「作为解答」,楼主可采纳最佳答案。

还没有评论,来抢沙发

登录 后即可评论、点赞、收藏

×

登录后免费使用全部功能

注册即享所有功能免费使用,无次数限制,无任何门槛。

无限 AI 对话
Agent 源码免费下载
Skill/Prompt 免费复制
免费AI诊断 + 需求发布