简介:本文系统定义了大语言模型中Token与Embedding两大核心概念,从分词原理、子词切分策略、词表设计到向量化表达、维度选择,深入剖析其工作机制与技术价值。读者可快速理解文本如何被转化为模型可计算的数字序列与高维向量,掌握RAG等应用中数据处理的底层逻辑,为技术选型与开发实践提供扎实的认知基础。
Token(词元/令牌)是大语言模型(LLM)处理文本时的基本计量单位。它的本质是将原始文字序列映射为一个离散的整数编号。在技术层面,Token 可以对应一个完整的汉字、一个英文单词、一个词根,甚至一个更小的字符片段(子词)。Token 不是模型自己”发明”的概念,而是由预训练阶段确定的分词器(Tokenizer)根据固定词表进行查表或规则切分的结果。
从数据流动的视角看,Token 是整条文本处理流水线的第一步:原始输入 → 分词 → Token 序列 → 向量化 → 模型计算。它属于数据预处理环节,分词器一旦训练确定,在后续推理和微调中保持不变,不随模型参数更新。
Embedding(嵌入/向量化表示)是将每个 Token 的整数编号转化为一个固定长度的高维浮点数向量的过程。这个向量并非随意生成,而是模型在训练过程中学到的、能够在多维空间中编码语义信息的稠密表示。
简单来说:如果 Token 解决的是”文本如何变成数字”的问题,那么 Embedding 解决的就是”如何让数字携带语义”的问题。在数学上,大语言模型本质上是一个高维连续函数,它要求输入的数值变化是平滑的——语义相近的输入应当产生相近的中间表示,而孤立的整数编号无法满足这一要求。Embedding 正是实现这种平滑性的关键机制。
计算机底层以离散字符(如 ASCII 码或 Unicode 码点)存储文本。如果模型直接以单个字符为单位训练,将面临两大困难:
即便将文本切分为单词并赋予整数编号(如”苹果”=1024,”香蕉”=1025),问题依然存在:
Token + Embedding 的两级设计,正是为了同时解决效率与表达力的矛盾:Token 负责高效压缩文本,Embedding 负责赋予语义。
分词器是 Token 化的执行引擎,负责在文本与 Token 序列之间进行双向转换。其核心包含两个部分:
(1)分词算法
目前主流的分词算法采用子词切分(Subword Tokenization)策略,常见方案包括:
子词切分的核心思想是:不追求将每个词作为一个整体,而是允许将词拆分为有意义的片段。例如,”understanding” 可能被拆分为 “understand” + “ing”,”goodest” 虽未出现在词表中,但模型可通过 “good” + “est” 组合理解其含义。这种机制使得分词器具备处理未登录词(OOV, Out-of-Vocabulary)的能力。
(2)词表(Vocabulary)
词表是分词器所认识的所有 Token 的集合,其大小直接影响编码效率。以通用实践为参考:
| 发展阶段 | 典型词表大小 | 中文编码特点 |
|---|---|---|
| 早期模型 | 约 5 万 | 一个汉字常对应多个 Token,效率偏低 |
| 新一代模型 | 约 20 万及以上 | 涵盖更多中文词汇和短语,编码更紧凑 |
词表越大,单个 Token 能覆盖的文本片段越长,同等文本所需的 Token 数量越少,模型的计算效率和上下文利用率越高。但词表增大也意味着 Embedding 矩阵参数量增加,需要在效率与模型容量间做权衡。
当文本被转化为 Token 序列后,每个整数编号通过查表操作(Embedding Lookup)从一个巨大的参数矩阵中取出对应的向量。这个矩阵的形状为 [vocab_size, d_model],其中:
vocab_size 是词表大小(如 10 万或 20 万);d_model 是向量维度,即模型的”观察粒度”。维度的意义:
向量维度决定了模型能编码多少种潜在特征。举例来说:
在高维空间中,语义相近的词汇(如”苹果”与”Apple”、”快乐”与”愉悦”)其向量之间的距离较近;语义无关或对立的词汇距离较远。这种空间结构使模型能够通过简单的向量运算(如余弦相似度、向量加减)来推理语义关系。
以下伪代码展示了从原始文本到模型输入的完整流程:
输入文本: "大语言模型正在改变世界"步骤1 - 分词:Tokenizer.encode("大语言模型正在改变世界")→ [2381, 5762, 3110, 4427, 9012, 1024] (示例编号)步骤2 - 查表嵌入:for each token_id in [2381, 5762, 3110, 4427, 9012, 1024]:vector = embedding_matrix[token_id] # 取出 d_model 维向量→ 得到形状为 [6, d_model] 的矩阵步骤3 - 送入模型:model_input = [6, d_model] 的张量→ 经过多层注意力计算 → 输出预测
任何基于 Transformer 架构的大语言模型都依赖 Token + Embedding 作为输入层。在企业部署场景中,理解 Token 数量与成本的关系至关重要——通常计费与 Token 消耗直接挂钩,而 Token 数量取决于分词效率。
在 RAG 架构中,外部知识文档需要先被 Token 化,然后转化为 Embedding 向量存入向量数据库。检索时,用户查询同样经过 Token 化和向量化,通过向量相似度找到相关文档片段,再送入模型生成回答。这一过程中:
这些下游任务同样依赖 Embedding 作为特征表示。例如在语义搜索中,将查询和文档都向量化后计算相似度,是当前主流的技术范式。
| 概念 | 本质区别 |
|---|---|
| Token vs. 词(Word) | Token 是分词器的输出单位,可能是词、子词甚至字符,不等同于语言学意义上的”词” |
| Embedding vs. One-Hot 编码 | One-Hot 是稀疏的高维二进制向量,维度等于词表大小且仅一位为 1;Embedding 是稠密的低维浮点向量,携带语义信息 |
| Tokenizer vs. 模型 | 分词器是预处理工具,参数固定;模型是可训练的神经网络,参数在训练中更新 |
| Embedding 层 vs. 模型其他参数 | Embedding 矩阵是模型参数的一部分,会随训练更新;但分词器的词表和规则本身不更新 |
Token 是文本进入大语言模型的”通行证”,通过分词器将自然语言转化为离散的数字序列;Embedding 则是赋予这些数字以语义生命的”翻译器”,将孤立编号映射为高维空间中蕴含丰富语义关系的向量。二者共同构成了大语言模型及 RAG 等应用的数据处理基石。理解它们的定义、原理和影响因素,是开发者正确使用、优化和选型相关技术方案的前提。在百度智能云等平台提供的大模型服务中,Token 计费与 Embedding 向量检索均是核心能力,掌握其底层逻辑有助于更高效地构建智能应用。