从 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 跑一遍,胜过读十篇文章

相关推荐
姗姗来迟了1 小时前
用React Hook封装AI对话状态
人工智能
阿瑞IT1 小时前
AI Agent 在甘特计划变更场景中的动态响应工程实践
人工智能
Goodbye1 小时前
从函数到智能:LLM Tool Use 深度解析
javascript·人工智能
半个落月1 小时前
大模型到底是怎么“调用工具”的?从一个 Node.js Demo 看懂 Tool Use
javascript·人工智能
烬羽2 小时前
中英文 token 数量差一倍?两段 JS 代码搞懂 LLM 底层是怎么"读"文字的
javascript·程序员·架构
MingXin2 小时前
Claude Code 对接 DeepSeek 完整使用教程(2026 最新版)
人工智能
山河木马2 小时前
矩阵专题1-怎么创建模型矩阵(uModelMatrix)
javascript·webgl·计算机图形学
Oo9202 小时前
LLM 分词与嵌入:从文本到向量,模型如何"读懂"你的输入
人工智能
Databend3 小时前
在 AWS 中国峰会逛了一天,我在 Databend 展台看到了 Agent 数据基础设施的新思路
数据库·人工智能·agent