主题
高频面试题
Tokenization
这道题容易答成分词算法介绍,但应用开发更要讲清 tokenizer 如何影响成本估算、截断、中文体验、代码处理和模型切换。
面试官角度分析,想考什么
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 Tokenizers 和 Hugging Face NLP Course Tokenizers 对 BPE、WordPiece、SentencePiece 等子词方法有比较系统的解释。面试中不用展开实现细节,但要能把 tokenizer 差异和产品里的 token 成本、截断风险、模型迁移联系起来。