🌈个人主页:一条泥憨鱼(欢迎各位大佬莅临)

🎬精选专栏:数据结构与算法JavaSE ,苍穹外卖日记AI学习

前言:

近几年,大模型(LLM)越来越火。无论是 OpenAI 的 ChatGPT,还是各种 AI 编程助手、AI 搜索、AI 绘画工具,背后都离不开一个核心概念:

Token(令牌)

初学者第一次接触这个词时,都会产生疑问:

  • Token 到底是什么?

  • 它和“字”“词”有什么区别?

  • 为什么 API 计费总按 Token 算?

  • 为什么模型会有“上下文长度限制”?

  • 一个汉字算几个 Token?

  • Prompt 为什么会消耗大量 Token?

这篇文章就带你从零开始,彻底理解 Token 的本质。


一、什么是 Token?

简单来说:

Token 是大模型处理文本时的“最小单位”。

注意:它不是“字”,也不是“单词”。

而是:

AI 在内部真正读取和计算的数据片段

你可以把它理解成:

  • 人类阅读文章 → 按“字词句”理解

  • AI 阅读文章 → 按 “Token” 理解


二、为什么 AI 不直接处理文字?

因为计算机本质上并不认识文字。

对于计算机来说:

你好

和:

Hello

本质都只是字符编码。

但大模型训练时,需要把语言拆解成更适合机器学习的数据结构。

于是就出现了:

Tokenization(分词 / 标记化)

即:

把文本拆分成 Token 的过程。

例如:

I love Java

可能会被拆成:

["I", " love", " Java"]

而中文:

我喜欢编程

可能会被拆成:

["我", "喜欢", "编", "程"]

也可能拆成:

["我", "喜欢", "编程"]

具体怎么拆,取决于模型使用的 Tokenizer(分词器)。


三、Token ≠ 单词 ≠ 汉字

这是很多人的误区。

1. 英文中的 Token

英文通常按“词根”拆分。

例如:

unbelievable

可能拆成:

["un", "believ", "able"]

再比如:

ChatGPT is amazing

可能拆成:

["Chat", "G", "PT", " is", " amazing"]

因为模型会尽量复用高频词块。


2. 中文中的 Token

中文情况更复杂。

例如:

人工智能

可能拆成:

["人工", "智能"]

也可能:

["人", "工", "智能"]

甚至:

["人工智能"]

不同模型拆分方式不同。

所以:

一个汉字不一定等于一个 Token。


四、为什么要这样拆分?

核心原因:

降低训练成本 + 提高语言理解能力

举个例子。

如果模型按“单个字符”学习:

computer

会变成:

c o m p u t e r

这样模型很难理解语义。

但如果拆成:

comput + er

模型就更容易学习:

  • compute

  • computer

  • computation

这些词之间的关系。


五、Token 的本质:数字编号

很多人以为 Token 是文本。

其实不是。

真正进入神经网络之前:

每个 Token 都会变成一个数字 ID。

例如:

hello -> 15339
world -> 27891

模型真正看到的是:

[15339, 27891]

然后再进一步转成向量(Embedding)


六、什么是 Embedding(嵌入向量)?

当 Token 转成数字后:模型还会继续把数字转换成数学向量。

例如:

hello

可能会变成:

[0.13, -0.22, 0.91, ...]

这就是:

向量化(Embedding)

作用是:

让 AI 能通过数学方式理解语言之间的关系。

例如:

猫 和 狗

向量距离会比较近。

而:

猫 和 数据库

距离会比较远。


七、为什么 API 都按 Token 计费?

因为Token 才是模型真正的计算单位。

你输入:

请帮我写一个Java快速排序

模型会:

  1. 把文本切成 Token

  2. 转成数字

  3. 输入神经网络

  4. 再一个 Token 一个 Token 地生成结果

所以:

Token 数量直接决定计算量。

计算量越大:

  • GPU 消耗越大

  • 推理时间越长

  • 成本越高

因此:

很多 AI 平台都会写:

输入:xx 元 / 百万 Token
输出:xx 元 / 百万 Token

八、输入 Token 和输出 Token

很多人第一次调用 API 时容易忽略:

输入和输出都会收费

你发送:

解释一下Java中的HashMap

这是输入 Token。

AI 回复了 2000 字,这是输出 Token。

而且:

输出 Token 往往比输入更贵。

因为生成文本需要更多计算。


九、什么是上下文窗口(Context Window)?

这是 Token 最重要的应用之一。

很多模型会写:

支持 128K 上下文

意思是:

模型一次最多只能处理 128K Token。

包括:

  • 用户输入

  • 历史聊天记录

  • 系统 Prompt

  • AI 已生成内容

全部加起来。


举个例子

假设模型支持:

8K Token

而:

  • 你的 Prompt:3000 Token

  • 历史记录:2000 Token

  • AI 回复:2500 Token

那么:

3000 + 2000 + 2500 = 7500

已经接近上限,如果继续聊天:

模型就可能:

  • 忘记前面的内容

  • 截断历史记录

  • 出现“失忆”


十、为什么长文本容易“失忆”?

因为:

大模型不是无限记忆。

它只能在 Context Window 范围内工作。

超出后:

旧 Token 会被丢弃。

这也是为什么你和 AI 聊很久后,它可能忘记最开始的话题。


十一、Prompt Engineering 为什么关注 Token?

Prompt(提示词)本质也是 Token。

因此:

Prompt 越长:

  • 成本越高

  • 推理越慢

  • 可用上下文越少

所以很多 Prompt 工程技巧:

本质都是:用更少 Token 表达更多信息

低效 Prompt:

你现在是一名非常专业的、经验丰富的、知识渊博的软件工程师……

高效 Prompt:

你是高级Java工程师

效果可能差不多,但 Token 更少。


十二、为什么代码特别消耗 Token?

因为代码符号很多。

例如:

Map<String, List<User>>

会拆成大量 Token:

["Map", "<", "String", ",", " List", "<", "User", ">", ">"]

所以:

代码通常比自然语言更耗 Token。

这也是为什么AI 编程工具成本很高。


十三、Token 和中文的关系

中文有一个特点:

通常比英文更节省 Token

中文:

你好

英文:

Hello

很多模型里:

  • “你好”可能 1~2 Token

  • “Hello”可能 1~3 Token

但具体仍取决于模型。


十四、常见模型的 Token 限制

不同模型支持的上下文不同。

例如:

模型 上下文长度
GPT-3.5 16K 左右
GPT-4 32K 左右
Claude 系列 100K+
Gemini 系列 可达百万级

上下文越大:

  • 越能处理长文档

  • 越适合 RAG

  • 越适合代码分析

但成本也会更高。


十五、RAG 为什么离不开 Token?

RAG(检索增强生成)中:

通常会:

  1. 用户提问

  2. 检索知识库

  3. 把相关内容拼接进 Prompt

  4. 再发送给大模型

问题来了:

Token 会爆炸

例如:

用户问一句:

什么是 Spring IOC?

结果系统可能拼接:

  • 文档A

  • 文档B

  • 文档C

最终 Prompt 几万 Token。

所以RAG 系统非常关注:

  • Chunk 切分

  • Token 压缩

  • 检索召回数量

  • Prompt 精简


十六、Token 是怎么生成文本的?

很多人不知道:

AI 是“一个 Token 一个 Token”生成内容。

模型可能这样生成:

今
今天
今天天
今天天气
今天天气很
……

每一步,模型都会预测:

下一个最可能的 Token。

大模型本质上是概率预测机器


十七、Temperature 和 Token 的关系

Temperature(温度参数):

会影响:下一个 Token 的随机性。

例如:

低温度:

天气很好

高概率稳定输出。

高温度:

可能变成:

天空像融化的蓝莓糖浆

更有创造力。

所以:

  • 写代码 → 低 Temperature

  • 写小说 → 高 Temperature


十八、如何统计 Token?

很多平台都有 Token 计算器。

例如:

  • OpenAI Tokenizer

  • tiktoken

  • Hugging Face Tokenizer

在 Python 中:

import tiktoken

enc = tiktoken.encoding_for_model("gpt-4")

tokens = enc.encode("你好,ChatGPT")

print(len(tokens))

十九、开发者为什么必须理解 Token?

因为它直接影响:

方面 影响
API 成本 Token 越多越贵
响应速度 Token 越多越慢
上下文长度 Token 决定记忆容量
Prompt 优化 本质是 Token 优化
RAG 效果 受 Token 限制
AI 编程 代码 Token 消耗巨大

可以说:

不理解 Token,就很难真正开发 AI 应用。


二十、一个经典误区

很多人以为:

“AI 理解的是文字。”

其实不是,AI 理解的是:

Token → ID → 向量 → 概率

文字只是人类看到的外壳。


二十一、未来 Token 会消失吗?

大概率不会。

因为当前 Transformer 架构,本质就是基于 Token 序列训练的。

未来可能会:

  • 更智能分词

  • 多模态 Token

  • 压缩 Token

  • 无限上下文

但:

“Token 作为 AI 基础单位” 这个概念,短时间不会改变。


二十二、总结

Token 是 AI 世界里的“语言颗粒”。

它既不是字,也不是词。

而是大模型真正理解、计算、预测语言的基本单位。

理解 Token 后,你会真正明白:

  • 为什么 AI 会收费

  • 为什么模型会失忆

  • 为什么 Prompt 很重要

  • 为什么 RAG 难做

  • 为什么上下文有限

  • 为什么代码生成成本高

当你开始开发 AI 应用时你会发现:

Token 就像传统编程里的“内存”和“CPU”。

它决定了:

  • 性能

  • 成本

  • 能力上限

学习大模型,Token 是必须迈过去的一道门槛。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐