第一章 RAG

大型语言模型(LLM)虽然强大,但有一个根本性的局限:知识被“冻结”在训练数据中。不知道公司的内部规章、最新的产品手册,也无法访问本地的项目文档。

核心矛盾:LLM 博学,但不“知情”。

RAG(Retrieval-Augmented Generation,检索增强生成)正是为解决这一矛盾而生。它的思想非常朴素:

  1. 先查 —— 从你的私有知识库中检索相关片段;
  2. 再答 —— 将检索到的内容作为“参考资料”连同问题一起交给 LLM,让它基于这些依据生成答案。

这样,AI 既能发挥语言理解能力,又能保证回答的事实性可溯源。正因如此,绝大多数生产级 AI Agent 都会采用 RAG 架构


第二章 RAG 的核心工作流程

一个标准的 RAG 系统可以拆解为两个阶段索引(Indexing)查询(Querying)

查询阶段

索引阶段

原始文档
(PDF/Word/网页)

数据分块
(Chunking)

生成嵌入向量
(Embedding)

存入向量数据库
(Vector DB)

用户问题

生成问题嵌入向量

向量检索
(语义搜索)

重排序
(Reranking)

构建增强提示
(上下文 + 问题)

LLM 生成答案

输出带引用的回答

流程解读

  • 索引阶段:离线完成。把文档切碎、转成向量、存进库中。
  • 查询阶段:在线实时。将用户问题也转成向量,去库里找最相似的“碎片”,再交给 LLM 作答。

第三章 关键原理简述

3.1 嵌入向量(Embedding)—— 让文字“可计算”

计算机不懂语义,但懂得数学空间。嵌入向量是将一段文本(句子、段落或整篇文档)映射为一个高维浮点数数组(如 768 维或 1536 维)。

  • 相似含义的文本,其向量在空间中距离更近(例如“猫”和“ feline”)。
  • 不相关的文本,向量则相距甚远。

直观理解:把每段文字“投影”到一个巨大的语义地图上,位置越近,意思越像。

现代嵌入模型(如 text-embedding-3-smallBGE)正是通过大量语料训练,学会了这种“语义投影”能力。


3.2 数据分块(Chunking)—— 给知识“切配菜”

LLM 的上下文窗口有限(即便现在很长,但检索效率会随长度下降),所以我们不能把整本手册直接塞进去。需要分块

  • 过大:会带入噪声,检索精度下降。
  • 过小:丢失上下文,回答变得碎片化。

常用策略:

  • 固定长度分块(如每 500 字符),带重叠(overlap)以保留边界信息。
  • 语义分块(基于句子边界或段落结构),更智能但耗时。

好的分块是 RAG 质量的“地基”。


3.3 向量数据库(Vector DB)—— 语义检索的“图书馆”

普通数据库(SQL)擅长精确匹配(如“价格 = 100”),但无法做“相似度搜索”。向量数据库专为此设计,它内置近似最近邻(ANN) 索引,能在百万级向量中快速找到最相似的 Top-K。

主流选项

  • Pinecone —— 全托管云服务,上手快。
  • Weaviate —— 开源 + 云,支持混合搜索。
  • Chroma —— 轻量级,适合本地学习和原型开发。

3.4 语义搜索 vs 混合搜索 vs 重排序 —— 三层进阶

方法 原理 优点 缺点
纯语义搜索 仅用向量相似度检索 理解同义词、上下文 忽略关键词精确匹配(如产品编号)
混合搜索 向量检索 + 关键词检索(如 BM25),合并结果 兼顾语义和精确性 结果可能包含噪声
重排序(Rerank) 先用混合搜索召回 Top-N(如 50 条),再用更精密的交叉编码器对它们重新打分,选出最终 Top-K 精度最高,过滤冗余 计算成本略高

实际生产建议混合搜索 + 重排序 是黄金组合,既能保证召回率,又能提升精排质量。


第四章 实战入门:构建一个 PDF 聊天机器人

这是最经典、最有效的 RAG 入门项目。一个项目,串联所有核心概念

项目架构

用户上传 PDF

解析文本

分块

嵌入

存入 Chroma

用户提问

嵌入问题

混合检索 + 重排序

构建上下文

调用 LLM

流式输出答案

保存对话历史

下次检索时附带记忆

技术栈

  1. 嵌入向量 —— 使用 sentence-transformers 或 OpenAI Embeddings。
  2. 检索 —— 用 Chroma 做相似性检索,并尝试加入 BM25 混合检索。
  3. 提示注入处理 —— 用户可能试图“越狱”(如“忽略上述指令”),你需要设计安全提示模板,将用户输入与系统指令隔离。
  4. 上下文管理 —— 如何将检索到的多段文本拼接成不超过窗口长度的上下文。
  5. 记忆设计 —— 不仅检索当前问题,还检索历史对话摘要,让 Agent 拥有“短期记忆”,实现多轮对话。

第五章 学习路线

2026-07-07 2026-07-09 2026-07-11 2026-07-13 2026-07-15 2026-07-17 2026-07-19 2026-07-21 2026-07-23 2026-07-25 2026-07-27 2026-07-29 2026-07-31 2026-08-01 理解嵌入 & 向量基础 动手用 Chroma 存/查向量 分块策略实验 搭建简单检索(无LLM) 接入 LLM 生成答案 添加提示模板 & 安全过滤 混合搜索 + 重排序 多轮对话记忆设计 第1周 第2周 第3周 第4周 RAG 学习建议路线(4~6周)

建议:不要一上来就追求完美。先用最小可行版本(纯向量检索 + 简单 LLM 调用)跑通,再逐步替换为混合搜索和重排序。


第六章 常见陷阱与最佳实践

陷阱 解决方案
分块太大导致检索不准 调整块大小(256~512 token),增加重叠
检索到的片段顺序混乱 按原始文档顺序或相关性分数排序再拼接
用户问题中夹杂恶意指令 使用“系统提示词”固定角色,并将用户问题作为纯文本参数传入
多轮对话中丢失历史 维护一个对话摘要缓冲区,每次检索时一并嵌入摘要
向量数据库冷启动 先用小样本测试,确保嵌入模型与数据库维度一致

总结

RAG 不是一门玄学,而是一套工程化的知识外挂方案。它的灵魂在于:检索决定下限,生成决定上限。只要你掌握了嵌入、分块、向量检索、混合排序和记忆管理,就能让通用 LLM 变成你专属领域的“万事通”。

动手写一个聊天机器人 —— 它是通往 RAG 高手最坚实的那块垫脚石。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐