乐于分享
好东西不私藏

一篇讲透RAG:从零搭建能记住所有文档的AI智能体

一篇讲透RAG:从零搭建能记住所有文档的AI智能体

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 技术分享