PART 01
前言
大多数 AI 智能体在上线之前就被一个问题杀死了:模型不知道你的数据。
它不知道你们公司的产品,不知道你的文档,不知道客户历史记录。它只知道训练数据里的东西。而对大多数商业应用来说,价值全部来自你的数据,不是互联网的数据。
RAG(检索增强生成)解决了这个问题。它让任何 AI 模型都能访问你的专属数据——文档、数据库、知识库、Wiki、会议记录——并基于这些数据回答问题和执行任务。
没有 RAG,你的 AI 助手是一个读过很多书的陌生人。有了 RAG,它是一个读过公司所有文档的同事。
这篇文章把 RAG 从底层原理到实战部署讲透。
///
PART 02
PART 01 RAG 到底在干什么
假设你问 AI:"我们企业客户的退款政策是什么?"
没有 RAG,AI 不知道你们的退款政策。它要么说"我不知道",要么编一个听起来合理但完全错误的答案。
有了 RAG,你的系统会这样做:
第一步:把你的问题转换成数学表示(向量嵌入),捕捉问题的语义。
第二步:在你的文档库里搜索,找到和问题最相关的片段——退款政策文档、企业服务条款、客服指南。
第三步:把这些相关片段和你的问题一起交给 AI。
第四步:AI 阅读这些文档,基于文档内容给出准确回答。
关键点:RAG 不微调模型,不改变模型本身。它改变的是模型在生成回答时能访问到什么信息。 就像在提问前给某人一本参考书——他们不需要背下来,只需要翻到相关章节。
///
PART 03
PART 02 RAG 流水线:五个阶段
每个 RAG 系统都遵循同一条流水线。理解这五个阶段是构建任何 RAG 应用的基础。
阶段一:文档摄入
你的数据分散在各种格式里——PDF、Word 文档、网页、数据库、表格、Slack 消息、邮件归档。RAG 需要把它们统一转换成可处理的格式。
流程:收集源文档 → 转为纯文本 → 清洗(去掉页眉页脚、导航元素、格式噪声) → 分块(整个系统最关键的设计决策)。
分块策略:
- 固定大小分块:每 500 个 token 切一刀。简单但可能把句子切成两半,破坏语义。
- 语义分块:在自然边界处切分——段落、章节标题、话题转换。保留语义但块大小不均匀。
- 递归分块:先尝试按段落切,太大就按句子切,再太大就按固定字符数切。最推荐的通用方案。
- 重叠分块:每个块和前一个块重叠 50-100 个 token,确保跨越边界的信息不会丢失。
最佳实践:每个块 300-500 个 token,重叠 50-100 个 token。 太小缺乏上下文,太大则搜索结果被无关信息稀释。
阶段二:向量嵌入
每个块需要转换成向量——一个捕捉语义的数学表示。讨论相似话题的两个块,即使用词完全不同,向量也会很接近。
推荐使用成熟的嵌入模型,比如 OpenAI 的 text-embedding-3-small。医疗、法律、金融等专业领域,考虑使用领域专用嵌入模型。
阶段三:向量存储
需要一个地方存储块和对应的向量,这就是向量数据库。
- 学习和小项目:Chroma,开源、本地运行、API 简单
- 生产环境:Pinecone、Weaviate、Qdrant,托管服务
- 已有 PostgreSQL:pgvector 扩展,不用部署新系统
阶段四:检索
用户提问时,系统从数据库中找到最相关的块。
流程:用同样的嵌入模型把问题转成向量 → 在向量数据库中搜索最相似的块 → 返回前 3-10 个结果。
提升检索质量的三板斧:
- 混合搜索:向量相似度搜索 + 关键词搜索结合,两者互补
- 元数据过滤:搜索前先按产品、日期等元数据缩小范围
- 重排序:初次检索后用交叉编码器模型重新排序,把最相关的推到前面
阶段五:生成
最后一步:把检索到的块和用户问题一起交给 AI,配合系统提示词,让它基于提供的文档回答。
系统提示词的关键指令:"只基于提供的上下文回答。如果上下文里没有相关信息,明确说'提供的文档中没有这个信息'。" 没有这条指令,AI 会用自己的一般知识补充,那些知识可能已经过时或对你的领域不适用。
///
PART 04
PART 03 五种最常见的 RAG 失败及修复
失败一:检索到了错误的块。 系统返回和问题不相关的片段,答案要么错误要么泛泛。
修复:调整分块大小,添加元数据过滤,实现混合搜索。
失败二:答案存在但没被检索到。 答案确实在文档里,但相关块没排进前几名。
修复:增加检索数量(从 5 个加到 10-15 个),实现重排序,检查分块是否把相关信息切断了。
失败三:有上下文但仍然幻觉。 AI 生成了上下文里没有的信息,却声称来自你的文档。
修复:强化系统提示词,要求 AI 引用具体段落作为依据。
失败四:重复块膨胀结果。 同一信息的多个副本占据了检索名额。
修复:摄入时去重,检索时检测近似重复并移除。
失败五:数据过时。 文档更新了但向量数据库里还是旧版本。
修复:实现自动刷新管道,文档变更时重新摄入和嵌入。
///
PART 05
PART 04 从原型到生产
周末搭建的 RAG 系统能用,但要上生产还需要:
- 认证授权:用户只能访问有权限的文档
- 来源引用:每个回答附上原始文档链接,建立信任
- 反馈收集:让用户评价回答质量,持续优化
- 监控体系:追踪查询量、检索质量、延迟、错误率
- 文档更新管道:源文档变更时自动重新处理
///
PART 06
结语
RAG 是通用 AI 和你的专属领域之间的桥梁。没有它,AI 给的是泛泛的回答;有了它,AI 给的是基于你真实数据的精准回答。
流水线很清晰:摄入文档 → 分块 → 嵌入 → 存入向量数据库 → 检索相关块 → 基于块生成回答。
每个企业都有知识困在没人读的文档里。RAG 把这些被困住的知识变成一个能即时精准回答问题的 AI 系统。现在就搭建 RAG 系统的企业,会获得一个每天都在复利增长的知识优势。
原文来源:@eng_khairallah1,162 赞,222 收藏
THANKS FOR READING
⚡ 爱马仕 · Hermes Agent 技术分享
夜雨聆风