
企业内部有大量文档——产品手册、技术规范、客服话术、合同模板。员工想找个答案,要在文件夹里翻半天。RAG(检索增强生成)就是解决这个问题的:把文档喂给大模型,员工直接提问,大模型基于企业文档回答。
这篇把从文档到问答的完整流程拆清楚,每一步做什么、要注意什么。
一、整体流程图
文档上传 → 文档解析 → 切块 → 向量化 → 存入向量库
↓
用户提问 → 问题向量化 → 相似度召回 → 拼Prompt → 大模型生成答案
整个流程分两段:离线建库(文档处理成向量存起来)和在线问答(用户提问时实时检索+生成)。
二、第一步:文档接入和解析
企业文档格式五花八门:Word、PDF、PPT、Excel、扫描件、网页。第一步要做的是把它们统一处理成结构化文本。
关键要点:
- 电子版文档(Word、PDF文字版):直接提取文本,但要保留标题层级
- 扫描件/图片PDF:需要 OCR 识别文字
- 表格:不要拆成纯文本,保留行列结构,否则检索出来语义是碎的
- 过滤噪音:页眉、页脚、水印、目录、重复内容要去掉
输出格式建议用 Markdown——它天然带层级结构(# 标题、表格、列表),大模型理解起来最自然。
三、第二步:文档切块(Chunking)
解析完的文档不能整篇塞进向量库——太长了,大模型上下文窗口有限,而且检索不精准。要切成小块(Chunk)。
切块策略直接影响召回质量:
| 策略 | 做法 | 优点 | 缺点 |
|---|---|---|---|
| 固定长度切块 | 每 500 字一块 | 简单 | 容易切断完整段落 |
| 按语义切块 | 按标题、段落自然边界切 | 语义完整 | 需要文档结构信息 |
| 父子切块 | 小块精准召回,大块提供上下文 | 兼顾精度和上下文 | 实现复杂 |
推荐做法:按文档的标题层级切块——一个二级标题下的所有段落作为一个 Chunk,太长就再拆。这样每个 Chunk 都是一个完整的语义单元。
每个 Chunk 还要带上元数据:来自哪个文档、哪个章节、哪一页。召回时可以按文档过滤。
四、第三步:向量化和入库
把每个 Chunk 文本通过 Embedding 模型转成向量(一串数字),存入向量数据库。
这一步要注意:
- Embedding 模型要和后续召回匹配:用哪个模型生成向量,召回时就得用同一个模型把问题转成向量
- 向量数据库选型:小规模用 FAISS/Chroma 本地跑就行,大规模用 Milvus、Pinecone 等专业方案
- Chunk 大小:通常 300-800 字一块太小会丢上下文,太大召回不准
五、第四步:在线问答流程
用户提问时:
- 问题向量化:把用户问题用同一个 Embedding 模型转成向量
- 相似度召回:在向量数据库里找最相似的 Top-K 个 Chunk(通常 K=3~5)
- 过滤和重排:根据元数据过滤不相关文档,可以做一次重排(Rerank)提升相关性
- 拼 Prompt:把召回的 Chunk 作为上下文,和用户问题一起拼成 Prompt:
基于以下参考资料回答用户问题。如果资料中没有相关信息,请说不知道。
参考资料:
{召回的Chunk 1}
{召回的Chunk 2}
{召回的Chunk 3}
用户问题:{用户提问}
- 大模型生成答案:把拼好的 Prompt 发给 LLM,得到回答返回给用户
六、几个容易踩的坑
坑1:召回的内容不对。 用户问的是产品 A 的问题,召回的都是产品 B 的文档。解决方法:Chunk 里带上文档来源标签,召回时按标签过滤;或者优化切块策略。
坑2:大模型胡说八道。 召回的资料里没有答案,但大模型硬编了一个。解决方法:Prompt 里加"如果资料中没有相关信息,请说不知道",并设置置信度阈值。
坑3:长文档检索不准。 一个 100 页的手册,相关内容只在其中两页。解决方法:精细切块,确保相关内容是一个独立 Chunk,而不是埋在一大段里。
坑4:文档更新了知识库没更新。 产品改了功能,但向量库里还是旧文档。解决方法:文档更新时重新解析、切块、入库,删掉旧 Chunk。
七、技术选型建议
从零搭一个 RAG 知识库,最小技术栈:
- 文档解析:通用文档用开源解析库,扫描件/复杂排版用文档智能 API
- Embedding:通义千问 Embedding、OpenAI text-embedding 等
- 向量数据库:FAISS(本地测试)→ Milvus(生产环境)
- 大模型:通义千问、GPT 等,通过 API 调用
- 前端问答界面:简单做个网页,输入问题展示答案
这个架构不需要自己训练模型,全是调 API 和组装流程,个人或小团队几天就能搭出可用版本。
八、写在最后
RAG 的价值不是"让大模型变强",而是"让大模型知道你公司的事"。它把企业私有文档和通用大模型连接起来,回答基于你的真实资料,而不是大模型的训练数据。理解了完整流程,你就知道每个环节该调什么参数、出了问题该查哪一步。
完整的技术方案和产品组合可以看官方方案页——查看文档智能与 RAG 构建 LLM 知识库完整方案。具体配置以页面实际展示为准。
你搭 RAG 知识库时遇到过什么问题?评论区交流。