大模型概念地图:所有术语分别站在哪一层
这是《大模型概念地图》专栏的第 1 篇。全系列不堆代码,只讲清一件事:每个术语是什么、干什么活、和谁有关系。
本系列地图
| 模块 | 讲什么 | 篇目 |
|---|---|---|
| M0 总纲 | 分层的规则,全局地图 | 01(本篇) · 02 |
| M1 模型本体 | 文字怎么变成数字,模型长什么样 | 03–07 |
| M2 训练链路 | 知识和对齐是怎么被塞进权重的 | 08–12 |
| M3 推理侧 | 每一次请求,你到底在调什么 | 13–16 |
| M4 能力增强 | RAG、微调、向量检索怎么补短板 | 17–23 |
| M5 Agent | 从"会回答"到"会干活" | 24–31 |
| M6 多模态 | 图像、语音链路 | 32–34 |
| M7 工程与评估 | 部署、评测、安全 | 35–38 |
一、先看一个熟悉的混乱现场
技术群里经常出现这样的对话:
- A:我们知识库问答效果不行,是该上 RAG 还是该微调?
- B:先调 Prompt 吧,加个思维链。
- C:都试试呗,实在不行换个 70B 的模型。
- D:那 LoRA 呢?我看 LoRA 挺省钱的。
四个人给了四个方案,讨论了三小时,谁也没说服谁。
问题不在于他们水平不够。问题在于——这四个人说的东西,根本不在同一层楼上。
- RAG 是"外挂一份资料",属于增强层;
- 微调和 LoRA 是"重新塑造模型权重",属于训练层;
- Prompt 和思维链是"每次请求临时说的话",属于调用层;
- 换个大模型是"把整栋楼拆了重建",属于结构层。
拿"外挂资料"和"重新训练权重"比谁更好,就像拿"给房子多加一个储物间"和"把承重墙换掉"比谁更好——它们解决的从来不是同一个问题,因此也没有可比性。
这一篇要做的事只有一件:把大模型的所有术语,按它们真正所在的楼层摆好。摆好之后你会发现,前面那种争论会自动消失,因为问题会变成"我这一层缺什么",而不是"哪个技术更强"。
二、为什么需要一张地图
先看清楚"没有地图"会得什么病。三个典型症状:
症状一:把手段当成了同类
RAG 和微调之争是最典型的。两者的输入、成本、生效方式完全不同:
| RAG | 微调 / LoRA | |
|---|---|---|
| 改的是什么 | 送进模型的输入 | 模型内部的权重 |
| 知识放在哪 | 外部的向量库,随时可改 | 参数里,改一次要重训 |
| 生效时间 | 立刻(重新检索即可) | 几小时到几天 |
| 擅长 | 事实、时效、可溯源 | 格式、语气、领域套路 |
| 不擅长 | 格式约束、复杂推理风格 | 实时信息、精确事实 |
正确的问法不是"哪个好",而是"我要补的是知识,还是行为"。补知识走 RAG,补行为走微调。这个问题在看完分层图之后会变得显而易见。
症状二:把建筑当成了装修
"我们的模型回答不好,是不是 Prompt 写得不行?"
如果模型压根没见过这个领域的知识,Prompt 写得再花也没用——装修救不了没有地基的房子。反过来,模型什么都知道,只是输出格式乱七八糟,那你花大价钱重训一遍也是浪费——换个家具就能解决的事,不用砸墙。
判断标准很简单:问题出在哪一层,就在哪一层解决。
症状三:混淆"训练时"和"运行时"
"能不能通过 Prompt 让模型学会我们公司的内部知识?"
不能。Prompt 是在推理时拼进去的临时上下文,模型权重没有任何变化,对话结束它就"忘"了。知识要真正固化,必须在训练时进入权重。
这两个概念——训练时(一次性、固化进权重)和推理时(每次调用、外挂)——是理解大模型术语的第二把钥匙。它会单独在本文第五节展开。
三、一个类比:大模型是一栋楼
把大模型系统想象成一栋七层楼(含地基)。
L6 智能体层 Agent / Function Calling / ReAct / 记忆 / MCP
L5 增强层 RAG / 向量检索 / Rerank / GraphRAG / 微调落地
L4 调用层 Prompt / Few-shot / CoT / 温度 / Top-p
L3 训练层 预训练 / SFT / RLHF / DPO / LoRA / Scaling Law
L2 结构层 Transformer / 注意力 / 参数量 / 上下文窗口
L1 表示层 Token / 分词 / 词表 / Embedding
L0 底座 算力 / 数据 / 成本
这栋楼有四条性质,记住了它们,后面 37 篇都能自己推导:
第一,同一层的东西是可以互相替换的。
L2 里的注意力机制、L5 里的 Rerank 模型,同层技术是竞品关系,比的是性价比。所以"选型"这个词,只发生在同一层内部。
第二,不同层之间是依赖关系,不是竞争关系。
没有 L1 的表征,L2 无从计算;没有 L3 的训练,L4 没有可调的东西。跨层比较是没有意义的。
第三,上层救不了下层。
这是最重要的一条。模型的注意力机制决定了它处理长文本的能力上限,你在 L5 堆多少 RAG 技巧都绕不过这个物理限制。反过来,下层的进步会让上层一大片技巧失去意义——上下文窗口从 4K 涨到 200K,就干掉了一大批"怎么把文档塞进去"的工程技巧。
第四,越往下越难改,越往上越快见效。
改 Prompt 是分钟级,调 RAG 参数是小时级,做微调是天级,改网络结构是论文级,重训底座是千万美元级。所以工程上永远优先在最低成本的那一层解决问题——这是"先调 Prompt"这条经验的真正来由,它不是玄学,是成本排序。
四、分层地图:每一层到底在干什么
下面这张表是本篇的核心。它回答"这个术语站在哪一层",也顺便回答"它和谁有关"。
| 层 | 回答的问题 | 核心术语 | 对应篇目 |
|---|---|---|---|
| L0 底座 | 靠什么跑得起来、烧多少钱 | 算力(GPU / 显存 / HBM)、训练数据、推理成本、能耗 | 不单独成篇,但贯穿全系列 |
| L1 表示层 | 文字怎么变成机器能算的数字 | Token、分词、词表、BPE / WordPiece / SentencePiece、Embedding、向量、维度 | 03、04 |
| L2 结构层 | 模型长什么样、容量有多大 | Transformer、注意力机制、多头注意力、位置编码、层数、参数量、上下文窗口、开源 / 闭源 | 05、06、07 |
| L3 训练层 | 知识和对齐是怎么进到权重里的 | 预训练、指令微调 SFT、对齐、RLHF、DPO、LoRA、Scaling Law、涌现能力、幻觉(成因) | 08–12 |
| L4 调用层 | 每一次请求到底在调什么 | Prompt、系统提示、Few-shot、上下文学习、思维链 CoT、温度、Top-p、Top-k | 13–16 |
| L5 增强层 | 模型先天短板怎么补 | RAG、向量数据库、相似度检索、Chunk 分块、Rerank 重排、混合检索、Query 改写、GraphRAG、微调 / LoRA(落地视角) | 17–23 |
| L6 智能体层 | 从"会回答"到"会干活" | Agent、Function Calling / Tool Use、ReAct、短期与长期记忆、规划与任务分解、多智能体、MCP 协议 | 24–31 |
两个需要单独说明的地方
第一,"微调"同时出现在 L3 和 L5。
这不是我写错了,而是微调本身横跨两层。作为技术原理,它属于 L3(在训练层改变权重);作为工程手段,它属于 L5(是"补短板"的几种选项之一,和 RAG 并列)。列在 M4 能力增强里讲,是因为多数人是带着"效果不够怎么办"的问题来找它的。
凡是横跨两层的术语,都是最容易吵起来的术语。 微调、幻觉、Embedding 都属于这一类。遇到争论时,先问一句"你说的是哪一层的它",往往问题就散了。
第二,多模态、评估、安全不在这条纵轴上。
它们不是楼层,而是穿楼而过的管道——横切所有层:
- 多模态:把 L1 的"文字变数字"扩展成"图像、语音也变数字",之后一路走的是同一条 L2→L3 通道;
- 评估:每一层都要评。L3 评训练效果,L4 评 Prompt 好坏,L5 评检索质量;
- 安全 / Prompt 注入:L4 的输入注入会打穿到 L6 的工具调用,是典型的跨层攻击。
这也是为什么 M6、M7 两个模块读起来会比前五个模块"散"——本来它们就不是一条线,而是一张网。
五、第二把钥匙:训练时 vs 推理时
分完楼层,再引入一条横向的轴。同一个术语,先问它"是什么时候生效的":
| 层 | 训练时(一次性固化) | 推理时(每次调用) |
|---|---|---|
| L1 表示层 | 词表、Embedding 矩阵 | 输入文本被切分成 Token |
| L2 结构层 | 网络结构、参数量 | 上下文窗口在这里形成约束 |
| L3 训练层 | 预训练知识、对齐偏好、LoRA 权重 | —— |
| L4 调用层 | —— | Prompt、Few-shot、CoT、温度、Top-p |
| L5 增强层 | 微调 / LoRA(可替换,可热插拔) | RAG 检索、重排 |
| L6 智能体层 | —— | 规划、记忆读写、工具调用 |
这张表能一次性回答很多经典问题:
- "为什么 Prompt 学不会新知识?" —— 因为 Prompt 在推理时生效,L3 的权重毫发无伤。
- "为什么 RAG 治不了输出格式乱?" —— 因为格式是行为模式,固化在 L3;RAG 只往 L4 的输入里塞文本。
- "为什么微调解决不了实时数据?" —— 因为微调产物是静态权重,训练完那一刻知识就冻结了,而 RAG 每次都能取最新的。
- "为什么上下文窗口开大之后,检索好像还能用?" —— 因为长上下文是 L2 的容量提升,RAG 是 L5 的检索策略,两者在成本和精度上各有权衡,是互补而非替代。
一句话记住:训练时决定"模型会什么",推理时决定"这次要它做什么"。
六、最容易混淆的六组概念
按楼层摆好之后,这些"近邻概念"的区别会一目了然。
| 对比 | 各在哪一层 | 一句话分辨 |
|---|---|---|
| RAG vs 微调 | L5 vs L3 | 补知识走 RAG,补行为走微调 |
| Prompt 工程 vs 微调 | L4 vs L3 | 临时说 vs 永久改;一个是说明书,一个是改造人 |
| Agent vs Chatbot | L6 vs L4 | Chatbot 只产出文字,Agent 会调用工具并改变外部世界 |
| Embedding 模型 vs 生成模型 | L1 vs L2/L3 | 前者输出一串数字(向量),后者输出文字 |
| 上下文窗口 vs 记忆机制 | L2 vs L6 | 窗口是模型天生能看多长;记忆是工程上帮它记住多久 |
| 幻觉 vs 知识过期 | L3(成因) vs L5(可缓解) | 幻觉是"不知道还硬编",知识过期是"记的是旧版本" |
最后一行值得多说一句。这两个问题经常被当成一个,但处置方式完全不同:
- 知识过期:模型确实学过,只是版本旧了 —— RAG 挂上最新文档就能治;
- 幻觉:模型从来没学过,或者在训练数据里就是模糊的 —— 加检索能缓解,但根子在 L3 的训练数据和对齐方式上。
分不清这两个,就会出现"上了 RAG 还是有幻觉"的困惑。
七、四个常见误区
误区一:把术语数量当难度。
大模型术语看着多,但楼层只有七层。每一层内部的术语是同一件事的不同实现。真正需要理解的不是 100 个词,而是 7 层的职责边界。
误区二:以为越靠上的层越高级。
Agent 不是"比 Prompt 高级",它只是站在上面。一个 Prompt 写得烂的 Agent,照样烂。上层能做的事多,前提是下层撑得住。
误区三:觉得新术语出现就意味着旧术语被淘汰。
新技术通常是在某一层里做加法。长上下文出现了,RAG 没死,因为成本结构没变;更聪明的模型出现了,Prompt 工程没死,因为需求永远比模型能力跑得快半步。判断一个技术会不会被淘汰,看它占的是哪一层的位置,而不是看它新不新。
误区四:跳过 L1、L2 直接学 Prompt。
这是最常见的路径,也最容易在中期撞墙。因为很多"玄学问题"——为什么模型数不清字、为什么中文比英文贵、为什么长文档中间的内容会被忽略——答案全在 L1 和 L2。后面两篇会专门补上。
八、用一段代码证明"层"是真的
前面说了很多"层",它到底只是一个比喻,还是真实存在的东西?
下面这段代码会打开一个模型,然后你会发现:每一层的参数,清清楚楚地挂在不同的属性上。层不是比喻,是代码里的真实结构。
# pip install transformers torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "Qwen/Qwen2.5-0.5B-Instruct" # 小模型即可,只为演示结构
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
# ── L1 表示层:文字变成数字 ──────────────────────────
text = "大模型的术语站在哪一层?"
ids = tok(text)["input_ids"]
print("L1|Token 数 =", len(ids), "| 词表大小 =", tok.vocab_size)
print("L1|Token 序列 =", tok.convert_ids_to_tokens(ids))
print("L1|Embedding 维度 =", model.get_input_embeddings().weight.shape) # (词表, 维度)
# ── L2 结构层:骨架有多大 ────────────────────────────
c = model.config
print("L2|层数 =", c.num_hidden_layers, "| 注意力头数 =", c.num_attention_heads)
print("L2|隐藏维度 =", c.hidden_size, "| 上下文窗口 =", c.max_position_embeddings)
# ── L3 训练层:权重有多少(知识就固化在这里)──────────
print("L3|参数量 ≈", round(model.num_parameters() / 1e6, 1), "M")
# ── L4 调用层:同一个模型,换个参数就是另一个人 ────────
for t in (0.1, 1.2):
out = model.generate(
**tok(text, return_tensors="pt"),
max_new_tokens=20,
do_sample=True,
temperature=t, # 只改这一个数,行为立刻不同
)
print(f"L4|温度={t} →", tok.decode(out[0], skip_special_tokens=True))
运行后会看到类似这样的输出(以下为 Qwen2.5-0.5B-Instruct 的示意值,具体数字随模型版本和分词器变化):
L1|Token 数 = 11 | 词表大小 = 151643
L1|Token 序列 = ['大', '模型', '的', '术', '语', '站', '在', '哪', '一', '层', '?']
L1|Embedding 维度 = torch.Size([151643, 896])
L2|层数 = 24 | 注意力头数 = 14
L2|隐藏维度 = 896 | 上下文窗口 = 32768
L3|参数量 ≈ 494.0 M
L4|温度=0.1 → (更保守、更确定的一段续写)
L4|温度=1.2 → (更发散、更随机的一段续写)
第一次运行会自动下载约 1GB 的模型文件;跑不通可以把
model_id换成任意一个 HuggingFace 上的小模型,代码结构完全一样——这几行代码不是绑定某个模型的,它展示的是所有 Transformer 模型共有的分层结构。
几点值得注意:
vocab_size和hidden_size是两个不同层的东西。前者是 L1 的词表(有多少种 Token),后者是 L2 的隐藏维度(每个 Token 被表示成多长的向量)。很多初学者会把这两个数混起来。- 参数量 494M 这个数字,主要在 L2(结构)+ L1(Embedding)里。Embedding 矩阵本身就是 151643 × 896 ≈ 1.36 亿参数,占了近三成。所以"参数量"不等于"模型的推理能力",它包含大量表示层开销。
- 温度和层数没有任何关系。
temperature只是一个采样参数,改它不会动权重分毫——它是纯 L4 的东西。这就是"推理时"和"训练时"的物理隔离。
这就是分层的意义:当一个技术出问题时,你可以用代码精确地指出它在哪一行。
九、回到地图
现在把本篇的位置点亮:
L6 智能体层 M5 Agent / Function Calling / ReAct / 记忆 / MCP
L5 增强层 M4 RAG / 向量检索 / Rerank / GraphRAG / 微调
L4 调用层 M3 Prompt / Few-shot / CoT / 温度 / Top-p
L3 训练层 M2 预训练 / SFT / RLHF / DPO / LoRA / Scaling Law
L2 结构层 M1 Transformer / 注意力 / 参数量 / 上下文窗口
L1 表示层 M1 Token / 分词 / 词表 / Embedding
L0 底座 算力 / 数据 / 成本
★ 本篇点亮的是整张图的框架本身——七层的划分规则。后面每一篇,都会回到这张图上,只点亮其中一格。比如第 03 篇点亮 L1 的 Token,第 24 篇点亮 L6 的 Agent。
横切面:多模态(M6)· 评估与安全(M7)
这一篇没有讲任何一个具体技术,只做了一件事:给每个术语分配了楼层,并给出三条判断规则——
- 先问"这是哪一层的术语"(同层才可比,跨层不可比);
- 再问"它是训练时生效还是推理时生效"(决定它能改什么、不能改什么);
- 最后问"在哪一层解决成本最低"(决定了工程上的优先级)。
下一篇《概念之间的因果链:从一个 Token 到一次 Agent 调用》,会把这篇的静态地图变成动态流程:一份用户输入,是如何一层一层往上穿过这七层,最后变成一个真实动作的。看完那一篇,整张地图就活了。
附:本篇速查表
| 你想解决的问题 | 该去哪个模块 | 典型术语 |
|---|---|---|
| 搞懂文字怎么变成数字 | M1 模型本体 | Token、Embedding |
| 搞懂模型内部长什么样 | M1 模型本体 | Transformer、注意力、上下文窗口 |
| 搞懂知识是怎么进模型的 | M2 训练链路 | 预训练、SFT、对齐 |
| 搞懂模型为什么会胡说 | M2 训练链路 | 幻觉、Scaling Law |
| 让模型这次答得更好 | M3 推理侧 | Prompt、CoT、采样参数 |
| 模型知识不够 / 格式不对 | M4 能力增强 | RAG、微调、LoRA |
| 让模型自己动手干活 | M5 Agent | Function Calling、ReAct、MCP |
| 处理图片和语音 | M6 多模态 | VLM、ASR、TTS |
| 上线、评测、防注入 | M7 工程与评估 | 量化、KV Cache、Prompt 注入 |
《大模型概念地图》专栏 · 第 1 篇