📘 RAG 工作机制详解

一个高质量知识库背后的技术全流程
来源:B站 BV1JLN2z4EZQ · 时长 17:01 · 图文学习笔记
🎬

RAG 工作机制详解

原视频:B站 BV1JLN2z4EZQ

视频文件较大 (123.6 MB),请点击下方链接在 B站 观看

▶ 在 B站 观看原视频
📹 时长 17:01 1920×1080

⚡ 30 秒总览

RAG(Retrieval Augmented Generation,检索增强生成)是目前最常用的 AI 问答方案之一。它的核心思想是:先从知识库中检索相关内容,再基于这些内容生成答案——即"先检索,再生成"。

核心问题
大模型不知道你的私有知识
解决方案
检索相关片段 + 送给大模型生成
两阶段流程
准备阶段(分片+索引)+ 回答阶段(召回+重排+生成)
关键技术
Embedding、向量数据库、余弦相似度、Cross-Encoder

🗺️ 学习地图

本视频从使用场景出发,逐步拆解 RAG 的每个环节,最后从"提问前"和"提问后"两个角度复习整个链路。

分片 Chunking
索引 Indexing
召回 Retrieval
重排 Reranking
生成 Generation
准备阶段 发生在用户提问前 回答阶段 发生在用户提问后

💡 为什么需要 RAG?

视频画面

假设你想做一个智能客服来回答公司产品相关问题。最直接的做法是把产品手册全部发给大模型——但这行不通:

🚫
上下文窗口有限:每个模型只能存储一定量的信息,文档过长会"读了后面忘了前面"
💰
推理成本高:每次回答都要带上一本厚厚的手册,Token 越多成本越高
🐢
推理速度慢:内容越多,模型消化时间越长,严重影响响应速度

RAG 的解决思路:不把所有内容都发给模型,而是只检索与问题相关的片段,再把这些片段和问题一起发给大模型。

🔑 核心概念详解

05:16

📐 向量 (Vector)

向量概念

向量代表一个有大小、有方向的量,通常用一组数字表示。每个向量都有"维度",维度等于数字的个数。

  • 一维向量:一个数字(如 [3]
  • 二维向量:两个数字(如 [2, 2]
  • 三维向量:三个数字(如 [1, 2, 3]
  • RAG 中常用:几百到几千维,维度越大信息越丰富
06:45

🔄 Embedding(嵌入)

Embedding概念

Embedding 是将文本转换为向量的过程。其核心目的是:含义相近的文本,转换后的向量也相近

例如:

  • "马克喜欢吃水果" → 向量 [1, 2]
  • "马克爱吃水果" → 向量 [1, 1](非常接近↑)
  • "天气真好" → 向量 [-3, -1](距离很远)

Embedding 由专门的 Embedding 模型完成(不是 GPT-4o、DeepSeek 这类模型),可参考 MTEB 排行榜选择最佳模型。

08:08

🗄️ 向量数据库

向量数据库

向量数据库是专门用来存储和查询向量的数据库,它做了很多优化,并提供计算向量相似度的函数。

存储时不仅要存向量,还要存原始文本——因为最终需要的是原始文本回答用户问题,向量只是中间结果。

🔍 RAG 完整流程拆解

阶段一:数据准备(提问前)

04:21

① 分片 (Chunking)

分片

将文档切分为多个片段。方式有很多种:

  • 按字数:如 1000 字一个片段
  • 按段落:一个段落一个片段
  • 按章节、按页码等
04:59

② 索引 (Indexing)

索引

通过 Embedding 将每个片段文本转换为向量,然后将片段文本和对应向量都存储在向量数据库中。

过程:片段1 → Embedding → 存入数据库 → 片段2 → Embedding → 存入数据库 → ...直到所有片段处理完毕。

阶段二:回答(提问后)

09:51

③ 召回 (Retrieval)

召回

搜索与用户问题相关片段的过程:

  1. 用户问题 → Embedding 模型 → 转为向量
  2. 向量 → 向量数据库 → 查询最相似的 Top 10 片段
  3. 通过计算向量相似度来确定相关性
11:56

📊 向量相似度计算方法

相似度计算
方法 原理 判断标准
余弦相似度 计算两个向量夹角的余弦值 夹角越小 → 相似度越高
欧氏距离 计算两个向量之间的直线距离 距离越小 → 相似度越高
点积 考虑方向关系和长度的乘积 值越大 → 相似度越高;方向相反为负;垂直为0
13:16

④ 重排 (Reranking)

重排

从召回的 10 个片段中,再精选出 3 个与问题最相关的。

为什么不直接在召回阶段就挑 3 个?因为两个阶段使用的方法不同:

对比维度 召回 (Retrieval) 重排 (Reranking)
方法 向量相似度(余弦/欧氏/点积) Cross-Encoder 模型
成本
耗时
准确率 较低 高很多
角色 粗筛(像简历筛选) 精选(像面试)
15:21

⑤ 生成 (Generation)

生成

将重排后的 3 个最相关片段 + 用户问题一起发给大模型(如 GPT-4o、DeepSeek),让它根据片段内容来回答用户问题。

📅 视频时间线

00:00 - 00:45
开场介绍:什么是 RAG?为什么要了解它?
00:45 - 01:30
使用场景:智能客服、知识助手,为什么不能直接把文档扔给模型
01:30 - 02:05
RAG 基本流程概览:分片 → 检索 → 送给模型
02:05 - 02:30
两大阶段:数据准备(分片+索引)与回答(召回+重排+生成)
02:30 - 04:21
分片详解:按字数、段落、章节、页码等多种切分方式
04:21 - 05:16
向量概念:维度、坐标表示、可视化
05:16 - 06:45
Embedding 详解:文本转向量,语义相近则向量相近
06:45 - 08:08
Embedding 模型与 MTEB 排行榜
08:08 - 09:51
向量数据库:存储向量+原始文本,支持相似度查询
09:51 - 11:56
召回阶段:问题→向量→查数据库→Top 10 片段
11:56 - 13:16
向量相似度:余弦相似度、欧氏距离、点积三种方法
13:16 - 15:21
重排阶段:Cross-Encoder 精选 Top 3,类比面试筛选
15:21 - 16:00
生成阶段:片段+问题→大模型→最终答案
16:00 - 17:01
全流程总结回顾:串联所有环节,完整走一遍

❓ 复盘问题

1️⃣
RAG 的全称是什么?它的核心思想用一句话怎么概括?
2️⃣
为什么不直接把整个文档发给大模型?RAG 解决了哪三个问题?
3️⃣
什么是向量?维度是什么意思?RAG 中通常用多少维的向量?
4️⃣
Embedding 的目的是什么?为什么说"含义相近的文本,向量也相近"?
5️⃣
向量数据库为什么要同时存储向量和原始文本?
6️⃣
召回和重排有什么区别?为什么需要两个阶段?(提示:成本 vs 准确率)
7️⃣
三种向量相似度计算方法分别是什么?各自的判断标准是什么?
8️⃣
Cross-Encoder 模型用在哪个阶段?为什么它比向量相似度更准确?

✅ 行动清单

📖 术语表

术语英文解释
RAGRetrieval Augmented Generation检索增强生成,先检索再生成的 AI 问答方案
向量Vector / Embedding一组数字表示的有大小有方向的量
嵌入Embedding将文本转换为向量的过程
分片Chunking将文档切分为多个小片段
向量数据库Vector Database专门存储和查询向量的数据库
召回Retrieval从所有片段中粗筛出 Top K 相关片段
重排Reranking用更精确的模型从召回结果中精选
Cross-EncoderCross-Encoder用于重排的高准确率模型
余弦相似度Cosine Similarity通过夹角余弦值衡量向量相似度
欧氏距离Euclidean Distance两个向量之间的直线距离
点积Dot Product考虑方向和长度的向量运算
MTEBMassive Text Embedding BenchmarkEmbedding 模型评测排行榜
上下文窗口Context Window模型一次能处理的最大 Token 数