#二、Tokenizer、Embedding、位置编码与上下文窗口
#代表笔试题
- BPE、WordPiece、SentencePiece 的主要区别是什么?
- 什么是 tokenization,为什么不能简单按“词”来切?
- 什么是 contextual embedding,它和 Word2Vec 这种静态 embedding 有什么区别?
- 位置编码分为哪几类?绝对位置编码和相对位置编码的差别是什么?
- RoPE 的核心思想是什么?
- context window 指什么,它为什么重要?
#就地速答
- 问:BPE、WordPiece、SentencePiece 的主要区别是什么?
答:三者本质上都在做子词切分,但训练方式和工程假设不一样。
BPE可以理解成不断把高频相邻片段合并,所以更偏频次驱动;WordPiece更像是在问“合并后能不能让语言模型更划算”,因此带一点概率视角;SentencePiece的优势则是它不依赖人工先分词,直接在原始文本流上学习切分单元,所以对中文、多语言、带特殊符号的文本更友好。详见后文“### 13. BPE、WordPiece、SentencePiece 的主要区别是什么?”。 - 问:什么是 tokenization,为什么不能简单按“词”来切?
答:tokenization 就是把原始文本切成模型能处理的离散单元,也就是 token。之所以不能简单按“词”切,是因为真实世界文本远比“单词列表”复杂:有新词、错拼、缩写、代码片段、表情、数字串、多语言混写,还有中文这种天然没有空格分词的场景。详见后文“### 14. 什么是 tokenization,为什么不能简单按“词”来切?”。
- 问:什么是 contextual embedding,它和 Word2Vec 这种静态 embedding 有什么区别?
答:contextual embedding 的关键在“同词不同义时,向量也会变”。比如 bank 在“river bank”和“bank loan”里含义不同,现代语言模型会根据上下文生成不同的表示;而 Word2Vec 这类静态 embedding 不管上下文怎么变,一个词只有一套固定向量,所以很难表达歧义、指代和细粒度语境差异。详见后文“### 15. 什么是 contextual embedding,它和 Word2Vec 这种静态 embedding 有什么区别?”。
- 问:位置编码分为哪几类?绝对位置编码和相对位置编码的差别是什么?
答:位置编码常见可以分成几类:最早的是绝对位置编码,直接给每个位置一个固定编号或位置向量;后面发展出相对位置编码,更强调两个 token 之间相距多远;现代 LLM 常见的
RoPE、ALiBi也都可以理解为在更适合长上下文和自回归的场景里编码位置信息。详见后文“### 16. 位置编码分为哪几类?绝对位置编码和相对位置编码的差别是什么?”。 - 问:RoPE 的核心思想是什么?
答:
RoPE的核心思想,不是像早期方法那样给 token 向量额外加一个位置向量,而是直接对Q/K的不同维度做成对旋转,让 attention 分数在做内积时天然带上相对位置信息。换句话说,它把“位置”嵌进了相关性计算本身,而不是只在输入端做一次标记。详见后文“### 17. RoPE 的核心思想是什么?”。 - 问:context window 指什么,它为什么重要?
答:context window 就是模型一次前向计算里能同时接收和处理的 token 上限。你可以把它理解成模型当前“工作记忆”的大小:窗口越大,它一次能看到的对话历史、文档证据、代码上下文和工具返回结果就越多。详见后文“### 18. context window 指什么,它为什么重要?”。
#代表面试题
- 为什么 RoPE 会成为主流?它相比绝对位置编码到底好在哪里?
- 长度外推(length extrapolation)为什么难?RoPE 在长上下文下会遇到什么问题?
- 如果一个模型窗口从
8K扩到128K,会带来哪些新的工程和建模问题? - “Lost in the Middle” 是什么现象?为什么它在 RAG 里特别致命?
- 一个中英文混合系统为什么不能随便更换 tokenizer?
- 你怎么理解 token 数、上下文长度、KV cache 占用之间的关系?
#就地速答
- 问:为什么 RoPE 会成为主流?它相比绝对位置编码到底好在哪里?
答:
RoPE会成为主流,核心原因是它同时满足了三件事:第一,和 Decoder-only 自回归架构兼容得很好;第二,能把相对位置信息自然融进 attention 打分;第三,在长度扩展时通常比简单绝对位置编码更稳。详见后文“### 19. 为什么 RoPE 会成为主流?它相比绝对位置编码到底好在哪里?”。 - 问:长度外推(length extrapolation)为什么难?RoPE 在长上下文下会遇到什么问题?
答:长度外推难,本质上是模型在训练时只见过某个长度分布,比如
4K或8K,一旦推理时突然拉到32K、128K,模型并不是只多看一点内容,而是整个位置分布、依赖距离、注意力使用方式都超出了训练经验。详见后文“### 20. 长度外推为什么难?RoPE 在长上下文下会遇到什么问题?”。 - 问:如果一个模型窗口从
8K扩到128K,会带来哪些新的工程和建模问题?答:如果窗口从
8K拉到128K,首先爆炸的是工程成本。attention 计算量会明显上升,prefill 时间更长,KV cache显存占用显著增加,服务系统的带宽和调度压力也会更重。很多团队以为只是“模型能吃更长输入”,但实际上是整条推理链都被重新定价。详见后文“### 21. 如果一个模型窗口从8K扩到128K,会带来哪些新的工程和建模问题?”。 - 问:“Lost in the Middle” 是什么现象?为什么它在 RAG 里特别致命?
答:“Lost in the Middle” 指的是模型在长上下文里对中间位置的信息利用最差,往往更容易关注开头和结尾。这不是说中间内容完全没输入进去,而是说它进入了上下文,却没有在生成决策里被有效使用。详见后文“### 22. “Lost in the Middle” 是什么现象?为什么它在 RAG 里特别致命?”。
- 问:一个中英文混合系统为什么不能随便更换 tokenizer?
答:不能随便更换 tokenizer,是因为 tokenizer 并不是一个独立小组件,而是和词表、embedding 矩阵、训练数据分布、推理成本全部绑在一起。尤其是中英文混合系统里,切分粒度稍微变化,就会影响中文是否被切碎、英文长词是否被拆得太细、代码和符号是否异常膨胀。详见后文“### 23. 一个中英文混合系统为什么不能随便更换 tokenizer?”。
- 问:你怎么理解 token 数、上下文长度、KV cache 占用之间的关系?
答:token 数、上下文长度和
KV cache占用之间是近似线性放大的关系。因为每多一个历史 token,模型在每一层都要额外保存对应的K/V,所以缓存开销会随着batch size * seq_len * num_layers * kv_heads * head_dim一起增长。详见后文“### 24. 你怎么理解 token 数、上下文长度、KV cache 占用之间的关系?”。
#这一块真正考什么
- 是否知道 tokenizer 不只是预处理小细节,而是会影响词表大小、OOV、计算成本和迁移能力。
- 是否真正理解“长上下文”不是把窗口数字做大就结束了。
#作答抓手
回答位置编码题时,用这个结构最稳:为什么需要位置 -> 方法怎么注入位置信息 -> 为什么 RoPE 适合自回归模型 -> 长上下文下的局限。