c09 - RAG 架构
9. RAG 架构的工程解构与非参数化记忆
LLM 是有逻辑推理能力的 CPU,RAG 是外挂的硬盘与实时内存。RAG 的本质是建立**非参数化记忆(Non-parametric Memory)**的调用管线——知识存在检索库中,而非模型权重里。这带来的最大优势是:知识可以实时更新,无需重新训练模型。
9.1 为什么长上下文不能替代 RAG
百万 token 上下文虽然技术上可行,但有两个硬伤:
成本:Prefill 阶段算力与序列长度呈 O(N²),百万 token 的单次 Prefill 成本极高。RAG 每次只注入最相关的 3–10 个片段,成本降低两个数量级。
“中间迷失”(Lost in the Middle):研究表明 LLM 对上下文头部和尾部的利用率显著高于中间部分。将一本书完整塞入上下文,模型会”忘记”中间章节的关键细节。RAG 将精准命中的片段放在上下文前端,规避了这一问题。
结论:对于知识密集型产品,RAG 是更可控、更廉价的解法。长上下文是 RAG 的补充,而非替代。
9.2 分块策略:RAG 体验的隐形决定因素
分块(Chunking)决定每次检索的信息粒度,是 RAG 系统最容易被忽视、影响最大的设计决策。
固定大小分块:按 token 数切分(如每块 512 tokens),实现简单,但可能将逻辑完整的概念截断。
语义分块:按段落、章节或语义边界切分。答案连贯性更好,但需要额外的分割逻辑。
层级分块(Hierarchical Chunking):同一文档建立两层索引——小 chunk(128 tokens)用于精确检索,大 chunk(包含周边上下文,512 tokens)用于生成。在需要同时保证召回精度和答案完整性时效果最佳。
PM 判断标准:chunk 太小 → 答案碎片化,缺乏上下文;chunk 太大 → 噪声多,无关内容稀释了相关信息,检索精度下降。这是产品体验决策,不是纯工程参数。
9.3 检索范式演进:从字面到语义
稀疏检索(BM25 / 关键词匹配):基于词频统计的字面匹配。
- 优势:专有名词、产品型号、法律条文、人名等精确词语召回率高;速度极快;可解释性强
- 劣势:无法理解语义同义(“购买”和”买入”视为不同词)
密集检索(Embedding 向量检索):将 query 和文档映射到同一高维向量空间,语义相近即可命中。
- 优势:理解语义变体、模糊查询、跨语言检索
- 劣势:低频词和专有名词的 embedding 质量差(与 Tokenization 直接相关);黑盒、不可解释
混合检索(Hybrid):BM25 + Embedding 结果融合(常用 RRF 算法加权合并)。当前最佳实践,尤其在用户输入多样化的场景——精确词语用 BM25 保底,语义泛化用 Embedding 补全。
9.4 Reranker:RAG 产品的质量天花板
初步检索召回 Top-20 候选片段(高召回率),Reranker 对每个 (query, chunk) 对计算精确相关性分数,重新排序,选出 Top-3–5 送入 LLM 生成。
为什么 Reranker 是生死线:初始检索速度优先、精度次之;Reranker 精度优先、速度次之。没有 Reranker 的 RAG 系统,相当于把初步检索的噪声直接喂给 LLM,输出质量不稳定。许多团队低估了这一步的重要性,是 RAG 产品体验差的主要原因之一。
常用 Reranker:BGE-reranker、Cohere Rerank、Jina Reranker。
9.5 高阶 RAG 技术
HyDE(Hypothetical Document Embeddings):不直接用 query 检索,而是先让 LLM 生成一个”假设性答案”,用这个答案的 embedding 去检索。适合用户 query 表达不规范、过短的场景(假设性答案更接近文档风格)。
多查询扩展(Multi-Query):自动将用户 query 改写为多个不同角度的查询(如从不同视角提问),扩大召回范围,合并结果后去重排序。
Self-RAG:模型自主判断是否需要检索、检索结果是否可信、是否需要再次检索。将检索决策内化为模型行为,适合复杂的多跳推理问题。
9.6 评估体系:检索与生成独立评估
| 层 | 指标 | 含义 |
|---|---|---|
| 检索层 | Hit Rate @ K | Top-K 结果中包含正确文档的比例 |
| 检索层 | MRR(Mean Reciprocal Rank) | 正确文档排名的倒数均值,越高越好 |
| 生成层 | Faithfulness | 答案内容是否忠于检索到的文档(非模型自身知识) |
| 生成层 | Answer Relevancy | 答案是否回答了用户的问题 |
核心诊断逻辑:
- 检索好、生成差 → 换 LLM 或优化 Prompt
- 检索差、生成好 → 幻觉风险极高(LLM 在”编”答案)
- 检索好、生成也好 → 优化 Reranker 和 chunk 策略提升上限
相关概念卡:RAG 检索增强生成、Embedding 向量嵌入、Tokenization 模块二延伸:m203 Embedding 选型与文档解析 | m204 Chunking 策略与 Agentic RAG | m205 RAGAS 评估体系 上一章:c08 解码策略 下一章:c10 Agent 技术栈