第16章 RAG工作原理:文档→分块→向量→检索→生成
AI产品经理实战训练营 · 章节 16/44 · 60 学时
16.1 RAG的完整流程概览
RAG的工作流程分为两个阶段:索引阶段(离线,把文档处理成可检索的向量)和查询阶段(在线,用户提问时检索并生成答案)。
完整流程是5步:
- 文档处理:加载各种格式的文档(PDF、Word、Excel、网页、图片OCR)
- 文本分块:把长文档切成合适大小的片段(Chunk)
- 向量化:用Embedding模型把每个文本块转换成向量(一组数字)
- 检索:用户提问时,把问题也转成向量,在向量数据库中找到最相似的Top-K个文本块
- 生成:把检索到的文本块作为上下文,和用户问题一起发给大模型,生成最终答案
16.2 第一步:文档加载与解析
企业的文档格式千奇百怪:PDF、Word、Excel、PPT、图片、扫描件、网页、邮件、数据库……RAG的第一步是把这些文档都转换成纯文本。
常见文档格式的处理方式:
| 格式 | 处理工具 | 难点 |
|---|---|---|
| PDF(文本型) | PyPDF2、pdfplumber、Unstructured | 表格提取、多栏排版、页眉页脚 |
| PDF(扫描件) | OCR(PaddleOCR、Tesseract、阿里云OCR) | 识别准确率、表格还原、手写体 |
| Word(.docx) | python-docx、Unstructured | 样式提取、嵌套表格、图片 |
| Excel(.xlsx) | openpyxl、pandas | 多Sheet、合并单元格、公式 |
| PPT(.pptx) | python-pptx | 备注提取、图表文字 |
| 图片 | OCR + 多模态大模型 | 流程图、架构图的语义理解 |
| 网页 | BeautifulSoup、Playwright、Trafilatura | 动态渲染、广告过滤、正文提取 |
| 数据库 | SQL查询 + 结构化转文本 | 表关联、数据量控制 |
某制造企业的设备说明书是PDF格式,用PyPDF2提取文本后发现:
1. 多栏排版的内容被读成了"左栏第一行+右栏第一行+左栏第二行+右栏第二行",完全乱序
2. 表格中的数字和文字错位
3. 页眉页脚的"第X页 共Y页"被当成正文
4. 图片中的参数表完全丢失
解决方案:
1. 改用pdfplumber,它能更好地处理多栏和表格
2. 写规则过滤页眉页脚(固定位置、固定格式的文本)
3. 扫描件用OCR处理,关键参数表人工校对
4. 建立文档质量检查机制,解析后自动检查文本长度、乱码比例、表格完整性
教训:文档解析是RAG的地基,地基不牢���后面全白搭。产品经理必须重视文档解析质量,不能只看"能提取出文字"就行。
16.3 第二步:文本分块(Chunking)
文档解析后可能是几万字甚至几十万字的长文本,不能直接向量化(Embedding模型有输入长度限制,通常是512或8192个token),也不能直接检索(太长的文本会包含很多不相关信息,稀释相关性)。所以需要把长文本切成合适大小的片段,这就是分块(Chunking)。
分块是RAG中最影响效果的环节之一,分块太大或太小都会导致检索效果差。
常见分块策略:
| 策略 | 原理 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 固定长度分块 | 按固定字符数(如500字)切分,可设置重叠(如50字) | 简单、快速、可控 | 可能切断句子和段落,语义不完整 | 通用场景、结构简单的文档 |
| 按段落分块 | 按换行符、段落标记切分,过长的段落再二次切分 | 语义相对完整 | 段落长度差异大,有的太短有的太长 | 文章、报告、说明书 |
| 按标题分块 | 识别文档的标题层级(H1/H2/H3),按章节切分 | 语义完整、结构清晰 | 依赖文档结构,无标题的文档不适用 | 有清晰结构的文档(手册、标准、报告) |
| 递归分块 | 先按大分隔符(段落)切分,太大再按小分隔符(句子)切分,递归直到符合长度要求 | 兼顾语义完整和长度控制 | 实现复杂 | 通用场景(LangChain默认策略) |
| 语义分块 | 用Embedding计算相邻句子的相似度,相似度低的地方切分 | 语义最完整 | 计算量大、速度慢 | 对质量要求高的场景 |
| 父-子分块 | 检索时用小块(精准匹配),返回时用父块(完整上下文) | 兼顾检索精度和上下文完整性 | 实现复杂、存储量大 | 高质量知识库 |
• 通用问答:256-512个token(约400-800字)
• 技术文档/说明书:512-1024个token(约800-1600字),需要保留完整的技术描述
• 法律合同:按条款分块,每个条款一个块,保留完整的法律语义
• 代码文档:按函数/类分块,保留完整的代码逻辑
• 重叠(Overlap):通常设为块大小的10%-20%,避免关键信息被切断
没有万能的分块大小,必须根据你的文档类型和用户提问习惯做A/B测试,找到最优值。
16.4 第三步:向量化(Embedding)
分块后,每个文本块还是文字,计算机无法直接计算"相似度"。需要用Embedding模型把文本转换成向量(一组浮点数,比如1536维的向量就是1536个数字)。
Embedding的核心特性:语义相似的文本,向量距离也近。比如"如何重置密码"和"忘记密码怎么办",文字不同但语义相似,它们的向量距离就很近;而"如何重置密码"和"今天天气怎么样"语义不相关,向量距离就很远。
常用的相似度计算方式:
- 余弦相似度(Cosine Similarity):计算两个向量的夹角余弦值,范围[-1,1],越接近1越相似。最常用,不受向量长度影响。
- 欧氏距离(Euclidean Distance):计算两个向量的直线距离,越小越相似。受向量长度影响。
- 点积(Dot Product):计算两个向量的点积,越大越相似。向量归一化后等价于余弦相似度。
想象一个三维空间(实际是几百到几千维,但原理一样):
• "苹果"的向量坐标是(0.8, 0.6, 0.1)
• "香蕉"的向量坐标是(0.7, 0.5, 0.2)——和"苹果"距离近,因为都是水果
• "汽车"的向量坐标是(0.1, 0.2, 0.9)——和"苹果"距离远,因为语义不相关
用户问"什么水果好吃",这个问题的向量是(0.75, 0.55, 0.15),计算它和各个向量的距离,最近的是"苹果"和"香蕉",就把这两个文本块检索出来。
这就是向量检索的本质:把语义相似度转换成空间距离,用数学计算找到最相关的内容。
16.5 第四步:检索(Retrieval)
用户提问时,系统做以下事情:
- 把用户问题用同一个Embedding模型转成向量
- 在向量数据库中计算问题向量和所有文本块向量的相似度
- 找到最相似的Top-K个文本块(K通常是3-10)
- 把这些文本块按相关度排序,作为上下文传给大模型
检索的核心挑战:
- 召回率(Recall):相关的文档有没有被检索到?如果正确答案在文档里但没被检索到,大模型再厉害也答不出来。
- 精确率(Precision):检索到的文档是不是都相关?如果检索了一堆不相关的文档,会稀释上下文,干扰大模型生成。
- 速度:百万级文档中检索Top-K,要在几百毫秒内完成,需要向量数据库做索引优化(如HNSW、IVF)。
1. 查询改写(Query Rewriting):用户问题可能太口语化、太简短,先用大模型改写成更适合检索的查询。比如用户问"咋弄",改写成"如何操作设备保养流程"。
2. 多路召回(Hybrid Search):同时用向量检索(语义匹配)和关键词检索(BM25,精确匹配),合并结果。向量检索能找到同义词相关的内容,关键词检索能精确匹配专有名词,两者互补。
3. 重排序(Rerank):先粗筛出Top-50,再用更精准的重排序模型(如Cohere Rerank、BGE Reranker)算出Top-10。重排序模型更精准但更慢,所以只对粗筛结果用。
4. 元数据过滤:检索时按文档类型、部门、时间等元数据过滤,缩小检索范围。比如只在"设备说明书"类文档中检索,不检索"行政通知"。
5. 假设性文档生成(HyDE):先让大模型根据问题生成一个"假设的答案",再用这个假设答案去检索。因为答案和文档的相似度通常比问题和文档的相似度更高。
16.6 第五步:生成(Generation)
检索到Top-K个文本块后,把它们和用户问题一起组装成Prompt,发给大模型生成答案。
典型的RAG生成Prompt模板:
你是一个专业的知识库问答助手。请根据以下参考资料回答用户的问题。
【参考资料】
{检索到的文本块,每个标注来源}
【用户问题】
{用户问题}
【回答要求】
1. 只根据参考资料回答,不要使用参考资料以外的知识
2. 如果参考资料中没有相关信息,请回答"根据现有资料无法回答这个问题"
3. 回答要准确、简洁、有条理
4. 关键信息标注来源,如"(来源:《设备手册》第15页)"
5. 不要编造参考资料中没有的信息
某企业上线RAG知识库后,发现答案经常"幻觉",明明文档里没有的信息,大模型也能编出来。分析原因发现:
1. Prompt中没有明确要求"只根据参考资料回答"
2. Prompt中没有"无法回答时怎么说"的兜底规则
3. 没有要求标注来源,大模型编造了也无法发现
优化Prompt后(加上上面的5条要求),幻觉率从35%降到5%以下。用户反馈"答案靠谱多了,能看到来源,用着放心"。
教训:RAG的效果不仅取决于检索质量,生成阶段的Prompt设计同样重要。明确的规则、兜底机制、来源标注,是减少幻觉的关键。
16.7 RAG效果评估指标
作为产品经理,你需要量化RAG系统的效果,不能只靠"感觉还行"。核心指标:
| 指标 | 定义 | 目标值 | 测量方式 |
|---|---|---|---|
| 检索命中率 | 正确答案所在的文本块是否在Top-K中 | >90% | 标注测试集,人工判断 |
| 答案准确率 | 生成的答案是否正确、完整 | >85% | 人工评分或用大模型打分 |
| 幻觉率 | 答案中包含参考资料以外信息的比例 | <5% | 人工检查或自动检测 |
| 可溯源率 | 答案中的关键信息是否都有来源标注 | 100% | 自动检查 |
| 拒答准确率 | 无法回答时是否正确拒答,而不是编造 | >95% | 用无答案的问题测试 |
| 响应时间 | 从用户提问到返回答案的时间 | <3秒 | 系统监控 |
| 用户满意度 | 用户对答案的"有用/没用"反馈 | >80%有用 | 用户点赞/点踩 |
16.8 本章小结
RAG的工作原理是5步:文档加载→文本分块→向量化→检索→生成。每一步都影响最终效果:
- 文档加载是地基,解析质量差后面全白搭
- 分块是关键,太大太小都不行,要根据文档类型调优
- 向量化是桥梁,Embedding模型的质量决定语义匹配的准确度
- 检索是核心,召回率和精确率要平衡,多路召回+重排序是标配
- 生成是门面,Prompt设计决定答案质量,明确规则+兜底+来源标注是减幻觉关键
作为AI产品经理,你不需要深入每个技术细节,但必须理解每一步的作用、常见问题、优化方向,才能在项目中做出正确的产品决策,和技术团队有效沟通。
下一章我们会讲向量数据库的选型,这是RAG系统的核心基础设施。
📝 本章练习(5题)
答案与解析请在 互动学习看板 中作答查看。
📚 AI产品经理实战训练营 课程目录(44 章)
- 第1章 AI产品经理是做什么的?和传统PM有什么区别?
- 第2章 2026年AI产品经理就业市场:哪些行业在招?薪资多少?
- 第3章 零经验转行AI产品经理的3条路径
- 第4章 AI产品全景图:从聊天机器人到Agent,一文搞懂
- 第5章 AI产品经理能力模型:你需要掌握哪些技能?
- 第6章 实战:拆解3个你每天在用的AI产品
- 第7章 大模型是什么?用大白话讲清楚
- 第8章 主流大模型对比:GPT-4o、Claude、DeepSeek、豆包、Kimi怎么选?
- 第9章 Prompt入门:写好提示词的5个原则
- 第10章 Prompt进阶:System Prompt、COT思维链、Few-shot示例
- 第11章 结构化输出:让大模型返回JSON、表格、代码
- 第12章 Prompt优化实战:从垃圾Prompt到高质量Prompt
- 第13章 大模型的"幻觉"问题:产品经理怎么应对?
- 第14章 实战:为一个智能客服设计完整Prompt体系
- 第15章 RAG是什么?为什么企业都在做知识库?
- 第16章 RAG工作原理:文档→分块→向量→检索→生成
- 第17章 向量数据库选型:Milvus、Pinecone、Chroma、pgvector怎么选?
- 第18章 Embedding模型选型:OpenAI、BGE、M3E、GTE对比
- 第19章 Reranker重排序:让检索结果更精准
- 第20章 查询改写与混合检索:提升召回率的实战技巧
- 第21章 知识库运营:文档治理、更新机制、效果监控
- 第22章 实战:从零搭建一个企业知识库(完整流程)
- 第23章 Agent是什么?和聊天机器人有什么区别?
- 第24章 Agent核心能力:感知、规划、工具调用、记忆
- 第25章 主流Agent框架与协议:Agent Harness、MCP、A2A全解析
- 第26章 工具调用(Function Calling)原理与实战
- 第27章 Agent记忆系统:短期记忆、长期记忆、向量记忆
- 第28章 多Agent协作:多个智能体怎么分工配合?
- 第29章 Agent评估体系:成功率、成本、延迟怎么监控?
- 第30章 实战:设计一个制造业生产异常处理Agent
- 第31章 AI产品需求分析:怎么识别真需求还是伪需求?
- 第32章 AI产品竞品分析:怎么调研和拆解竞品?
- 第33章 AI产品PRD撰写:技术可行性、数据需求、评估指标
- 第34章 AI产品原型设计:对话流、状态机、异常处理
- 第35章 AI产品数据指标体系:从DAU到模型准确率,全面监控
- 第36章 AI项目管理:从需求到上线的全流程管控
- 第37章 实战项目1:从零搭建制造业AI智能质检系统
- 第38章 实战项目2:从零搭建企业级AI知识库(RAG系统)
- 第39章 AI产品经理简历优化:让HR一眼看中你
- 第40章 项目经验包装:把普通项目讲成亮眼案例
- 第41章 AI产品经理面试常见问题:提前准备,从容应对
- 第42章 案例分析面试:用结构化思维征服面试官
- 第43章 薪资谈判:拿到你应得的报酬
- 第44章 入职前3个月:快速站稳脚跟,建立信任
