RAG 的基本流程与局限
一句话速记
RAG = Retrieval-Augmented Generation:在生成前从外置语料里检索与 query 相关的片段,拼进提示或以工具结果再让 LLM 作答,降低「胡编」与「训练截止后知识」问题,代价是检索质量与管线复杂度**。**
离线索引与在线查询(常考)
离线(可异步、批处理)
- 原始文档入池(权限、多格式解析)
- 分块(见 Chunking 有哪些常用策略)
- 向量化(或同时建稀疏索引,见下)
- 写入向量库/搜索引擎 + 元数据(来源、时间、权限标签)
在线(一次用户问题)
- Query 改写/扩展(可选:HyDE、多 query、同义词)
- 检索 top-k(稠密 / 稀疏 / 混合)
- Rerank(可选,见专篇)
- 拼上下文:截断、去重、引用编号
- LLM 生成;可加「仅依据上下文作答 / 无则说不知道」的约束
稠密、稀疏、混合
| 类型 | 做法 | 优点 | 缺点 |
|---|---|---|---|
| 稠密 | 双塔 embedding,余弦/内积近邻 | 语义近义、跨表述 | 专有名词、ID 弱;依赖模型 |
| 稀疏 | BM25、倒排 关键词 | 专名、字面匹配强;可解释 | 语义同义难 |
| 混合 | 两路分 RRF、加权、级联 等融合 | 工程上最常用折中 | 调参、延迟增加 |
Hybrid / 两阶段:先稀疏或小集合再稠密等,视规模与延迟定。
与「长上下文=不需要 RAG」的辨析
- 窗口再长,也受 注意力分散、成本、多文档权限 限制;全塞不总是最优。
- RAG 本质是 显式把「可能相关」子集先筛出来,可治理来源与审计。
主要局限(可展开讲)
- 切块跨边界丢语义、表格/代码 破坏
- 检索与真实需求分布偏移(train-test skew on corpus)
- 时效与多版本文档冲突
- 安全:检索到应保密的段落、提示注入经文档通道
- 评估:生成对不说明检索对;要分阶段评(见评估篇)
常问延伸
- GraphRAG / 知识图谱 + RAG:在「实体关系」上走多跳或子图再生成,不替代基础 RAG 流程,是增强一种索引形态。
- Agentic RAG:多步检索、自评是否够、再查;与 Agent 总抽象 中的「多步+工具」可对照。
我的记法
TODO
状态
- 已背速记
- 能讲通俗版
- 能答追问
参考资料
- Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP(经典起点之一)
- 各云厂商/开源的 RAG 架构 说明文档