前言
很多人刚开始接触大模型时,关注点都在对话、生成、推理这些"上层能力"上。但真正想要理解大模型是怎么工作的,有两个概念绕不过去:Token(分词) 和 Embedding(嵌入向量)。它们是文本进入大模型的第一道门,也是模型"看懂"人类语言的基础。这篇文章从初学者的视角,把这两个概念讲清楚。
一、学习大模型,从哪里开始?
如果让我推荐一条学习路径,我会分成三层:
第一层:搞懂 AI 是什么。 先建立整体认知,不急着写代码。吴恩达的《AI For Everyone》《Generative AI For Everyone》系列课程很适合入门,用通俗的语言讲清楚 AI 能做什么、不能做什么。如果想深入原理,Karpathy(前 Tesla AI 总监、OpenAI GPT 核心作者)有一个三小时的大模型入门课程,把 Transformer、Attention 这些核心概念讲得非常透彻。
第二层:动手用起来。 把日常重复性工作交给 AI 处理。比如用 Cursor、Codex 辅助写代码,用 NotebookLM(Google 出品的 RAG 工具)做知识管理,用 Obsidian 搭建自己的第二大脑。在用的过程中,你会自然产生"它到底是怎么做到的"这种好奇心。
第三层:做一个完整的作品。 用 Vibe Coding 的方式做一个网站、小程序,或者开发一个 Agent。把知识用起来,才是真正学到了。
二、Token:大模型计价的"最小单位"
大模型处理文本,不是按字、按词来算的,而是按 Token。
你可能听过这样的说法:一个英文单词大约等于 0.3 个 Token,一个中文字符大约等于 0.6 个 Token,百万 Token 的成本在几块钱人民币左右------这里的"Token",就是大模型计价和工作的最小单位。
为什么必须分词?
这个问题很关键:明明输入的是文字 Prompt,为什么不能直接处理文本?
答案很简单:神经网络的底层运算机制决定了它只能处理数字 。计算机的神经网络本质上是在做大量的矩阵运算和向量计算,它看不懂中文、英文这些字符,只能看懂数字。所以,在文本进入模型之前,必须先把文字转换为一串数字 ID------这个转换过程就是分词(Tokenization),转换出来的每个数字 ID 就是一个 Token。
整个流程可以概括为:
原始文本 → 分词器 → Token ID 序列 → 模型处理
举个例子,用 GPT 官方的 cl100k_base 分词器(这个分词器有大约 10 万个 Token 的词汇表),把一段文本编码:
- 输入:"Hello, tiktoken! 你好,世界!"
- 编码后得到一串整数 ID,比如
[9906, 11, 12345, 0, 33142, ...] - 这些 ID 就是模型能"看懂"的语言
反过来,模型输出的 Token ID 也可以解码回人类可读的文本------编码和解码使用的是同一套映射规则。
Token 不是单词
一个常见的误区是把 Token 等同于单词。实际上,Token 的分割规则由分词器决定,它可能把一个单词拆成多个 Token(比如 "tokenization" 可能被拆成 "token" + "ization"),也可能把几个常见字符合并成一个 Token。分词器的核心目标是在"词汇表大小"和"语义表达能力"之间取得平衡------切得太细(比如按字符切),语义信息太弱;切得太粗(比如按整句切),词汇表又会爆炸。
三、Embedding:让 Token 带上语义
Token ID 只是一个离散的编号,它本身不包含任何语义信息。"215" 这个数字和 "33142" 这个数字之间没有距离概念------它们只是两个不同的标签。
但神经网络需要理解"意思"。比如"苹果"和"香蕉",语义上比"苹果"和"汽车"更接近。怎么让数字也能表达这种关系呢?
这就是 Embedding(嵌入向量) 的作用。它的流程是:
yaml
Token ID → Embedding → 高维向量(如 1024 维的浮点数数组)
Embedding 把每个 Token 映射到一个高维空间中的向量。在这个空间里,语义相近的词,它们的向量在方向上也比较接近。向量中的每个维度取值范围通常在 -1 到 1 之间,共同构成了这个词的"语义坐标"。
验证语义相似度:余弦相似度
怎么验证两个向量是否语义相近?最常用的方法是余弦相似度(Cosine Similarity),它衡量的是两个向量在方向上的接近程度,取值范围是 -1 到 1,越接近 1 表示越相似。
举个例子,我用 Embedding 模型(1024 维)把三段文本向量化后计算相似度:
- 文本 A:"Andrej Karpathy LLM Tokenization 分词原理"
- 文本 B:"卡帕西讲解大模型 BPE 字词分词"
- 文本 C:"今天想好好睡觉"
A 和 B 虽然一个是英文一个是中文,但讲的都是 "Karpathy 讲分词" 这件事,它们的余弦相似度会比较高。而 A 和 C 没任何语义关联,相似度就会很低。
这就是 Embedding 的威力------它用数学的方式表达了语义的远近。RAG(检索增强生成)、语义搜索、文本聚类这些应用,底层都依赖 Embedding。
四、Token 和 Embedding 的关系:一个完整的 pipeline
把 Token 和 Embedding 串起来,就是大模型处理文本的完整前置流程:
yaml
Prompt(文本输入)
→ Tokenizer(分词编码器)→ Token ID
→ Embedding(向量化)→ 1024 维语义向量
→ Transformer(大模型核心计算)
→ 输出 Token ID
→ Tokenizer(解码器)→ 文本输出
Token 解决的是"文本怎么变成数字"的问题,Embedding 解决的是"数字怎么带上语义"的问题。两者加在一起,才让神经网络能够真正"理解"人类语言。
五、总结
理解 Token 和 Embedding,是大模型学习路上的第一道坎。搞懂了它们,后面的 Transformer、Attention、微调这些概念才会有根基。
- Token 是桥梁:把人类可读的文本,转换成计算机可计算的数字 ID。分词器的好坏直接影响模型对语言的理解能力。
- Embedding 是灵魂:让离散的 Token ID 获得连续的、包含语义信息的高维向量表示。语义相近的词,向量也相近。
- 两者协作:Tokenizer 负责"翻译",Embedding 负责"理解"。没有 Token,文本进不去模型;没有 Embedding,模型只能看到编号,看不到意思。
如果说大模型是一座大厦,那 Token 和 Embedding 就是地基。地基打牢了,往上盖楼才稳。