Skip to content

高频面试题

Tokenization

这道题容易答成分词算法介绍,但应用开发更要讲清 tokenizer 如何影响成本估算、截断、中文体验、代码处理和模型切换。

适合阶段:AI 应用开发 / LLM 基础面核心能力:Tokenizer · Subword · Token Budget · Truncation

面试官角度分析,想考什么

  • Tokenization 是什么?为什么 LLM 不直接按字符处理?
    考你能否把它说成文本到 token id 的编码过程,而不是只说“分词”。

  • BPE、SentencePiece、tiktoken 这类 tokenizer 差异会带来什么影响?
    考机制差异:子词、词表、多语言、代码和特殊符号会影响 token 数、成本和上下文容量。

  • 工程上为什么不能只按字符数控制输入?
    考落地取舍:前端提示、服务端计数、截断保护、输出预留和模型迁移风险。

可直接抄走的 30 秒参考答案

text
Tokenization 是把文本编码成 token id 的过程,模型实际处理的是 token 序列,不是字符或单词。常见 tokenizer 会用子词来平衡词表大小和序列长度,所以中文、英文、代码、JSON 在不同模型上的 token 数可能不同。应用开发里要用 token 预算管理 system prompt、历史消息、RAG 文档、工具 schema 和用户输入,前端字符数只能做提示,最终要靠服务端按目标模型计数和兜底截断。

面试回答详解,知其所以然

这道题的核心不是让你手写 BPE,而是看你是否理解 tokenizer 是 LLM 调用链路的入口。它影响模型能不能高效“看见”文本,也影响产品里的成本、长度限制和迁移风险。

1. Tokenizer 把不可计算的文本变成模型能处理的 ID

模型不能直接处理字符串,只能处理数字。Tokenizer 负责把文本映射成 token id,再由 embedding 层变成向量。

text
"AI 应用开发" -> tokenizer -> [token_id, token_id, ...] -> embedding -> model

如果按字符处理,序列会很长;如果按完整单词处理,词表会很大,也处理不好新词、拼写变化、代码标识符和多语言文本。子词 tokenization 是折中方案:常见片段可以合并成更少 token,罕见词也能拆成可表示的小片段。

面试里可以这样说:Tokenizer 不是为了让模型“理解词语”,而是为了把开放文本压到有限词表里,让模型能稳定训练和推理。

2. 不同 tokenizer 会改变成本、上下文和模型表现

  • BPE:从字符开始不断合并高频片段,常见于 GPT 系模型。
  • SentencePiece:把文本当原始字符流处理,对多语言更通用。
  • tiktoken:OpenAI 生态常见 tokenizer 实现,用于估算 token。

差异会体现在这些地方:

  • 中文、英文、混合语言的 token 比例不同,影响成本和可放入上下文的内容量。
  • 代码里的缩进、符号、长变量名会占 token,代码生成和代码审查尤其明显。
  • JSON schema、工具定义也会占输入 token。
  • 截断可能破坏 Markdown、JSON 或代码块结构。
  • 特殊 token、空格处理和多模态占位符可能影响不同模型间 prompt 迁移。

所以同样 10 万字中文文档,不同模型 tokenizer 的 token 数可能差异明显。选模型时除了能力,也要看目标语言、上下文成本和延迟。

3. 工程上要同时保护输入、输出和截断边界

前端可以做输入字数和文件大小提示,但不能把它当最终 token 预算。生产里通常要:

  • 服务端计数:按目标模型 tokenizer 或供应商计数接口做最终预算。
  • 预留输出:不能把上下文窗口全塞给输入,要给模型生成答案留空间。
  • 结构保护:截断时避免截坏 JSON、Markdown 表格、代码块、XML 标签和工具参数。
  • 分段处理:长文档先解析、分块、摘要或检索,不把全文直接塞进 prompt。
  • 迁移复测:换模型时重新评估 token 数、截断策略、输出格式和成本。

Token Budget 不同,这篇重点在 tokenizer 的机制和差异;真正的产品预算要把 tokenizer、上下文窗口、输出上限和供应商 usage 结合起来。

面试官追问3个问题

追问一:为什么模型数不好 strawberry 里有几个 r?

  • 考察点:token 和字符的差异。
  • 回答方向:模型看到的是 token 片段,不天然逐字符计数。一个单词可能被切成若干子词,模型更擅长语义和模式补全,不适合精确字符计数。生产里遇到精确计数、排序、计算这类任务,应该交给代码或工具。

追问二:中文应用选模型要看 tokenizer 吗?

  • 考察点:成本意识。
  • 回答方向:要看。中文 token 效率会影响成本、上下文容量和首字延迟,尤其是长文档、客服历史、知识库问答和合同分析。评估模型时不要只看回答质量,也要比较同一批真实中文样本的 token 数和截断比例。

追问三:截断有什么风险?

  • 考察点:可靠性。
  • 回答方向:可能截掉关键指令、证据、用户问题、JSON 结构、代码块或工具参数,导致幻觉、格式错误、安全约束失效和不可复现。截断不能简单从头切或从尾切,要按信息价值裁剪,并尽量在结构边界处截断。

扩展知识

Token 预算不是输入预算

text
可用上下文 = 模型窗口 - system - history - tools - retrieved context - 预留输出

很多超限问题不是用户输入太长,而是应用暗中拼接的上下文太多。

进一步理解 tokenizer

Hugging Face TokenizersHugging Face NLP Course Tokenizers 对 BPE、WordPiece、SentencePiece 等子词方法有比较系统的解释。面试中不用展开实现细节,但要能把 tokenizer 差异和产品里的 token 成本、截断风险、模型迁移联系起来。

基于 MIT 协议开源