跳到正文
动手理解 · CONCEPT LAB

把一句话一路变成下一个 Token

以标准 decoder-only 单 Token 循环为基线:文字先被编码成 Token ID,再映射为向量和模型配置 ID 空间的分数;解码选出的新 ID 会直接回到模型循环。

已经发生 正在观察 接下来
01 / 03

状态传导图

TXT 原始文字
TOK 离散片段
ID Token ID
VEC Embedding
LOG ID 空间分数
NEXT 解码新 ID

Tokenizer 在入口 encode 文字,也可在展示时 decode 输出 IDs;模型回环不会把显示文字每轮重新分词。

观察点 01

Tokenizer 先决定模型看到的“文字积木”

同一句话可能被切成字、子词或标点片段。切分完成后,每块都映射成词表里的一个整数 ID;ID 只是索引,不含连续语义。

可直接做矩阵计算还不行
信息离散程度离散符号
此刻要记住

Token 是切分单位,Token ID 是编号;两者都还不是语义向量。

基础 · Token & Embedding

Token 不是向量:文字要先编号,再查成 Embedding

神经网络接收的是数值张量,不是文字本身。在主流使用固定 tokenizer 的语言模型中,文本先被 Tokenizer(分词器)切成 Token,再映射为整数 Token ID,最后查表得到 Embedding(嵌入表示)。这篇把三者分开,并讲清字符任务、计费、自回归解码与稠密检索的边界。

01 · 大前提

文字要先变成可计算的张量

神经网络执行矩阵与张量运算,原始字符串不能直接参加这些运算。入口链路里有三个不同对象:Token 是离散片段,Token ID 是整数索引,Embedding 才是连续向量

文字「猫」原始字符串
↓ ① Tokenization 分词
Token 「猫」词表中的一个离散片段;也可能被拆成多块
↓ ② 词表映射
Token ID #1234整数只负责索引;编号大小没有语义
↓ ③ Embedding lookup 查表
输入向量 [0.21, -0.48, 0.83, …]训练学到的连续表示;不保证天然按同义词聚类
↓ 随后注入位置信息(方式依架构)
进入 Transformer开始「词间互看 + 各自加工」

位置信息也不一定直接“加”到输入向量:原始 Transformer 使用相加的位置编码,许多现代大模型则在注意力的 Query / Key 上应用 RoPE(Rotary Position Embedding,旋转位置嵌入)。进入层内之后的机制见 Transformer 专题

入口合同:Tokenizer 把字符串编码成离散 ID;输入 Embedding 再按 ID 查表得到连续向量。图中「猫」与编号、向量都只是示意,不对应某个真实词表。
02 · 第一步

Token:模型词表里的离散单位

在使用固定 tokenizer 的语言模型里,Token 是 tokenizer 输出的离散单位,也是文本序列的处理单位。它可能是一个词、子词、单个字符、字节片段、标点或特殊控制符,不能一概等同于「子词」;具体切法由模型绑定的 tokenizer 决定。

看看文字是怎么被切的 (示意,不同模型词表切法不同)

ChatGPT 很强 ChatGPT5 tokens
unbelievable unbelievable3 tokens
人工智能 人工智能2 tokens(仅为示意;不同 tokenizer 差异很大)
为何

为什么固定词表常选「子词」折中?

Why subword tokenization

🔑 三种粒度,各有代价

  • 按字符或字节:基础符号集小、覆盖更稳,但同一段文字往往变成更长序列,训练与推理要处理更多位置;这是一种可行路线,不是“做不了”
  • 按整词:常见文本的序列可更短,但词形、组合和多语言内容会推高词表规模,并产生没收录的新词 / 生僻词(OOV,Out-of-Vocabulary,未登录词)问题
  • 子词折中:常见片段可以合成大块,罕见内容退回更小单位。能否覆盖任意输入,取决于基础字符集、字节级方案或未知字符回退机制,不是“用了 BPE 就自动万能”

🔑 怎么切出来的(BPE)

  • BPE(Byte Pair Encoding,字节对编码)用于子词时,会从字符、字节等基础符号出发,反复学习相邻单位的合并规则;WordPieceUnigram Language Model(一元语言模型)使用不同的训练与切分准则,SentencePiece 是可承载 BPE / Unigram 的实现框架
  • 结果通常是一张固定词表(vocabulary),但“tokenizer 的实际条目数”不一定等于“模型矩阵行数”。官方口径示例:Llama 3 tokenizer 为 128K;Qwen2.5 有 151,643 个 BPE regular tokens(常规词元)和 22 个 control tokens(控制词元),共 151,665 个实际条目,而 Qwen2.5-7B 的 config.vocab_size 把 embedding / logits 空间开到 152,064 行,多出的 399 行不能当作可用 token;DeepSeek-V3-Base 配置行数为 129,280;GPT-4o 映射到 o200k_base。这些数字口径不同,不能只按大小判断 tokenizer 好坏
  • 可用 Token ID 通常映射到 embedding 的对应行和输出层的对应 logit;模型也可为对齐或保留空间配置额外行,因此不是“实际词表条目与矩阵行数永远严格相等”。确实可以增加 token 并初始化新向量,但必须同步调整模型矩阵,再用继续预训练或微调让新 token 学会用途;直接换一套 tokenizer 通常需要更大规模适配
  • 📰 研究前沿:2024 年预印、后发表于 ACL 2025 的 BLT(Byte Latent Transformer,字节潜变量 Transformer)直接处理原始字节并动态分块。论文把规模做到 8B 参数、4T 训练字节,在其 FLOPs(Floating-Point Operations,浮点运算次数)对齐设置下匹配 Llama 3 tokenizer 基线,并在论文测试的字符噪声与部分低资源翻译任务上更强;这是特定实验结论,不是“所有 tokenizer 已被淘汰”
Nembed=Nrows×dN_{\mathrm{embed}}=N_{\mathrm{rows}}\times d

标准查表的参数量等于模型 embedding 行数 N_rows × 向量维度 dN_rows 通常覆盖全部可用 ID,也可能含对齐 / 保留行。例如 Qwen2.5-7B 配置的 152,064 × 3,584 = 544,997,376:仅输入表就约 5.45 亿参数;它的输出层又是独立矩阵,所以“大 ID 空间”也会真实占用权重。

影响

Token 怎么影响你的体验和账单

Token Economics

📌 Tokenization 会怎样改变任务难度

字符操作不稳问「strawberry 有几个 r」时,字母不一定各占一个输入位置;拼写信息可能分散在 token 片段与模型权重里。tokenization 是重要原因之一,但训练数据、提示方式和推理能力也会影响结果。
数字切分不固定「12345」在某个 tokenizer 中可能是一块,也可能被切成 123·45 等多块,可能增加逐位对齐难度;不能把某个示意切法套到所有模型。

📌 token = 钱 + 上下文额度

按 token 计费API(Application Programming Interface,应用程序编程接口)常按输入 / 输出 token 分别收费,上下文额度也按 token 算。截至 2026-07-15 的标准价:GPT-5.5 每百万输入 / 缓存输入 / 输出 token 为 $5 / $0.50 / $30;输入超过 272K 时,官方另有整段会话输入 2 倍、输出 1.5 倍的长上下文口径。DeepSeek-V4-Flash 为缓存未命中输入 / 缓存命中输入 / 输出 $0.14 / $0.0028 / $0.28。二者能力、服务与口径不同,这不是性价比结论
语言成本没有固定结论同一含义在不同语言、写法与 tokenizer 下可能产生不同 token 数;不能脱离具体模型笼统断言“中文一定更贵”。
特殊 token / 控制 token开始、结束、角色或工具调用标记会进入序列,但具体形式由模型的 chat template(对话模板)决定:有的用 [INST],有的用 <|user|>,不存在通用的 <|system|> 标准。
Token 词元,序列中的离散单位 BPE Byte Pair Encoding 字节对编码,学习相邻单位的合并 词表 Vocab 所有 token 的固定集合 OOV Out-of-Vocabulary 未登录词
03 · 第二步

Embedding:用 ID 查出可学习向量

Token ID(如 #1234)只是索引,编号大小不代表语义。标准输入 Embedding 用这个 ID 从参数矩阵取出一行连续数值;它会在训练中学到对预测有用的表示,但不保证原始输入表里“同义词一定最近”

🔑 它怎么有了「语义」

  • 标准 Embedding 是一张可学习查找表:每个 Token ID 对应一行;初始化方式由模型训练配方决定,训练后成为模型参数
  • 训练目标会不断调整它,但普通 LLM(Large Language Model,大语言模型)的输入 embedding 是为下一个 token 预测服务,并没有保证「同义 token 一定互为最近邻」;语义关系通常在上下文化后的隐藏状态中更清楚
  • 向量维度常为数百到数千,部分模型更高;每一维只是坐标,信息通常分布在许多维度上,不能把单个维度直接命名成“情感”“动物”等人工特征

🔑 “语义空间”要先问是哪种向量

  • 在按相似度目标专门训练的词向量或句向量里,方向与距离可编码使用关系,例如动物词可能比交通工具词更接近;指标仍由模型与任务定义
  • 国王 − 男 + 女 ≈ 王后word2vec 静态词向量的经典直觉。后续研究指出标准类比测试有偏差;它不代表所有关系都线性,也不代表 LLM 靠这条公式推理
  • 模型对新组合的泛化来自 Embedding 与多层注意力、前馈网络和训练目标的共同作用,不能只归功于输入查表

进阶:embedding 其实就是「查一张大矩阵的某一行」

ERNrows×d,emb(t)=Et,:  (模型矩阵第 t 行)E\in\mathbb{R}^{N_{\mathrm{rows}}\times d},\qquad \mathrm{emb}(t)=E_{t,:}\ \ (\text{模型矩阵第 }t\text{ 行})

E 是嵌入矩阵,N_rows 行、d 列;token id 为 t,就取第 t 行——所谓「查表」。E可学习参数,随训练更新。这里用矩阵行数而不是实际词表条目数,是为了容纳模型配置里可能存在的对齐 / 保留行。

任务训练后的语义空间可以怎样理解

🐾 动物,挤在一起 老鼠 🚗 交通工具,另一片区域 汽车 飞机 国王 王后
概念示意:只有当词向量或句向量经过相似度相关目标训练时,局部几何才可按该模型的定义解释;这不是某个普通 LLM 输入表的实测降维图。
重要区分:三种「向量」别混淆
标准输入 embedding:按 ID 查表得到,在进入层内前不随这次上下文改变——本节讲的就是它。② 进 Transformer 后,同一个 token 会变成随上下文变化的隐藏表示——「苹果」在「吃苹果」和「苹果公司」里不一样。③ 句/文档 embedding(第 05 节)是专门训练的检索表示。三者都叫 embedding,但不是一回事;低维表再投影、动态词表或无固定 tokenizer 架构另当别论。
Embedding 嵌入表示,Token ID → 连续向量 静态 vs 上下文 word2vec / 输入表固定;层内隐藏状态随语境变 语义空间 经过目标训练的几何关系;相似度含义依模型而定 维度 Dim 向量的坐标数,不等于可命名特征数
04 · 闭环

进去是 Embedding,出来又变回 Token

下面先看标准 decoder-only 模型的单 Token 自回归基线:输入向量进 Transformer 后变成上下文化隐藏状态;输出端把最后位置的状态投影到模型配置的全部 ID 行。模型给出候选分数,解码策略才决定下一枚可用 Token ID。

🔑 输入端与缓存

  • Token ID → 输入 Embedding → 注入位置信息 → 进入 Transformer 各层;位置信息可能相加,也可能在注意力内通过 RoPE 等机制注入
  • 首次处理提示词称为 Prefill(预填充)。后续 Decode(解码)通常用 KV Cache(Key-Value Cache,键值缓存)复用过去位置的 Key / Value,只为新增 ID 计算新位置;图中的 ID 序列表示逻辑上下文,不等于每轮都从头重算整段前缀

🔑 输出端与选择

  • 最后位置的隐藏状态经 LM Head(Language Modeling Head,语言模型输出头)映射为模型配置 ID 空间的 logits(未归一化分数);若配置含对齐 / 保留行,并非每个 logit 都对应一个实际 tokenizer 条目
  • logits 可先经过温度、重复惩罚或约束等处理,再用 Softmax 得到概率;Top-p 等规则还会筛选候选。下一项可以由贪心取最大值、随机采样、束搜索或约束解码选出,不是必然“按概率采样”
  • 基础循环每次提交一个新 ID;speculative decoding(推测解码)等加速方法会先起草多个候选,再由主模型一次验证并可能接受多个 ID。因此“一轮一个 Token”是基线,不是所有推理引擎的固定执行粒度
  • 有的模型用 weight tying(权重绑定)令输入表与输出投影共享参数。SmolLM2-1.7B 的配置是 49,152 × 2,048,共享可避免再存一份 100,663,296 参数矩阵,按 BF16 / bfloat16(Brain Floating Point Format,16 位脑浮点格式)原始权重约 201 MB(约 192 MiB);Qwen2.5-7B、DeepSeek-V3-Base 的官方配置则明确不绑定。配置能证明是否共享,不能单凭配置臆测设计动机
z=hWout+bRNrows,P=softmax(z)z=hW_{\mathrm{out}}+b\in\mathbb{R}^{N_{\mathrm{rows}}},\qquad P=\mathrm{softmax}(z)

在标准稠密 LM Head 中,最后一层隐藏状态 h 的形状是 [d],输出矩阵 W_out 的形状是 [d, N_rows];两者相乘并可选加偏置 b,得到 N_rows 个 logits,Softmax 才把它们归一化。权重绑定时 W_out = Eᵀ,但并非所有模型都绑定。

标准单 Token 基线的模型回环是「解码选出新 ID → 追加逻辑上下文 → 只处理新增位置并复用 KV Cache」;Tokenizer 在入口负责 encode,也可把输出 IDs decode 成显示文字,但显示文字不会被每轮重新分词。推测解码一次可能接受多个 ID,图中未展开。
05 · 大用途

检索 Embedding:稠密搜索的一条主路线

专门训练的表示模型可以把句子、文档分块编码成一个或多个向量,再用相似度召回候选。这是 dense retrieval(稠密检索)的核心,但不是所有搜索或 RAG 的定义。

🔑 语义搜索:不只看字面

  • 按检索系统规定的查询端 / 文档端编码方式生成向量,再用余弦、点积等模型指定的分数找候选;两端可能共享编码器,也可能使用不同指令或参数。长文档通常先切块,不必强压成单一向量
  • 搜「怎么退货」能匹配到「退款流程」——字面不同但语义相近
  • 向量可存入向量数据库,也可使用搜索引擎插件或本地近似最近邻索引;“用了向量”不等于必须买独立向量数据库
  • 实战常把 dense retrieval 与 Okapi BM25(词法相关性排序方法)等 sparse retrieval(稀疏 / 词法检索)融合,再交给 reranker(重排器);相似度分数不是已校准的正确概率
sim(a,b)=cosθ=abab[1,1]\mathrm{sim}(a,b)=\cos\theta=\frac{a\cdot b}{\lVert a\rVert\,\lVert b\rVert}\in[-1,1]

余弦相似度(对非零向量):两个向量夹角的余弦,=1 同向、=0 正交、=−1 反向,只看方向、不看长度。只有当 embedding 模型和任务把这种几何关系训练成了语义关系时,高分才可解释为「语义更近」;−1 在数学上是反向,不自动等于自然语言里的反义词

🔑 RAG 可以用它,但不等于它

  • RAG(Retrieval-Augmented Generation,检索增强生成)在生成前获取外部资料;Embedding 检索是常见实现,但也可走 BM25、知识图谱、SQL(Structured Query Language,结构化查询语言)、网页搜索或业务 API
  • 外部语料可以在不改模型权重的情况下更新;只有系统保留来源、把证据正确传给模型并展示引用时,答案才可能更可追溯——RAG 本身不保证正确或有引用
  • CLIP(Contrastive Language–Image Pre-training,对比式语言-图像预训练)学习可比较的图像 / 文本表示,因此支持以文搜图等跨模态检索
注意
做搜索的句 / 文档向量来自按检索、相似度或对比学习目标训练的模型,不是直接把普通 LLM 的输入 Embedding 表拿来用。MTEB(Massive Text Embedding Benchmark,大规模文本嵌入基准)也包含多种任务和数据集,榜单分数不能代替你的领域评测。
📰 有日期的快照:Qwen 在 2025-06-05 发布时称 Qwen3-Embedding-8B70.58 位列当时 MTEB 多语言榜第一,并支持 100+ 语言;这不是 2026 年当前名次声明。OpenAI 官方说明 text-embedding-3-large 可输出 3072 维,并能通过 dimensions 参数缩到 256 维;在向量条数和数值类型相同时,仅原始坐标载荷是 1/12,但索引、ID、元数据与数据库总占用不会严格缩为 1/12。官方可比证据是 256 维版本在 MTEB 上仍超过 1536 维 ada-002。
承上启下
所以“Embedding”至少有两种语境:模型内部的输入查表与上下文表示,以及检索系统专门训练的向量表示。二者共享向量语言,却不能互换结论。→ 读应用专题《RAG 检索增强生成》
资料来源

核查口径与原始资料

页面于 2026-07-15 逐项复核。示例分词均为示意,不能拿来推断另一个模型的真实 token 数;价格与榜单必须结合日期和评测设置阅读。页面中的“常见”“通常”描述标准 decoder-only LLM 路径,不声称覆盖所有离散或连续输入架构。

速查表

一张表回顾 Token & Embedding

问题答案
入口有哪三种对象Token 是离散片段;Token ID 是整数索引;输入 Embedding 是查表得到的连续向量
token 是什么tokenizer 输出的离散单位,可能是词、子词、字符、字节片段、标点或特殊控制符
怎么切的BPE 学习相邻单位合并;WordPiece、Unigram 的准则不同。词表规模与覆盖回退由具体 tokenizer 决定
为什么字符操作会难字符不一定各占一个序列位置;tokenization 是原因之一,但不是唯一原因
token = 钱API 计费、上下文额度常按 token;同一文本在不同 tokenizer 下 token 数可能不同
输入 Embedding 是什么Token ID 查可学习矩阵的一行;矩阵可含对齐 / 保留行,行数不一定等于实际 tokenizer 条目数
Tokenizer 每轮都运行吗入口用 encode 把文字变成 IDs,展示时可用 decode 把 IDs 还原为文字;模型的自回归回环直接追加 ID,不会每轮重切显示文本
每轮一定只生成一个 ID 吗标准逐 Token 基线是一个;推测解码等方法可在一次主模型验证中接受多个候选 ID
检索 Embedding 是什么专门训练的句 / 文档表示;相似度含义依模型、指标和任务而定
RAG 一定用向量吗不一定;可用稠密向量、BM25、混合检索、图、SQL、网页搜索或 API