Zubnet AI学习Wiki › Token
基础

Token

别名:词元

AI模型处理文本的基本单位。一个token通常是一个词或词的一部分—"understanding"可能是一个token,而"un" + "der" + "standing"可能有三个。平均来说,一个token大约相当于英语中一个词的3/4长度。模型在读取、思考和计费时都以token为单位。

为什么重要

Token 是 AI 的货币。上下文窗口以 token 为单位进行衡量。API 定价按 token 计算。当提供商提到 “1M 上下文” 时,他们指的是 100 万个 token—大约 75 万字。理解 token 有助于您估算成本并优化使用。

深度解析

词元(token)是由分词器(tokenizer)生成的,分词器是一种在神经网络处理文本之前独立运行的算法。目前最常用的方法是字节对编码(Byte Pair Encoding,BPE),该方法被GPT、Claude和Llama等模型采用。BPE从单个字符(或字节)开始,通过迭代合并最频繁的字符对生成新的词元。经过足够多的合并后,常见词汇如“the”或“and”会成为单个词元,而罕见或专业词汇则会被拆分为子词片段。像“tokenization”这样的词本身可能会被拆分为“token” + “ization”或“token” + “iz” + “ation”,具体取决于所使用的分词器。这种子词方法使得现代模型能够较好地处理拼写错误、新造词和代码——它们不会遇到真正“未知”的词,只是遇到不熟悉的已知片段组合。

并非所有分词器都相同

不同模型使用的分词器及其词汇表各不相同,这一点比大多数人意识到的更重要。GPT-4的分词器(cl100k)拥有约100,000种词元类型。Claude的分词器不同,Llama使用的是另一种。同一句英文句子在不同模型中可能被拆分为不同数量的词元,这直接影响上下文窗口的使用和API成本。代码通常比散文的词元效率更低,因为变量名和语法词元可能在训练数据中出现频率不够高,无法获得独立的词汇表条目。非英语语言的差异非常显著——使用拉丁字母的语言通常与英语一样高效地进行词元化,但中文、日文、韩文、阿拉伯语和印地语往往需要更多词元来表达相同含义,因为它们的字符在分词器训练过程中可能未被充分表示。

词汇表的权衡

分词器的词汇表大小会带来真正的工程权衡。更大的词汇表意味着常见词汇和短语拥有自己的专用词元,因此你的文本可以压缩为更少的词元(更便宜、更快、在上下文中容纳更多内容)。但更大的词汇表也意味着模型输入和输出层的嵌入表(embedding table)更大,从而增加模型大小和内存使用。在模型维度为4,096时,100,000词元的嵌入表已有4亿个参数——这已经是小型模型中相当大的一部分。这就是为什么词汇表大小通常集中在32K–128K范围内:这是压缩效率和参数开销之间的最佳平衡点。

上下文预算

当供应商宣传上下文窗口大小(如8K、128K、1M词元)时,这些数字包含所有内容:你的系统提示、对话历史、粘贴的文档以及模型自身的回复。开发者常见的错误是将上下文窗口填满参考材料,而为模型生成实质性回复预留的词元太少。大多数API允许你设置响应的max_tokens参数,但如果输入已消耗大部分上下文窗口,模型可能会截断其思考或拒绝回答。实际上,你需要进行预算规划:了解模型的上下文限制,估算输入大小(3/4字规则是一个粗略指南——如需精确,使用供应商的分词器库),并为所需的输出预留足够空间。

冗长的代价

还有一个大多数人低估的成本维度。在API定价层级中,输出词元通常比输入词元贵3–5倍,因为生成每个输出词元需要模型进行一次完整的前向传递,而输入词元可以并行处理。这种不对称性意味着,一个给出冗长回答的聊天机器人成本远高于一个经过训练能简洁回答的机器人。这也是为什么像提示缓存(reusing the processed input tokens across multiple requests)这样的技术可以显著降低成本,特别是对于需要在多个查询中共享相同系统提示或文档上下文的应用。理解词元经济学不仅具有学术意义——它可能是将AI功能的月成本从50美元降低到5,000美元的关键。

相关概念

← 所有术语
← 腾讯 工具使用 →
ESC