RAG 的端到端流程可以拆成 三阶段:检索 → 增强 → 生成,加上前置的知识库构建(Ingest),共四个环节。
整体流程
[知识库构建 Ingest] → [检索 Retrieval] → [增强 Augment] → [生成 Generation]
离线/异步 在线触发 拼装 Prompt LLM 输出
1. 知识库构建(Ingest,离线)
把原始资料(PDF、Word、网页、数据库记录…)转化为可被检索的向量索引。
典型步骤:
- 加载:从源头读取文档
- 切分(Chunking):把长文档切成语义连贯的片段
- 向量化(Embedding):用 Embedding 模型把每个 chunk 转成向量
- 入库:写入向量数据库(如 FAISS、Milvus、PGVector)
这是 RAG 体系里最重要的一环 —— 检索质量 90% 取决于知识库质量。
2. 检索(Retrieval,在线)
用户提问到来时:
- Query 向量化:把用户问题转成向量
- Semantic Search(语义检索):在向量库里做相似度匹配,取 Top-K 相关 chunks
- 可选:结合关键词检索(BM25)做混合检索,提升召回
注意:检索并非必须每次触发,模型自身的 Memory / 上下文也可以直接走生成阶段,RAG 是"按需查资料"。
3. 增强(Augment / Prepares the Prompt)
把检索到的 chunks 拼装进 Prompt,常见结构:
[System 指令:基于以下资料作答,未提及不要编造]
[Context:检索到的 chunks 原文]
[User Question:原始问题]
这一步是工程上最需要打磨的:拼装顺序、token 预算、引用格式、冲突信息处理,都会显著影响最终效果。
4. 生成(Generation)
LLM 基于增强后的 Prompt 输出回答(Reliable Answer)。理想状态下,回答应该:
- 有据可查:每个事实点能追溯到检索片段
- 不外推:知识库没说的不胡编
- 可引用:附上来源标注,便于用户验证
关键架构图(课程口径)
┌──────────────┐
Question → │ Retrieval │ ← Storage / Retrieved Chunks
│ (Optional) │
└──────┬───────┘
↓
Prompt ← Memory
↓
LLM
↓
Answer
细粒度视角:10 Pipeline(Day7/8 课程口径)
把上面的四阶段拆得更细,工业落地里通常分离线 6 Pipeline + 在线 4 Pipeline,共 10 步。
总览图
[ 离线 Offline ] 知识库构建(一次性 + 增量更新)
原始资料 → 数据采集 → 文档解析 → 数据清洗 → 文本分割 → 文本向量化 → 向量索引构建 → 向量库
[ 在线 Online ] 检索生成(每次用户提问触发)
用户 Query → Query 向量化 → 向量检索 → 上下文组装 → 生成 → 答案
↑(从离线向量库取 Top-K)
离线 6 Pipeline
| # | Pipeline | 作用 | 对应概念页 |
|---|---|---|---|
| 1 | 数据采集 | 圈定知识边界,按所有权三分法采集原始资料 | RAG数据采集 |
| 2 | 文档解析 | 把"非机器可读格式"转成"可编辑、可处理文本" | RAG文档解析 |
| 3 | 数据清洗 | 删除冗余、改写内容、标准化格式、过滤敏感信息 | RAG数据清洗与文本分割 |
| 4 | 文本分割 | 切成语义完整、长度适配模型的 chunk | RAG数据清洗与文本分割 |
| 5 | 文本向量化 | 用 embedding 模型把 chunk 映射成向量 | RAG向量化与索引 |
| 6 | 向量索引构建 | 建立可高效检索的索引结构 | RAG向量化与索引 |
在线 4 Pipeline
| # | Pipeline | 作用 | 对应概念页 |
|---|---|---|---|
| 1 | Query 向量化 | 把"人话"翻译成机器懂的数学坐标 | Query增强与改写 |
| 2 | 向量检索 | 多路召回 + 合并去重 + 重排序漏斗 | RAG检索-组装-生成 |
| 3 | 上下文组装 | 加载 Prompt 模板 + 整理 chunks + 注入关键指令 | RAG检索-组装-生成 |
| 4 | 生成 | 模型选型 + 参数设置 + 流式输出 + 后处理 | RAG检索-组装-生成 |
与四阶段视角的对照
| 四阶段(Day6) | 对应的 10 Pipeline |
|---|---|
| 知识库构建 Ingest | 离线 Pipeline 1-6 |
| 检索 Retrieval | 在线 Pipeline 1-2 |
| 增强 Augment | 在线 Pipeline 3 |
| 生成 Generation | 在线 Pipeline 4 |
核心理解
- 离线是一次性投入:决定知识库的边界、保真度和检索上限,质量越高线上 badcase 越少。
- 在线是每次都跑:决定单次响应的延迟和成本,重排序漏斗和模型路由是降本核心。
- 离线和在线靠"同一个 Embedding 模型"对齐:Query 必须用与离线分块完全一致的 embedding 模型向量化,否则距离不可比。
PM 怎么用 / 何时用
- 排查 badcase 时,用四阶段/10 Pipeline 定位问题出在哪一环(离线知识库质量 vs 在线检索/组装/生成),再分派对应方向。
- 做成本与延迟评估时,记住"离线一次性投入、在线每次都跑"——降本优先盯在线的重排序漏斗和模型路由。
- 评审技术方案时,确认离线分块与在线 Query 用同一个 Embedding 模型,否则检索距离不可比。
相关页面
→ RAG数据采集 → RAG文档解析 → RAG数据清洗与文本分割 → RAG向量化与索引 → Query增强与改写 → RAG检索-组装-生成 → AI工程集成 → AIPM课程 Day6 → AIPM课程 Day7 → AIPM课程 Day8