下面我从工程与原理两个层面,系统性地说明你提到的两个核心概念:
① 大语言模型为什么是"无状态"的
② Embedding 为什么是大语言模型的基石
这两个点实际上构成了现代 LLM 架构理解的第一性原理。
一、大语言模型是"无状态"的(Stateless)
1. 什么叫"无状态"
**无状态(Stateless)**指的是:
模型本身不会记住任何一次请求之外的信息
每一次推理(Inference)都是一次独立计算
换句话说:
-
模型 不会保存
- 上一次你问了什么
- 上一次它答了什么
- 你的身份、偏好、上下文
-
模型 只处理你这一次给它的输入
模型只做一件事:
f(输入Token序列) → 输出Token概率分布
2. 为什么大语言模型必须是无状态的
这是一个设计必然性,不是缺陷。
(1)数学与工程原因
Transformer 模型本质是:
text
Output = Transformer(InputTokens)
-
不存在:
- 内部可持久化内存
- 会话级变量
-
所有"记忆"都必须显式存在于输入中
否则会导致:
- 推理不可复现
- 并发请求相互污染
- 分布式部署失效
(2)可扩展性(Scalability)
如果模型是有状态的:
- 一个用户一个模型状态
- GPU 无法共享
- 云端无法水平扩展
而无状态意味着:
- 任意请求 → 任意 GPU
- 天然支持负载均衡
- 才能支撑 ChatGPT 这种规模
3. 那"对话记忆"是怎么实现的?
关键结论:
记忆不在模型里,而在模型外
典型实现方式
text
历史对话(文本)
↓
拼接到 Prompt
↓
一次性送入模型
例如:
text
System Prompt
User: 问题1
Assistant: 回答1
User: 问题2
模型看到的只是一个超长文本序列。
4. 工程总结
| 层级 | 是否有状态 |
|---|---|
| LLM 模型本身 | ❌ 无状态 |
| Prompt 构造层 | ✅ 有状态 |
| 会话系统 / Memory | ✅ 有状态 |
| RAG / 向量库 | ✅ 有状态 |
二、Embedding 是大语言模型的基石
如果说:
Transformer 是发动机
Embedding 是地基
那一点都不夸张。
1. 什么是 Embedding(本质定义)
Embedding = 把"符号"映射为"向量"
text
Token / 单词 / 句子 / 文档
↓
N 维向量(如 768 / 1024 / 1536 维)
这些向量存在于一个连续的高维语义空间中。
2. 为什么 Embedding 是"基石"
(1)模型根本"看不懂文字"
神经网络只认识:
- 数字
- 向量
- 矩阵
所以:
text
"数据库" ≠ 有意义
[0.12, -0.87, 0.44, ...] = 有意义
Embedding 是语言 → 数学的唯一桥梁。
(2)语义相似性来自 Embedding 空间
在 Embedding 空间中:
- 意义相近 → 向量距离近
- 意义相反 → 向量方向相反
- 主题相同 → 向量聚集
例如:
text
"MySQL 是数据库"
"PostgreSQL 是数据库"
它们的向量 余弦相似度极高。
3. Transformer 的第一步就是 Embedding
完整链路:
text
文本
↓ Tokenizer
Token ID
↓ Embedding Layer
向量序列
↓ Self-Attention
上下文建模
↓ FFN
↓
输出概率
没有 Embedding,就没有 Transformer
4. Embedding 不只是"输入",而是"统一语义空间"
Embedding 的真正价值在于:
-
统一
- 文本
- 代码
- 图像(CLIP)
- 语音(Whisper)
-
统一后才能 Attention
这也是为什么现在:
- Text Embedding
- Code Embedding
- Multi-modal Embedding
本质是一回事。
三、无状态 + Embedding 的结合:RAG 的核心原理
你熟悉的 RAG,本质上正是:
text
无状态模型
+ 外部 Embedding 记忆
RAG 工作流
text
用户问题
↓
Embedding
↓
向量检索(历史 / 文档 / 知识)
↓
拼接 Prompt
↓
LLM 推理(仍然无状态)
Embedding = 长期记忆索引
Prompt = 短期工作记忆
四、一句话总结(工程级结论)
大语言模型之所以无状态,是为了规模化与确定性
Embedding 之所以是基石,是因为一切语义必须先变成向量
或者更直白地说:
LLM 是一个"无记忆的超级大脑",
Embedding 是它用来理解世界的"坐标系"。