什么是 Token(令牌)?

Token(令牌)是大型语言模型(LLM)处理文本的基本单位,代表一段可以是单词、子词、字符或标点符号的文本片段。分词(Tokenization)是将文本分解为这些离散单元的过程,使模型能够将人类可读的文本转换为神经网络可以理解和处理的数值表示。

快速了解

创建时间2010 年代(BPE 等现代子词分词技术)
规范文档官方规范

工作原理

在 LLM 的上下文中,Token 作为文本处理的原子构建块。现代分词算法如字节对编码(BPE)、WordPiece 和 SentencePiece 创建了一个子词单元词汇表,在词汇量大小和表示效率之间取得平衡。BPE 迭代地合并最频繁的字符对,而 WordPiece 使用基于似然的合并策略。这种子词方法使模型能够有效处理罕见词、形态变化和多种语言。Token 数量直接影响模型的上下文窗口(如 GPT-4 的 128K tokens)、API 定价和计算需求。不同的模型使用不同的分词器,导致相同文本的 Token 数量可能不同。

主要特点

  • 子词单位,在词汇量大小和覆盖效率之间取得平衡
  • 决定上下文窗口限制(如 4K、8K、128K tokens)
  • 商业 LLM API 的主要计费单位
  • 语言无关的表示方式,支持多语言处理
  • 可变长度映射,一个单词可能等于 1-4 个 tokens
  • 影响推理时的模型延迟和内存消耗

常见用途

  1. 估算 LLM 驱动应用的 API 成本
  2. 优化提示词以适应上下文窗口限制
  3. 为特定领域词汇构建自定义分词器
  4. 分析不同语言的 Token 效率
  5. 为 RAG 系统实现文本分块策略

示例

loading...
Loading code...

常见问题

一个英文单词等于多少个 Token?中文呢?

英文中,常见单词通常是 1 个 token,较长或罕见的单词可能是 2-4 个 token。中文由于字符编码方式不同,通常每个汉字需要 1-2 个 token,一个中文词可能需要 2-4 个 token。因此,相同语义的内容,中文通常比英文消耗更多 token。可以使用 OpenAI 的 Tokenizer 工具实际测试。

什么是上下文窗口?Token 数量如何影响它?

上下文窗口是模型单次能处理的最大 token 数量,包括输入和输出。例如 GPT-4 Turbo 有 128K token 的上下文窗口。超出限制的内容会被截断。Token 数量直接决定了能输入多少内容、模型能'记住'多少对话历史,以及 API 调用的成本。长文档处理需要分块或使用大上下文窗口模型。

BPE(字节对编码)分词算法是如何工作的?

BPE 从字符级词汇表开始,迭代地合并最频繁出现的相邻字符对。例如,'th'和'e'频繁相邻,就合并为'the'。这个过程持续到达到预设词汇量。结果是常见词作为整体 token,罕见词被分解为子词。这种方法平衡了词汇量大小和表示效率,能处理未见过的词。

如何估算 API 调用的 Token 成本?

估算步骤:1)使用 tiktoken 等库计算输入文本的 token 数;2)估计预期输出的 token 数;3)查看 API 定价(通常按每千 token 计费,输入输出价格可能不同);4)计算总成本。优化成本的方法包括:精简提示词、限制输出长度、使用更经济的模型、以及缓存常用响应。

不同 LLM 的分词器有什么区别?

不同模型使用不同的分词器和词汇表:GPT 系列使用 tiktoken(基于 BPE)、BERT 使用 WordPiece、LLaMA 使用 SentencePiece。这意味着相同文本在不同模型中的 token 数量可能不同。选择模型时需要注意其分词器对目标语言的支持程度,某些分词器对中文等非拉丁语言的效率较低。

相关工具

相关术语

相关文章