面试官:“什么是大模型项目的分词器?”,我:“文本切成一个个词,让模型能处理”,他:“只会表面功夫?”

📅 2026/7/28 15:34:38
面试官:“什么是大模型项目的分词器?”,我:“文本切成一个个词,让模型能处理”,他:“只会表面功夫?”
面试官来讲讲什么是大模型项目的分词器原理是什么‍♂️我分词器就是把文本切成一个个词让模型能处理。面试官……「切成词」是表面理解。模型为什么需要分词直接用文本不行吗再说「词」具体是什么是汉语里的一个字、一个词、还是别的什么‍♂️我哦哦应该是因为模型只能处理数字分词器把文字转成数字 ID 序列面试官方向对了。那再问你分词的粒度怎么选按字符切每个字一个 token行不行按单词切呢为什么主流大模型都用 BPE 这种「子词级别」‍♂️我呃按字符切应该会让序列太长按单词切又会有 OOV 问题面试官终于说到点子上。但 BPE 具体怎么工作的你能说清楚吗为什么中文 1000 字对应 1000-1500 个 token而不是 1000 个或者 500 个这种「实际工程数字」要心里有数不然估算成本都估不准。回去搞清楚再来。问到这里分词器这道题的全貌就出来了它解决的远不止「切词」一件事文本到整数的转换、字符级和词级之间的折中、新词怎么处理、特殊 token 怎么放每一层背后都有具体的工程动机。 简要回答我觉得面试被问到 Tokenizer最重要的是先说清楚「为什么需要它」模型只能处理整数不认识字符串Tokenizer 就是把文字转成数字 ID 序列的桥梁。至于原理主流路线都是子词分词常见实现有 BPE、SentencePiece / Unigram、WordPiece 等。BPE 的直觉是从小单元出发反复把出现频率最高的相邻片段合并成新 token最终形成一个几万到十几万规模的词汇表既能控制大小又能处理新词。实际开发里要注意的是API 按 token 计费而不是按字数1000 个汉字大概对应 1000-1500 个 token但具体比例和模型 tokenizer 强相关估算成本和上下文窗口用量都要用真实 tokenizer 来算。 详细解析为什么需要 Tokenizer大语言模型的本质是一个函数输入一串整数token ID 序列输出下一个整数的概率分布然后把输出的整数再查表得到对应的文字。整个过程里模型看到的全是整数完全不认识字符串。Tokenizer 就是连接人类文字和模型整数世界的桥梁做两件事编码文本 - token ID 序列和解码token ID 序列 - 文本。朴素方案的问题要做分词最直接能想到的两种方案都有致命缺陷。第一种是字符级分词每个字母或汉字算一个 token。这种方案词汇表很小英文才 26 个字母加标点但序列会变得非常长。一个简单的「hello」就变成 5 个 token正常一篇文章能膨胀到几千上万个 token让 Attention 机制的计算量O(N²)大幅飙升。而且字符本身携带的语义信息太少模型要从一堆离散字符里重新学出「单词」的概念效率极低。第二种是词级分词每个完整单词算一个 token。这种方式对英文这种有空格分隔的语言可以做到但词汇表会膨胀到几十万甚至几百万因为英文里光是「cat / cats / catting / catty」这种变形就要分别存。更严重的问题是OOVOut-of-Vocabulary未登录词遇到训练时没见过的新词专有名词、网络用语、拼写错误就直接无法处理模型只能输出一个「未知词」标记相当于这个词的语义完全丢失。中文情况更糟词级分词意味着要先做中文分词哪些字组成一个词分词错了下游全错。字符级太碎词级太散子词分词就是这两者中间的甜蜜点。它做的是「subword子词」级别的分词既控制了词汇表大小又能处理新词同时保留了比字符更多的语义信息。BPE 是最常见的一类但不是唯一方案很多模型也会用 SentencePiece / Unigram 或 WordPiece。BPE 算法从合并规则开始BPEByte Pair Encoding字节对编码的原理其实很简单分三步。第一步初始化把训练语料里所有文本拆成最小单元通常是单个字节或字符每个字符就是一个基础 token形成初始词汇表。第二步反复合并统计语料中所有相邻 token pair 的出现频率找到频率最高的那对比如 「t」和「h」经常在一起就把它们合并成新 token「th」加入词汇表同时更新语料中的所有「t」「h」相邻位置为「th」。然后继续找下一个最高频的 pair比如「th」和「e」合并成「the」。每轮合并产生一条合并规则同时词汇表增加一个新 token。第三步重复直到词汇表达到预设大小比如 GPT-2 用了 50257Llama 3 用了 128000。以「lowest」这个词为例BPE 可能会把它分成「low」「est」因为「low」和「est」都是高频子词。遇到新词「lowest123」BPE 会分成「low」「est」「1」「2」「3」不会出现 OOV每个部分都是有意义的 token。中文分词的特点中文没有空格分隔词语BPE 面对中文的处理方式和英文不同。在大多数主流模型的词汇表里常用汉字会直接作为独立 token 存在因为每个汉字出现频率足够高不需要拆分。常见的中文词语比如「人工智能」可能会被合并成单个 token也可能是「人工」「智能」两个 token具体取决于训练数据里的频率。实践中估算的经验规则是1000 个汉字大约对应 1000-1500 个 token汉字 token 化效率略低于英文因为英文合并词会覆盖更多字符。但这只是粗估Qwen、Llama、OpenAI、Claude 的 tokenizer 都不一样中文、英文、代码、表格混在一起时比例会明显变化正式算成本前一定要用目标模型的 tokenizer 跑一遍。特殊 Token 的作用Tokenizer 里还有一些特殊 token它们不是来自文本而是用来给模型传递结构信息的。BOSBeginning of Sequence标记序列开始EOSEnd of Sequence标记序列结束模型生成到 EOS 时停止输出PADPadding用于批量处理时对齐不同长度的序列SEPSeparator用于分隔不同部分比如对话里区分系统消息和用户消息在 ChatML 格式里|im_start|和|im_end|这类特殊 token 用来区分对话轮次和角色。模型对这些特殊 token 有特殊的「意识」它们的 embedding 在训练中被专门优化所以模型能根据这些信号理解对话的结构。了解了 Tokenizer 的原理来看它在实际工程里会带来哪些具体影响。为什么 Tokenizer 对实际工程很重要理解 Tokenizer 不只是理论知识对实际工程有几个特别直接的影响搞不清楚就容易踩坑。最直接的是API 成本估算。主流 LLM API 都是按 token 计费的不是按字数。1000 汉字大约对应 1000-1500 tokens1000 个英文单词大约 1300 tokens代码的话效率更低一些标点、缩进会单独成 token。但这些都只是经验值要预估费用必须用目标模型的 tokenizer 数出来不能只用字数拍脑袋。第二个是上下文窗口管理。每个模型有最大 token 限制比如 Claude 200K、Qwen 128K你需要确保输入不超限。但字数和 token 数的比例取决于语言和内容类型中文 代码混合内容很容易让你以为「才 5 万字应该不超」实际算成 token 已经 8 万了。这种「直觉和实际不符」是新人的常见踩坑。第三个是避免截断重要信息。如果你的文档恰好卡在上下文限制边缘Tokenizer 可能会把一个词从中间硬切开比如「人工智能」可能被截断成「人工」 半个「智」字导致下游解析或检索失败。这种边界情况一定要在工程上处理比如保留几百 token 的安全 buffer。 面试总结回到开头那段对话问到 Tokenizer最重要的是先讲清楚「为什么需要它」。模型只能处理整数不认识字符串Tokenizer 就是连接人类文字和模型整数世界的桥梁。这一句铺垫先讲到面试官就知道你抓到了本质。接下来讲清三种分词粒度的取舍。字符级太碎序列太长、语义信息少词级太散OOV 严重、词汇表爆炸BPE 取了中间的子词级折中既控制词汇表又能处理新词。这是子词分词的核心动机。讲 BPE 原理时把「初始化基础词汇表 → 反复合并最高频 pair → 直到词汇表达到预设大小」这个三步流程讲清楚就行。同时补一句BPE 只是子词分词的一种SentencePiece / Unigram、WordPiece 也很常见。能举一个「lowest123 被切成 low est 1 2 3没有 OOV」的例子比纯讲算法生动得多。最关键的是带出实际工程影响API 按 token 计费、1000 汉字 ≈ 1000-1500 tokens、上下文窗口管理、避免截断。这些都是面试官最爱听的「真的做过项目」的工程细节。如果还想再加分可以提一句特殊 token的作用BOS、EOS、PAD、SEP以及 ChatML 格式里的|im_start|让面试官知道你不只懂分词算法还懂模型对话格式背后的工程细节。能讲到这一层这道题就答得很完整了。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】