#二、Tokenizer、Embedding、位置编码与上下文窗口

#代表笔试题

  1. BPE、WordPiece、SentencePiece 的主要区别是什么?
  2. 什么是 tokenization,为什么不能简单按“词”来切?
  3. 什么是 contextual embedding,它和 Word2Vec 这种静态 embedding 有什么区别?
  4. 位置编码分为哪几类?绝对位置编码和相对位置编码的差别是什么?
  5. RoPE 的核心思想是什么?
  6. 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 常见的 RoPEALiBi 也都可以理解为在更适合长上下文和自回归的场景里编码位置信息。详见后文“### 16. 位置编码分为哪几类?绝对位置编码和相对位置编码的差别是什么?”。

  • 问:RoPE 的核心思想是什么?

    答:RoPE 的核心思想,不是像早期方法那样给 token 向量额外加一个位置向量,而是直接对 Q/K 的不同维度做成对旋转,让 attention 分数在做内积时天然带上相对位置信息。换句话说,它把“位置”嵌进了相关性计算本身,而不是只在输入端做一次标记。详见后文“### 17. RoPE 的核心思想是什么?”。

  • 问:context window 指什么,它为什么重要?

    答:context window 就是模型一次前向计算里能同时接收和处理的 token 上限。你可以把它理解成模型当前“工作记忆”的大小:窗口越大,它一次能看到的对话历史、文档证据、代码上下文和工具返回结果就越多。详见后文“### 18. context window 指什么,它为什么重要?”。

#代表面试题

  1. 为什么 RoPE 会成为主流?它相比绝对位置编码到底好在哪里?
  2. 长度外推(length extrapolation)为什么难?RoPE 在长上下文下会遇到什么问题?
  3. 如果一个模型窗口从 8K 扩到 128K,会带来哪些新的工程和建模问题?
  4. “Lost in the Middle” 是什么现象?为什么它在 RAG 里特别致命?
  5. 一个中英文混合系统为什么不能随便更换 tokenizer?
  6. 你怎么理解 token 数、上下文长度、KV cache 占用之间的关系?

#就地速答

  • 问:为什么 RoPE 会成为主流?它相比绝对位置编码到底好在哪里?

    答:RoPE 会成为主流,核心原因是它同时满足了三件事:第一,和 Decoder-only 自回归架构兼容得很好;第二,能把相对位置信息自然融进 attention 打分;第三,在长度扩展时通常比简单绝对位置编码更稳。详见后文“### 19. 为什么 RoPE 会成为主流?它相比绝对位置编码到底好在哪里?”。

  • 问:长度外推(length extrapolation)为什么难?RoPE 在长上下文下会遇到什么问题?

    答:长度外推难,本质上是模型在训练时只见过某个长度分布,比如 4K8K,一旦推理时突然拉到 32K128K,模型并不是只多看一点内容,而是整个位置分布、依赖距离、注意力使用方式都超出了训练经验。详见后文“### 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 适合自回归模型 -> 长上下文下的局限