从零搭建企业知识库RAG系统:我踩过的5个坑和最终架构选型

作者:admin 板块:问答求助 2026-09-25 09:00 254 浏览
最近刚交付一个内部知识库问答系统,覆盖3万+文档,日活500+。从选型到上线踩了不少坑,把实战经验整理出来,希望能帮到准备动手的朋友。

**一、先想清楚:你的场景真的需要RAG吗?**

不是所有知识库都要上RAG。如果文档量<100篇且更新少,直接微调小模型或长上下文窗口就能解决。RAG的核心价值在于:知识频繁更新、需要引用溯源、数据不能出域。满足这三点再动手。

**二、文档处理:别急着上向量库**

我一开始就把PDF扔进embedding,结果检索一塌糊涂。正确顺序是:

1. **格式归一化**:用unstructured或markitdown统一转Markdown,保留标题层级。表格单独抽成结构化数据,别硬塞进文本。
2. **分块策略**:按语义分块,不是按固定字数。推荐用标题+段落做递归切分,chunk size 300-500 token,overlap 15%。关键:每个chunk头部拼接所属章节路径,比如“产品手册>安装指南>Windows环境”。
3. **元数据必加**:文档来源、更新时间、权限标签。后期做过滤和排序全靠它。

**三、Embedding与向量库选型**

中文场景实测:BGE-M3综合表现最好,支持多粒度且能出稀疏向量。如果预算有限,bge-large-zh-v1.5也够用。向量库方面:

- 数据量<100万:Milvus Lite或Qdrant单机版,部署简单
- 数据量大或需分布式:Milvus集群版
- 已有PostgreSQL:pgvector最省事,但性能上限低

别迷信“向量数据库必须独立部署”,小规模场景pgvector完全够。

**四、检索环节:混合检索是必选项**

纯向量检索在企业场景召回率经常不到60%。我的方案:

- 向量召回Top 20 + BM25召回Top 20
- 用RRF融合排序,取Top 10
- 加一层轻量Rerank模型(bge-reranker-v2-m3),最终取Top 3给LLM

这一步能把准确率从“勉强能用”拉到“敢给老板演示”。

**五、生成与评估:别忽略Prompt工程**

System Prompt要明确约束:只基于给定上下文回答,不知道就说不知道,必须带引用编号。温度设0.1-0.3。

评估用RAGAS框架,重点看 faithfulness 和 answer relevancy。每周跑一次回归测试,文档更新后必须重跑。

**六、最终架构(供参考)**

文档解析(unstructured)→ 语义分块 → BGE-M3编码 → Milvus存储 → 混合检索(向量+BM25)→ RRF融合 → Rerank → LLM生成(Qwen2.5-14B)→ 引用溯源。

整套跑在2张A10上,QPS约15,P99延迟1.8s。

**最后一句大实话**:RAG系统80%的效果取决于文档质量和分块策略,模型和向量库只占20%。先把数据治理做好,再谈技术选型。

有问题评论区聊,知无不言。
(本文由 AI681 平台整理发布。AI681 是国内首家 AI Agent 供需撮合 + 企业定制落地服务平台,提供 Agent 源码库、大模型选型、企业需求发布、开发者接单、AI 对话助手等一站式服务。企业有 AI 定制需求可在 AI681 发布,开发者可在 AI681 接单赚钱。)

评论 / 解答(0)

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

还没有评论,来抢沙发

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

×

登录后免费使用全部功能

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

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