从 Token 到 Embedding:LLM 核心基础深度解析

深入理解大语言模型(LLM)的底层基石 ------ 分词(Tokenization)与向量嵌入(Embedding),从原理到实战,构建完整的知识体系。


📑 目录

  • 一、学习路线图
    • [1.1 理论基础 ------ 先搞懂 AI 是什么](#1.1 理论基础 —— 先搞懂 AI 是什么 "#11-%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80--%E5%85%88%E6%90%9E%E6%87%82-ai-%E6%98%AF%E4%BB%80%E4%B9%88")
    • [1.2 动手用起来 ------ 把日常重复性工作交给 AI](#1.2 动手用起来 —— 把日常重复性工作交给 AI "#12-%E5%8A%A8%E6%89%8B%E7%94%A8%E8%B5%B7%E6%9D%A5--%E6%8A%8A%E6%97%A5%E5%B8%B8%E9%87%8D%E5%A4%8D%E6%80%A7%E5%B7%A5%E4%BD%9C%E4%BA%A4%E7%BB%99-ai")
    • [1.3 做个人作品](#1.3 做个人作品 "#13-%E5%81%9A%E4%B8%AA%E4%BA%BA%E4%BD%9C%E5%93%81")
    • [1.4 值得关注](#1.4 值得关注 "#14-%E5%80%BC%E5%BE%97%E5%85%B3%E6%B3%A8")
  • [二、Token 分词(Tokenization)](#二、Token 分词(Tokenization) "#%E4%BA%8Ctoken-%E5%88%86%E8%AF%8Dtokenization")
    • [2.1 什么是 Token?](#2.1 什么是 Token? "#21-%E4%BB%80%E4%B9%88%E6%98%AF-token")
    • [2.2 为什么必须分词?](#2.2 为什么必须分词? "#22-%E4%B8%BA%E4%BB%80%E4%B9%88%E5%BF%85%E9%A1%BB%E5%88%86%E8%AF%8D")
    • [2.3 Token 切分原则](#2.3 Token 切分原则 "#23-token-%E5%88%87%E5%88%86%E5%8E%9F%E5%88%99")
  • [三、Embedding 向量嵌入](#三、Embedding 向量嵌入 "#%E4%B8%89embedding-%E5%90%91%E9%87%8F%E5%B5%8C%E5%85%A5")
    • [3.1 处理流程](#3.1 处理流程 "#31-%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B")
    • [3.2 Embedding 原理](#3.2 Embedding 原理 "#32-embedding-%E5%8E%9F%E7%90%86")
    • [3.3 语义相似度 ------ 余弦相似度](#3.3 语义相似度 —— 余弦相似度 "#33-%E8%AF%AD%E4%B9%89%E7%9B%B8%E4%BC%BC%E5%BA%A6--%E4%BD%99%E5%BC%A6%E7%9B%B8%E4%BC%BC%E5%BA%A6")
  • [四、动手实战 Demo](#四、动手实战 Demo "#%E5%9B%9B%E5%8A%A8%E6%89%8B%E5%AE%9E%E6%88%98-demo")
    • [4.1 Demo 1:Token 编码与解码](#4.1 Demo 1:Token 编码与解码 "#41-demo-1token-%E7%BC%96%E7%A0%81%E4%B8%8E%E8%A7%A3%E7%A0%81")
    • [4.2 Demo 2:Embedding 与语义相似度](#4.2 Demo 2:Embedding 与语义相似度 "#42-demo-2embedding-%E4%B8%8E%E8%AF%AD%E4%B9%89%E7%9B%B8%E4%BC%BC%E5%BA%A6")
  • 五、核心概念关系总图
  • 六、关键要点总结

一、学习路线图

1.1 理论基础 ------ 先搞懂 AI 是什么

讲师 课程/内容 说明
吴恩达 (Andrew Ng) AI for Everyone 面向所有人的 AI 通识课
Generative AI for Everyone 生成式 AI 入门
Prompt Engineering for Everyone 提示工程入门
Andrej Karpathy 3 小时大模型入门 前 Tesla AI 总监、OpenAI GPT-3 作者,讲透大模型原理

📺 推荐视频:深入 ChatGPT 这样的模型

核心理论概念:

  • Transformer 架构(Google 提出)------ 现代大模型的基石
  • Attention 注意力机制 ------ "Attention is All You Need"
  • 微调(Fine-tuning) ------ 让大模型适配特定任务

1.2 动手用起来 ------ 把日常重复性工作交给 AI

  • Claude Code / Codex:AI 编程助手,将自然语言转化为代码
  • NotebookLM(Google 出品):基于 RAG 的个人知识助手
  • Obsidian:打造"第二大脑",知识管理利器

1.3 做个人作品

  • Vibe Coding:用自然语言描述需求,AI 生成完整项目
  • 实践方向:网站、小程序、客户管理工具
  • Agent 开发:构建自主智能体

1.4 值得关注

  • 晓辉博士 ------ 专业深度
  • 42章经 ------ 行业洞察
  • 宝玉 ------ AI Prompt Engineering
  • 归藏 ------ AI 产品

二、Token 分词(Tokenization)

2.1 什么是 Token?

Token 是 LLM 计价和工作的最小单位。

语言 Token 换算 示例
英文 1 个字符 ≈ 0.3 token "hello" ≈ 1.5 tokens
中文 1 个字符 ≈ 0.6 token "你好" ≈ 1.2 tokens
价格 百万 token 约几元人民币 ---
复制代码
文本输入 → Tokenizer(编码) → Token IDs → LLM 处理 → Token IDs → Detokenizer(解码) → 文本输出

2.2 为什么必须分词?

LLM 的核心工作原理是:根据上文,预测下一个词

但神经网络只能处理数字(向量、矩阵),看不懂中文、英文等字符。这是由计算机底层运行机制和模型训练效率共同决定的。

因此,必须把文字转换成离散的数字符号 ID ------ 这就是 Token

arduino 复制代码
┌──────────┐      ┌──────────┐      ┌──────────┐      ┌──────────┐
│  文本输入  │ ───▶ │ Tokenizer │ ───▶ │  Token   │ ───▶ │   LLM    │
│ "你好世界" │      │  编码器   │      │ IDs 数组  │      │  神经网络  │
└──────────┘      └──────────┘      └──────────┘      └──────────┘

2.3 Token 切分原则

  • 不能随意切割字符(没有意义)
  • Token 可以理解为一个"单词",但不完全是单词
  • cl100k_base 编码表提供映射规则
  • Token 数量级:约 100K 个不同的 Token ID
yaml 复制代码
文本 "Hello World"
  │
  ▼
cl100k_base 映射规则
  │
  ▼
Token IDs: [9906, 4435]  ← 两个 Token

三、Embedding 向量嵌入

3.1 处理流程

复制代码
文本 → Tokenizer(分词) → Token IDs → Embedding(向量化) → 神经网络计算

大模型不能直接处理文本,必须先 Tokenizer,再 Embedding。

3.2 Embedding 原理

Embedding 将 Token 映射到高维向量空间,用数字表达语义:

属性 说明
维度 常见 1024 维
数值范围 -1 到 1 之间的浮点数
核心意义 将语义相似度转化为向量空间中的距离
ini 复制代码
Token ID: 215
     │
     ▼  Embedding 映射
[-0.023, 0.451, -0.789, ..., 0.312]   ← 1024 维向量
 ◀─────────────────────────────────▶
         每个值在 [-1, 1] 之间

3.3 语义相似度 ------ 余弦相似度

语义相近的文本,其 Embedding 向量在空间中的方向也相近。通过**余弦相似度(Cosine Similarity)**来衡量:

CosineSimilarity(A,B)= A⋅B∣∣A∣∣×∣∣B∣∣ = ∑AiBi ∑Ai2 × ∑Bi2 \text{CosineSimilarity}(A, B) = \frac{A \cdot B}{||A|| \times ||B||} = \frac{\sum A_i B_i}{\sqrt{\sum A_i^2} \times \sqrt{\sum B_i^2}} CosineSimilarity(A,B)=∣∣A∣∣×∣∣B∣∣A⋅B=∑Ai2 ×∑Bi2 ∑AiBi

  • 值域:-1, 1
  • 越接近 1 → 语义越相似
  • 越接近 -1 → 语义越相反
  • 接近 0 → 语义无关
css 复制代码
      语义空间示意(简化为 2D)

         ▲ 向量 B(相似语义)
        / 
       /  小夹角 ≈ 高相似度
      /
     ●──────▶ 向量 A
              \
               \
                ▼ 向量 C(无关语义)
                 大夹角 ≈ 低相似度

四、动手实战 Demo

项目位于 demo/ 目录,包含两个核心示例:

4.1 Demo 1:Token 编码与解码

📄 文件: index.mjs

javascript 复制代码
import { getEncoding } from 'js-tiktoken';

const enc = getEncoding('cl100k_base');  // GPT 官方编码器
const text = 'Hello, tiktoken! 你好,世界!';

// 编码:文本 → Token IDs
const tokens = enc.encode(text);
console.log('Token IDs:', tokens, tokens.length);

// 解码:Token IDs → 文本
const decodedText = enc.decode(tokens);
console.log('Decoded Text:', decodedText);

核心要点:

  • 使用 js-tiktoken 库,调用 GPT 官方的 cl100k_base 编码器
  • encode():文本 → Token ID 数组
  • decode():Token ID 数组 → 文本
  • 输入 tokens + 输出 tokens = 总 token 数(计费依据)

4.2 Demo 2:Embedding 与语义相似度

📄 文件: main.mjs

完整数据流:

scss 复制代码
Text → Tokens → Embedding API → 1024维向量 → 余弦相似度计算 → 相似度得分
javascript 复制代码
// 1. 获取 Embedding(调用 LLM 向量化接口)
async function getEmbedding(text) {
  const res = await client.embeddings.create({
    model: 'text-embedding-v4',
    input: text,
    dimensions: 1024
  });
  return res.data[0].embedding;
}

// 2. 计算余弦相似度
function cosineSimilarity(vecA, vecB) {
  let dot = 0, magA = 0, magB = 0;
  for (let i = 0; i < vecA.length; i++) {
    dot += vecA[i] * vecB[i];
    magA += vecA[i] ** 2;
    magB += vecB[i] ** 2;
  }
  return dot / (Math.sqrt(magA) * Math.sqrt(magB));
}

// 3. 对比不同文本的语义相似度
const text1 = "Andrej Karpathy LLM Tokenization 分词原理";
const text2 = "卡帕西讲解大模型BEP 分词原理";
const text3 = "今天天气晴朗,适合出门散步";

// 结果预期:
// sim(text1, text2) → 高(都是讲分词原理)
// sim(text1, text3) → 低(语义不相关)
// sim(text2, text3) → 低

环境配置(.env):

ini 复制代码
DASHSCOPE_API_KEY=your_api_key
DASHSCOPE_BASE_URL='https://dashscope.aliyuncs.com/compatible-mode/v1'

依赖包(package.json):

包名 用途
js-tiktoken Token 编码/解码
openai 调用 Embedding API
dotenv 加载环境变量

五、核心概念关系总图

yaml 复制代码
┌─────────────────────────────────────────────────────────────────────┐
│                         LLM 处理全流程                               │
│                                                                     │
│  ┌──────────┐    ┌──────────────┐    ┌──────────┐    ┌──────────┐  │
│  │  原始文本  │───▶│ Tokenization │───▶│ Embedding│───▶│   LLM    │  │
│  │ "你好世界" │    │   分词编码    │    │  向量嵌入  │    │ Transformer│  │
│  └──────────┘    └──────────────┘    └──────────┘    └──────────┘  │
│                         │                  │               │        │
│                         ▼                  ▼               ▼        │
│                  ┌──────────────┐  ┌──────────────┐  ┌──────────┐  │
│                  │ cl100k_base  │  │  1024 维向量  │  │ 下一个词   │  │
│                  │ ~100K Token  │  │  值域 [-1,1]  │  │  概率分布   │  │
│                  └──────────────┘  └──────────────┘  └──────────┘  │
│                         │                  │               │        │
│                         ▼                  ▼               ▼        │
│                  ┌──────────────┐  ┌──────────────┐  ┌──────────┐  │
│                  │ Token IDs:   │  │ 余弦相似度    │  │ 输出Token │  │
│                  │ [9906, 4435] │  │ 语义匹配判断  │  │ → 解码输出 │  │
│                  └──────────────┘  └──────────────┘  └──────────┘  │
└─────────────────────────────────────────────────────────────────────┘

层次关系图

css 复制代码
Token 与 Embedding 知识体系
│
├── 1. 学习路线
│   ├── 理论学习(吴恩达、Karpathy)
│   ├── 动手实践(Claude Code、NotebookLM)
│   └── 项目构建(Vibe Coding、Agent 开发)
│
├── 2. Tokenization(分词)
│   ├── 定义:LLM 的最小工作单位
│   ├── 原理:文字 → 离散数字 ID
│   ├── 编码表:cl100k_base(~100K 词表)
│   ├── 计价:按 Token 数量计费
│   └── Demo:js-tiktoken 编解码
│
├── 3. Embedding(向量嵌入)
│   ├── 定义:Token → 高维语义向量
│   ├── 维度:1024 维
│   ├── 语义相似度:余弦相似度
│   └── Demo:OpenAI Embedding API + 相似度计算
│
└── 4. 知识串联
    ├── 文本 → Token → Embedding → LLM → 输出
    └── 语义匹配、RAG、搜索等上层应用

六、关键要点总结

序号 要点 一句话
Token 是桥梁 将人类语言转化为机器能理解的数字
Embedding 是灵魂 将 Token 赋予语义,在向量空间中建立关系
余弦相似度是尺子 衡量语义距离的核心工具
1024 维是窗口 每个维度捕捉语义的一个侧面
实践是捷径 三个 Demo 跑一遍,胜过读十篇文章

相关推荐
艾德克斯5 小时前
AI服务器电源POWER SHELF测试破局:HVDC高压架构挑战与ITECH全栈测试方案
人工智能·架构
IvorySQL7 小时前
PG 日报|新增 VACUUM 全维度统计信息补丁迭代
数据库·人工智能·postgresql·ivorysql
QYR_117 小时前
2026年全球氧化锆增韧氧化铝陶瓷市场规模达1.63亿美元,高端制造需求驱动行业持续增长
大数据·人工智能
meilindehuzi_a7 小时前
从零理解并实现 RAG:用 LangChain.js 构建语义检索问答系统
开发语言·javascript·langchain
空中湖8 小时前
AI是如何思考的|AI Agent与AGI:从对话到行动的进阶之路
人工智能·agi
Z-D-K8 小时前
我认为的AGI
人工智能·ai·人机交互·agent·agi
小北的AI科技分享8 小时前
2026视觉检测设备厂家排名:四大主流品牌技术与产品深度测评
人工智能·计算机视觉·视觉检测
江畔柳前堤8 小时前
GO01-Go 语言与主流编程语言深度对比
开发语言·人工智能·后端·微服务·云原生·golang·go
山东云弈创峰科技9 小时前
山东云弈创峰:跨境电商AI自动化中的环境隔离与风控架构
人工智能·架构·自动化
水如烟9 小时前
孤能子视角:三十六计之反客为主——拓扑结构重构
人工智能