Agent 开发不要求你手写 Transformer,但面试中经常会问:模型到底在做什么?为什么会有上下文限制?为什么会产生幻觉?这些问题最终又会影响 Agent 的哪些设计?
这一篇不深入数学,只解决这些面试中最常见的基础问题。
一句话总结
这一期不要求你会推导 Transformer,而是要求你能说清楚:LLM 如何理解上下文、为什么有长度限制、为什么会产生幻觉,以及为什么 Agent 必须用 RAG、Tool 和 Runtime 校验补足模型的能力边界。
一、这篇主要准备什么
这一期只需要掌握 5 个问题:
| # | 面试问题 | 需要掌握什么 |
|---|---|---|
| Q1 | Self-Attention 在做什么? | 理解模型如何关注上下文 |
| Q2 | 为什么 Transformer 适合做 LLM? | 理解并行计算和长距离依赖 |
| Q3 | Token 和 Context Window 是什么? | 理解模型输入输出的基本单位和限制 |
| Q4 | 为什么 LLM 会产生幻觉? | 理解模型不是数据库 |
| Q5 | temperature=0 是不是完全确定? | 理解模型输出不是普通程序函数 |
面试目标不是背公式,而是能够把这些概念和 Agent 工程联系起来。
二、Self-Attention 在做什么?
这是 Transformer 最核心的概念之一。 面试官如果问:
“Self-Attention 到底是在干什么?” 不要一上来背公式。 可以先用一句话回答: Self-Attention 的作用,是让每个 Token 根据当前上下文,决定应该重点关注哪些其他 Token,然后把这些信息组合起来。 例如:
小明把苹果放在桌子上,他很快就离开了。
“他”指的是谁?
模型需要理解:
他 → 小明
Attention 可以帮助模型建立这种 Token 之间的关系。
2.1 Q、K、V 是什么?
面试中经常会继续问:
“那 Q、K、V 分别是什么?”
可以简单理解成:
| 名称 | 面试解释 |
|---|---|
| Q Query | 我现在想找什么 |
| K Key | 我这里有什么信息可以匹配 |
| V Value | 匹配到以后真正拿走的信息 |
可以把它类比成搜索:
Query
↓
找到相关 Key
↓
取出对应 Value
核心过程可以记成:
Q × K → 相关程度
↓
Softmax
↓
权重
↓
加权 V
不需要在 L1 面试中手推矩阵。
只需要知道:
Attention 本质上是在计算“当前 Token 应该关注上下文中的哪些 Token”。
2.2 为什么叫 Self-Attention?
因为 Q、K、V 都来自同一份输入序列。 例如:
我 喜欢 吃 苹果
每个 Token 都可以根据其他 Token 来更新自己的表示。 所以叫:
Self-Attention。 如果面试官继续问 Cross-Attention,可以简单回答: Self-Attention 是序列内部的信息交互;Cross-Attention 通常用于让一个序列去关注另一个序列的信息。 L1 阶段知道这个区别即可。
三、为什么 Transformer 适合做 LLM?
这是第二个非常高频的问题。 可以直接回答:
Transformer 最大的优势之一是可以高度并行地处理序列,同时能够比较直接地建立远距离 Token 之间的关系。
3.1 Transformer 和 RNN 最大区别是什么?
简单记住这张表:
| RNN | Transformer | |
|---|---|---|
| 处理方式 | 按顺序处理 | 可以并行处理 |
| 长距离关系 | 需要逐步传递 | 可以直接建立关系 |
| GPU 利用 | 相对困难 | 非常适合并行计算 |
| 当前主流 LLM | ❌ | ✅ |
例如:
Token1 → Token2 → Token3 → Token4
RNN 更像:
1 → 2 → 3 → 4
必须一步一步传递。
Transformer 可以让不同位置之间直接进行 Attention:
1 ↔ 2 ↔ 3 ↔ 4
所以非常适合利用 GPU 大规模训练。
3.2 为什么 Transformer 可以训练得很快?
核心原因:
训练阶段可以同时计算大量 Token,而不是像传统 RNN 一样严格按照时间顺序计算。 这也是 Transformer 能够支撑大规模模型训练的重要原因之一。 面试时不要只回答: “因为 Transformer 有 Attention。”
更好的回答是:
Attention 提供了 Token 之间的信息交互,而 Transformer 的结构又非常适合 GPU 并行计算,这使它特别适合大规模训练。
四、Token 是什么?
这是 Agent 开发中非常基础的概念。 面试官可能问:
“LLM 是按照什么单位处理文本的?” 答案: Token。 Token 不是严格意义上的“字”,也不是严格意义上的“单词”。 例如:
Hello world
可能被切成:
Hello
world
中文则可能根据具体 tokenizer 被切成不同数量的 Token。 所以不要记:
一个中文 = 一个 Token。 正确的说法是: Token 是模型 tokenizer 切分出来的文本单位,不同模型的 tokenizer 不一样。
4.1 为什么 Agent 开发需要关心 Token?
因为 Token 通常直接影响:
- Context Window
- API 成本
- 推理速度
- Prompt 大小
- RAG 返回多少文档
- 对话历史保存多少内容
例如:
用户问题
+
System Prompt
+
历史对话
+
RAG 文档
+
Tool 返回结果
最终都会进入模型上下文。 所以 Agent 做到后面一定会遇到:
上下文太长怎么办? 这就是 Context Engineering 要解决的问题。
五、Context Window 是什么?
一句话:
Context Window 是模型一次能够处理的上下文 Token 容量上限。 例如一个模型支持:
128K context
可以简单理解为:
一次请求能够处理大约 128K Token 规模的上下文。
但是要注意: Context Window 大,不代表上下文越多越好。
例如一个 Agent:
System Prompt
+
最近 20 轮对话
+
100 个 RAG 文档
+
10 次 Tool 返回结果
即使没有超过 Context Window,也可能出现问题:
- 成本增加
- 延迟增加
- 无关信息干扰模型
- 重要信息被大量内容淹没
所以 Agent 开发中经常需要:
压缩
+
摘要
+
RAG
+
Rerank
+
历史裁剪
而不是简单地:
“模型支持 1M Token,那就全部塞进去。”
六、什么是 KV Cache?
这是 Agent / LLM 面试中经常出现的进阶问题。 如果面试官问:
“为什么 LLM 生成 Token 的时候需要 KV Cache?” 可以这样回答: 因为生成下一个 Token 时,之前 Token 的 Key 和 Value 已经计算过了,没有必要每次重新计算,所以可以缓存起来复用。
例如:
输入:
我 喜欢 吃
生成:
苹果
生成“苹果”时,不需要把:
我
喜欢
吃
对应的 K、V 全部重新计算。 可以直接复用之前的结果。
6.1 KV Cache 带来了什么?
简单记住两个结论:
好处
减少重复计算,提高生成速度。
代价
需要占用显存,而且上下文越长,缓存越大。
所以 Agent 如果不断累积历史对话:
第 1 轮
第 2 轮
第 3 轮
...
第 100 轮
上下文越来越长,KV Cache 也会越来越大。 这也是为什么 Agent 系统需要控制上下文。
七、为什么 LLM 会产生幻觉?
这是 Agent 面试非常重要的问题。
最简单的回答:
因为 LLM 的核心任务是根据上下文预测下一个 Token,而不是像数据库一样验证事实是否正确。
例如:
请介绍一个不存在的技术框架 XXX。
模型可能依然会生成:
XXX 是一个由某某公司推出的……
为什么?
因为从模型的角度:
生成一个看起来合理的答案,比直接说“我不知道”可能更符合它学习到的语言模式。
7.1 为什么模型越大也不能彻底解决幻觉?
模型变大通常可以提升能力、降低部分错误。
但是:
模型本质上仍然是在生成概率最高的 Token,而不是执行数据库查询。
所以:
模型变强
↓
幻觉可以减少
↓
但不能保证 0 幻觉
因此 Agent 系统不能简单认为:
“换一个更强的模型就解决了。”
八、Agent 如何降低幻觉?
面试官很可能继续问:
“那实际项目怎么降低幻觉?”
可以按照下面几个方向回答:
1. RAG
让模型回答问题之前先拿到相关资料。
用户问题
↓
检索
↓
相关资料
↓
LLM
↓
答案
适合解决:
模型不知道企业内部知识。
2. Tool
需要实时数据的时候,不让模型自己猜。
例如:
“现在汇率是多少?”
LLM
↓
汇率工具
↓
实时数据
↓
LLM
↓
回答
3. 输出校验
对于重要结果,不直接相信模型。
例如:
LLM
↓
JSON Schema
↓
业务校验
↓
通过 / 拒绝
金额、权限、订单状态等尤其应该由代码判断。
4. 引用 / Evidence
如果要求模型根据资料回答,可以要求:
答案
+
对应资料来源
然后由程序检查:
引用是否存在?
数字是否和资料一致?
8.1 一个非常重要的面试结论
可以记住:
Prompt 可以约束模型,但不能把模型变成确定性的业务规则引擎。
所以:
模型负责:
理解
推理
生成
决策建议
代码负责:
权限
金额
状态
事务
最终校验
这是 Agent 开发中非常重要的边界。
九、temperature=0 是不是完全确定?
这是一个很容易被面试官拿来追问的问题。
先记住:
temperature=0 主要意味着尽可能选择概率最高的 Token,并不等于整个推理系统一定完全可复现。
原因可能来自:
- 推理后端
- GPU kernel
- 浮点计算
- 并行计算
- batch
- 服务端实现
所以不要回答:
“temperature=0 就一定每次完全一样。”
更稳妥的回答:
temperature=0 可以减少采样带来的随机性,但是否完全确定,还取决于具体推理系统。
十、Agent 开发需要记住的几个结论
如果面试时间只有 1 分钟,可以直接回答下面这些:
Q1:Attention 是什么?
Attention 是让模型根据上下文计算不同 Token 之间的相关性,从而决定应该关注哪些信息。
Q2:为什么 Transformer 适合 LLM?
因为它可以并行处理大量 Token,并且能够直接建立远距离 Token 之间的关系,非常适合 GPU 大规模训练。
Q3:Token 是什么?
Token 是 tokenizer 切分出来的文本单位,不同模型的 tokenizer 不一样。
Q4:Context Window 是什么?
模型一次能够处理的上下文 Token 容量上限。上下文越长通常意味着更高的成本和延迟,也可能带来信息干扰。
Q5:为什么有幻觉?
因为 LLM 的核心目标是预测下一个 Token,而不是验证事实正确性。
Q6:怎么降低幻觉?
RAG 提供知识,Tool 提供实时数据,代码做关键结果校验,必要时要求引用证据。
Q7:temperature=0 是否完全确定?
不一定。它主要减少采样随机性,但底层推理系统仍可能存在非确定性。
十一、面试官可能继续追问
掌握上面内容以后,可能继续被问:
Attention
↓
为什么需要 sqrt(d_k)?
↓
什么是 Multi-Head Attention?
↓
什么是 Mask?
↓
为什么 Decoder 要使用 Causal Mask?
↓
什么是 KV Cache?
↓
为什么 KV Cache 会占显存?
↓
为什么上下文越长成本越高?
↓
Agent 如何管理 Context?
↓
为什么 LLM 会产生幻觉?
↓
RAG 为什么可以降低幻觉?
↓
Tool Calling 和普通文本生成有什么区别?
这些问题会在后面的章节逐步展开。
十二、这一期真正需要记住的
如果把整篇压缩成一张图:
LLM
│
┌─────────┴─────────┐
↓ ↓
Transformer Token
│ │
Attention Context Window
│ │
└─────────┬─────────┘
↓
生成 Token
│
↓
有幻觉
│
┌─────────┼─────────┐
↓ ↓ ↓
RAG Tool 校验
│ │ │
└─────────┴─────────┘
↓
Agent Runtime
真正需要记住的不是 Transformer 的公式,而是:
LLM 是一个概率生成模型,它很擅长理解和生成,但不是数据库,也不是确定性的业务规则引擎。Agent 的工程价值,就是在模型能力之外增加 Context、Tool、Memory、Workflow 和 Runtime 校验,让概率模型能够稳定地完成业务任务。
下一期再讲:
什么是 AI Agent:定义、判据与组件
从“模型是什么”正式进入“Agent 是什么”。
