陶玉印的博客

企业数据治理、数据仓库、数据质量、AI应用实践与研究

0%

LLM + RAG 架构的演进过程

可以把 LLM + RAG 的演化理解为一条很清晰的路线:

LLM 内部参数知识 → 外挂知识 → 提升检索质量 → 检索可决策 → 多步检索与推理 → 图结构知识 → Agent 主导检索 → RAG / Long Context / Tool / Memory 融合

真正变化的并不只是“向量数据库越来越高级”,而是 LLM 与外部知识之间的控制权在发生变化:最早是程序固定检索,后来模型开始判断“要不要查、查什么、结果是否可信、是否需要继续查”,最终 RAG 逐渐成为 Agent 的一个底层能力。


一、为什么会出现 RAG

LLM 本身可以看成一种 Parametric Memory(参数化记忆):

1
2
3
4
5
6
7
训练数据
↓
Model Training
↓
模型参数
↓
LLM

知识被编码到了模型参数中。

这带来几个天然问题:

1
2
3
4
5
6
7
               LLM
│
┌──────────┼──────────┐
↓ ↓ ↓
知识滞后 私域未知 难以追溯
│ │ │
训练截止日期 企业数据 不知道答案来源

例如问:

公司 2026 年最新差旅制度中,住宿标准是多少?

即使模型推理能力很强,也不应该指望它“记住”企业内部刚更新的制度。

2020 年 Lewis 等人提出 RAG 时,核心思想就是把:

1
2
Parametric Memory
模型参数中的知识

与:

1
2
Non-parametric Memory
外部知识库

结合起来。原论文使用稠密向量索引作为外部记忆,让生成模型基于检索到的知识回答。(arXiv)

从工程视角,可以把它抽象成:

1
2
3
4
Answer = LLM(
Question,
Retrieve(Question, KnowledgeBase)
)

这就是后面所有 RAG 架构的起点。


二、阶段 0:纯 LLM —— Parametric Knowledge

RAG 出现以前,最简单的是:

1
2
3
4
5
6
7
User
↓
Prompt
↓
LLM
↓
Answer

如果知识不足,有两个主要办法:

1
2
Prompt Engineering
Fine-tuning

Fine-tuning 的问题是:

它适合改变模型行为,不适合频繁更新事实知识。

例如:

1
2
让模型学会:
"按照企业数据分析师的风格回答"

很适合 Fine-tuning。

但:

1
2
3
2026年8月最新销售政策是什么?
今天库存是多少?
最新产品价格是多少?

显然不应该靠重新训练模型解决。

因此早期形成了一个重要分工:

1
2
3
4
5
6
7
8
9
10
11
12
13
     LLM
│
Reasoning / Language
│
↓
模型负责推理

RAG
│
Knowledge
│
↓
外部系统负责事实

这是理解 RAG 的第一原则。


三、第一代:Naive RAG

大约 2022~2023 年企业最常见的 RAG,就是今天大家最熟悉的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
                 Offline
│
Document
↓
Parsing
↓
Chunking
↓
Embedding
↓
Vector DB


Online
│
User Question
↓
Embedding
↓
Vector Search
↓
Top K Chunks
↓
Prompt
↓
LLM
↓
Answer

例如企业知识库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
PDF
Word
Wiki
规章制度
产品文档
↓
Chunk
↓
Embedding
↓
Vector DB
↑
│
用户问题

这其实就是典型的:

Retrieve → Read → Generate

需要注意一点:工程界后来所谓的“Naive RAG”,并不完全等同于 2020 RAG 原论文中的端到端训练架构,而更多指这种 Vector DB + TopK + Prompt 的工程实现。

优点

最大的优点是简单。

知识更新:

1
2
3
旧文档删除
新文档 Embedding
Vector DB 更新

不需要重新训练 LLM。

同时非常适合:

  • 企业知识库;
  • 产品手册;
  • FAQ;
  • 制度查询;
  • 技术文档;
  • 客服知识库。

最大问题

问题逐渐从:

LLM 不知道答案。

变成:

Retriever 没找到正确答案。

例如:

1
2
3
4
5
6
7
8
9
Question
↓
Vector Search
↓
Top5
↓
只有 Top3 真正相关
↓
LLM

如果真正答案根本没进入 Context:

1
2
3
LLM 再聪明
≠
能够生成正确事实

因此 RAG 领域慢慢出现一句非常重要的工程判断:

RAG 的上限,很大程度取决于 Context Quality,而不仅仅取决于 LLM。

这促成了第二阶段。


四、第二代:Advanced RAG

Advanced RAG 的核心,不是换一个更强 LLM,而是优化:

1
Retrieval Pipeline

整体结构开始变成:

1
2
3
4
5
6
7
8
9
10
11
12
13
Question
↓
Query Processing
↓
Hybrid Retrieval
↓
Candidate Documents
↓
Reranking
↓
Context Filtering
↓
LLM

也就是:

1
2
3
4
5
6
7
 Pre-Retrieval
│
↓
Retrieval
│
↓
Post-Retrieval

1. Pre-Retrieval

首先优化问题。

例如用户问:

去年华东地区耗材产品利润为什么下降?

直接 embedding 整句话效果可能并不好。

系统可以先:

1
2
3
4
5
6
7
8
9
10
11
12
13
Query Rewrite

去年
↓
2025

华东地区
↓
上海、江苏、浙江……

利润下降
↓
收入、成本、销量、单价、毛利

甚至把一个问题拆成:

1
2
3
4
Query 1:2025 华东销售收入
Query 2:2025 华东销售成本
Query 3:2024 华东毛利率
Query 4:2025 华东毛利率

这开始出现 Multi-query / Query Decomposition。


五、Embedding 单路检索 → Hybrid Search

纯 Vector Search 有一个明显问题:

它擅长:

1
2
semantic similarity
语义相似

但未必擅长:

1
2
3
4
5
6
精确产品编码
合同编号
客户名称
特殊缩写
表名
字段名

例如:

1
ZWFSYS_DF_JE

这种字段,用 embedding 检索可能不如关键词搜索。

于是企业 RAG 常见架构变为:

1
2
3
4
5
6
7
8
9
10
11
12
           Query
│
┌────────┴────────┐
↓ ↓
BM25 Search Vector Search
Keyword Semantic
│ │
└────────┬────────┘
↓
Fusion
↓
Candidates

也就是:

Sparse Retrieval + Dense Retrieval

这也是现代企业 RAG 中非常常见的一层。


六、Retriever 后面增加 Reranker

原来:

1
2
3
Vector Search
↓
Top 5

后来:

1
2
3
4
5
6
7
Retriever
↓
Top 50
↓
Reranker
↓
Top 5

Retriever 的目标:

Recall

尽量别漏。

Reranker 的目标:

Precision

把真正相关的内容排到前面。

所以:

1
2
3
4
5
6
7
8
9
10
11
   Retriever
│
high recall
↓
50 docs
│
Reranker
│
high precision
↓
5 docs

这实际上是一个非常重要的架构演进。


七、第三代:Modular RAG

再往后,人们发现:

RAG 不应该是一个 Pipeline,而应该是很多可组合模块。

于是变成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
           Query
│
Query Router
/ | \
/ | \
Vector SQL Web
Search Query Search
│ │ │
└──────────┼────────┘
↓
Reranker
↓
Context Builder
↓
LLM

RAG 从:

1
固定流水线

演变成:

1
Composable Architecture

典型模块包括:

1
2
3
4
5
6
7
8
9
10
11
Query Rewriter
Query Router
Retriever
Hybrid Search
Reranker
Graph Search
SQL Retriever
Web Search
Context Compressor
Citation Generator
Evaluator

这一步非常关键。

因为企业知识绝不只是:

1
PDF → Vector DB

而是:

1
2
3
4
5
6
7
8
9
10
11
12
13
                 Enterprise Knowledge

┌─────────────┼──────────────┐
↓ ↓ ↓
Documents Data Warehouse API
↓ ↓ ↓
Vector DB SQL Tools

↓
Knowledge Graph

↓
Search Engine

所以真正成熟的 RAG,本质上已经变成了:

Enterprise Knowledge Access Layer

而不只是 Vector DB。


八、第四代:Adaptive RAG

接下来出现了一个非常重要的问题:

是不是每个问题都需要 RAG?

比如:

Python list 和 tuple 有什么区别?

LLM 本身完全可以回答。

却仍然执行:

1
2
3
4
Embedding
Vector Search
Reranking
LLM

不仅增加:

  • 延迟;
  • Token;
  • 计算成本;

还可能因为检索到错误资料反而降低答案质量。

Adaptive-RAG 的思想是让系统先判断问题复杂度,然后选择:

1
2
3
4
5
6
7
8
9
10
          Query
│
Classifier
┌────────┼────────┐
↓ ↓ ↓
No RAG Single RAG Multi-step RAG
│ │ │
└────────┴────────┘
↓
LLM

相关研究展示了按照问题复杂度,在“不检索、单次检索、多步检索”之间动态选择策略的思路。(arXiv)

这意味着:

Retrieval 从一个默认动作,开始变成一个决策。

这是 RAG 架构真正走向智能化的标志。


九、第五代:Self-RAG / Corrective RAG

Adaptive RAG 解决:

要不要检索?

下一个问题是:

检索到的内容可信吗?

传统 RAG:

1
2
3
4
5
Retrieve
↓
Documents
↓
LLM

隐含假设:

Retriever 给我的东西是对的。

但现实不是如此。

于是出现 Self-RAG、CRAG 之类的方法。

Self-RAG 的核心思想是让模型能够按需检索,并对检索内容和生成结果进行自我评估,而不是机械地始终塞入固定数量文档。(arXiv)

可以理解为:

1
2
3
4
5
6
7
8
9
10
11
12
13
Question
↓
Need Retrieval?
↓
Retrieve
↓
Relevant?
↓
Generate
↓
Supported?
↓
Answer

而 Corrective RAG 更进一步:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Retrieve
↓
Evaluate Retrieval
│
┌─┴────────────┐
↓ ↓
Good Bad
↓ ↓
Use Correct
│
Query Rewrite
│
New Retrieval
│
Web

CRAG 原始工作就是针对“Retriever 检索错了怎么办”这个问题,引入 Retrieval Evaluator,根据检索质量决定后续修正动作。(arXiv)

于是 RAG 出现一个非常重要的闭环:

1
2
3
4
5
6
7
Retrieve
↓
Evaluate
↓
Correct
↓
Retrieve

从:

Retrieval Pipeline

开始变成:

Retrieval Loop


十、第六代:GraphRAG

传统 Vector RAG 还有一个严重问题:

Chunk 把知识结构切碎了。

例如文档描述:

1
2
3
4
5
6
7
8
华东事业部
│
├── 上海区域
│ └── A经销商
│ └── 产品P
│
└── 江苏区域
└── B经销商

Chunk 后可能变成:

1
2
3
4
5
6
7
8
9
10
11
Chunk 001
上海区域销售情况……

Chunk 035
A经销商……

Chunk 107
产品P……

Chunk 246
华东事业部……

Vector Search 很容易找到:

1
局部相似内容

却不擅长回答:

华东事业部各区域经销商之间的结构是什么?

或者:

这些事件背后的主要参与者及相互关系是什么?

于是 GraphRAG 出现。

Microsoft 的 GraphRAG 工作将私有文本构造成知识图谱、社区和摘要,用来解决普通 chunk-based RAG 不擅长的“跨文档全局问题”。(微软)

大致结构:

1
2
3
4
5
6
7
8
9
10
11
Documents
↓
Entity Extraction
↓
Relationship Extraction
↓
Knowledge Graph
↓
Community Detection
↓
Community Summary

查询时:

1
2
3
4
5
6
7
8
9
10
           Question
│
┌────────┴────────┐
↓ ↓
Local Search Global Search
↓ ↓
Entity/Relation Community Summary
└────────┬────────┘
↓
LLM

GraphRAG 优势

特别适合:

  • 跨文档关系;
  • 组织网络;
  • 风险关系;
  • 上下游关系;
  • 因果链;
  • 实体关系;
  • 全局总结。

缺点

代价也明显:

1
2
3
4
5
6
7
8
9
10
11
文档
↓
实体抽取
↓
关系抽取
↓
图构建
↓
Community
↓
Summary

Indexing 成本远高于普通 Vector RAG。

所以:

GraphRAG 不是 Vector RAG 的替代品。

更合理的是:

1
2
3
Vector RAG
+
Graph RAG

十一、第七代:Agentic RAG

这一步我认为是整个演化里最关键的一次变化。

传统 RAG 是:

1
程序控制 Retrieval

Agentic RAG 是:

1
LLM / Agent 控制 Retrieval

传统:

1
2
3
4
5
User
↓
Retriever
↓
LLM

Agentic:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
              User
↓
Agent
│
Understand
│
Plan
│
┌────────────┼─────────────┐
↓ ↓ ↓
Search SQL API Tool
↓ ↓ ↓
└────────────┼─────────────┘
↓
Reason
↓
Need more data?
↓ ↓
Yes No
│ │
└── loop ───┘
↓
Answer

Agentic RAG 相关研究通常把它概括为把 planning、reflection、tool use、多 Agent 协作 引入 RAG,使检索策略从固定流程变成动态过程。(arXiv)

例如用户问:

为什么 7 月份华东区域毛利下降?

普通 RAG:

1
Search "华东 毛利下降"

Agentic RAG:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Agent
│
├─ 查询 6月、7月销售额
│
├─ 查询销量
│
├─ 查询售价
│
├─ 查询单位材料成本
│
├─ 查询客户结构变化
│
├─ 查询产品结构变化
│
└─ 对比分析

发现:

1
材料成本 ↑ 3%

再继续:

1
2
3
4
5
6
7
8
9
Agent
↓
查询材料采购价格
↓
发现某原材料上涨 12%
↓
查询该材料对应产品
↓
计算影响

最后才回答。

这其实已经不太像传统意义上的:

Retrieval Augmented Generation

而更像:

Retrieval Augmented Reasoning


十二、2024~2026:Long Context 开始挑战传统 RAG

随着 Context Window 越来越长,又出现一个新的问题:

我为什么一定要 Chunk + Retrieve?

假设一份文档只有:

1
80K tokens

模型 Context 支持:

1
200K / 1M tokens

理论上可以:

1
2
3
4
5
Document
↓
Entire Context
↓
LLM

避免:

1
2
3
Chunking
Embedding
Retrieval

因此开始出现:

1
2
3
RAG
VS
Long Context

相关实验显示了一个很有意思的结果:在资源充足的一些 benchmark 中,直接使用 Long Context 可以优于传统 RAG,而 RAG 的明显优势仍然在成本;因此产生了根据问题自动选择 RAG 或 Long Context 的混合方案。(arXiv)

但这并不意味着:

Long Context 会消灭 RAG。

另一些实验也表明,Context 变长并不意味着性能会持续线性提高,过长上下文可能带来注意力稀释和性能下降。(arXiv)

所以现在更合理的方向是:

1
2
3
4
5
6
7
8
9
10
11
12
13
            Query
↓
Router
┌────────────┼────────────┐
↓ ↓ ↓
LLM Long Context RAG
│ │
│ Hybrid Retrieval
│ │
│ Graph RAG
└────────────┬────────────┘
↓
Agent

十三、把整个演化压缩成一张图

可以把整个历史看成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Stage 0
Pure LLM
│
│ 模型知识过时 / 私域未知
↓
Stage 1
Naive RAG
Vector DB + TopK
│
│ 检索质量不好
↓
Stage 2
Advanced RAG
Hybrid + Reranker + Query Rewrite
│
│ Pipeline 固定
↓
Stage 3
Modular RAG
Router + Multiple Retriever
│
│ 所有问题都检索成本太高
↓
Stage 4
Adaptive RAG
决定是否检索 / 如何检索
│
│ Retriever 可能出错
↓
Stage 5
Self-RAG / CRAG
Retrieve → Evaluate → Correct
│
│ Chunk 缺乏关系和全局视角
↓
Stage 6
GraphRAG
Entity + Relation + Community
│
│ 流程仍需要智能规划
↓
Stage 7
Agentic RAG
Plan → Retrieve → Reason → Retrieve
│
↓
Stage 8
RAG + Long Context + Tools + Memory

从架构思想看,本质变化是:

1
2
3
4
5
6
7
8
9
Search
↓
Retrieval
↓
Knowledge Access
↓
Reasoning
↓
Decision Making

十四、各代架构优劣势对比

架构 优势 缺点 适合
Pure LLM 简单、低延迟 知识过期、私域未知 通用问答
Naive RAG 简单、便宜、易落地 检索质量一般 FAQ、文档 QA
Advanced RAG 准确率明显改善 Pipeline复杂 企业知识库
Hybrid RAG 语义+关键词兼顾 调参复杂 技术/业务文档
Modular RAG 多数据源 架构复杂 企业平台
Adaptive RAG 成本/效果平衡 Router可能误判 大规模系统
Self/Corrective RAG 鲁棒性高 多次LLM调用 高可靠问答
GraphRAG 关系/全局分析强 构建成本高 复杂知识网络
Agentic RAG 多步推理能力强 延迟、成本、可控性 Data Agent
Long Context + RAG 灵活、信息完整 Token成本较高 长文档分析

十五、RAG 最大的优势其实不是“降低幻觉”

经常看到这样的表述:

RAG = 解决幻觉。

这个理解过于简单。

我更倾向于认为 RAG 真正重要的价值有五个:

1
2
3
4
5
6
7
8
9
10
11
LLM
│
├── Parametric Knowledge
│
└── External Knowledge
│
├── Freshness
├── Private
├── Traceable
├── Controllable
└── Replaceable

特别是企业场景中,后三个非常重要。

1. Knowledge Freshness

知识可以独立更新。

2. Private Knowledge

可以接:

1
2
3
4
5
6
7
8
ERP
MES
CRM
SRM
DW
Wiki
SharePoint
PDF

3. Traceability

可以回答:

1
2
3
答案是什么?
+
依据是什么?

4. Knowledge Governance

可以控制:

1
2
3
4
哪些数据
谁可以访问
什么版本
什么时候生效

5. Model / Knowledge 解耦

这是企业架构尤其重要的一点:

1
2
3
4
5
6
7
8
        AI Application
│
Knowledge Layer
│
Model Router
┌──────────┼─────────┐
↓ ↓ ↓
GPT Claude Local LLM

换模型:

1
Knowledge Layer 不变

换知识:

1
LLM 不需要重新训练

十六、RAG 最大的弱点:它把问题从 Generation 转移到了 Retrieval

这是做企业 RAG 最容易忽略的问题。

很多项目:

1
2
3
4
换 Embedding Model
换 Vector DB
换 LLM
调 Prompt

最后准确率还是只有 70%。

原因往往不是模型,而是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Data Quality
↓
Parsing
↓
Chunking
↓
Metadata
↓
Retrieval
↓
Ranking
↓
Context
↓
LLM

任何一层错了都会传递。

所以实际可以写成:

1
2
3
4
5
6
RAG Quality
≈
Data Quality
× Retrieval Quality
× Context Quality
× LLM Reasoning Quality

这是乘法关系,不是加法关系。

例如:

1
Retriever Recall = 80%

意味着:

20% 的问题,LLM 根本拿不到正确资料。

后面再怎么 Prompt Engineering 都解决不了。


十七、一个容易误判的趋势:未来不是“RAG 会不会消失”

Long Context 越来越长以后,经常有人问:

RAG 是否会被 Long Context 淘汰?

我的判断是不会,但 Naive RAG 的重要性会降低。

未来更可能是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                    Agent
│
Router
│
┌───────────────┼────────────────┐
↓ ↓ ↓
Parametric Long Context Retrieval
Knowledge │
┌───────┼───────┐
↓ ↓ ↓
Vector Graph SQL
│ │ │
└───────┼───────┘
↓
Tools

模型自己决定:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
这个问题我知道
↓
直接回答

需要读完整合同
↓
Long Context

需要找几个相关文档
↓
Vector RAG

需要理解关系
↓
GraphRAG

需要最新经营数据
↓
SQL

需要最新实时信息
↓
API / Search

需要多步分析
↓
Agent Loop

这才是比较完整的下一代架构。


十八、放到企业 Data Agent 场景

企业 Data Agent:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
                    Data Agent
│
┌─────────┼─────────┐
↓ ↓ ↓
Planner Memory Policy
│
↓
Knowledge Router
│
┌─────────┼─────────┬──────────┐
↓ ↓ ↓ ↓
Vector RAG GraphRAG Semantic API
Layer
↓
Metric / SQL
↓
Hive

这时:

RAG 不再等于知识库。

它应该被理解为:

Agent 获取外部上下文的一种机制。

而:

1
2
3
4
5
6
7
Semantic Layer
SQL Engine
Knowledge Graph
Vector DB
Search Engine
API
MCP / Tools

本质上都属于:

External Knowledge / External Context

这也是我认为理解现代 RAG 最重要的一点。


总结

LLM + RAG 的演化,本质上经历了:

“给 LLM 找几段资料” → “给 LLM 建立可靠的知识访问层” → “让 LLM 自己决定如何获取知识” → “让 Agent 在推理过程中持续获取、验证和利用外部世界的信息”。

因此站在 2026 年看,企业真正值得建设的已经不是一个孤立的 RAG 知识库,而是:

1
2
3
4
5
6
7
8
9
10
11
12
             Enterprise AI Knowledge Layer
│
┌─────────────────┼─────────────────┐
↓ ↓ ↓
Document Knowledge Semantic Data Operational
│ │ Tools
Vector / Graph Metric / SQL API / MCP
└─────────────────┼─────────────────┘
↓
Agent Runtime
↓
LLM

这条路线与我们前面讨论的 “Hive 数据仓库 → 指标语义层 → Agent 统一语义接口”实际上正好可以接起来:RAG 负责非结构化知识,Semantic Layer 负责结构化事实,Agent 负责决定什么时候用哪一种。 这比简单建设一个“企业向量知识库”更接近最终形态。