从 Token 到向量:手把手带你通过代码读懂大模型(LLM)的“黑盒”原理

在 2026 年的今天,大语言模型(LLM)已经像水和电一样融入了我们的工作和生活。但你是否真正思考过:当我们在对话框里输入一行文字时,计算机到底经历了什么?

很多开发者觉得 LLM 是个"黑盒",其实只要拆解到底层,你会发现它本质上就是一个数学计算过程。今天,我们就结合 Andrej Karpathy 的经典理论和实战代码,从 Token 到 Embedding,彻底搞懂大模型的"消化系统"。


🚀 一、 怎么学习 LLM?先建立正确的认知地图

在深入代码之前,我们需要一个清晰的学习路径。根据吴恩达(Andrew Ng)和 Andrej Karpathy(前 Tesla AI 总监、OpenAI 创始成员)的建议,学习 LLM 可以分为三个阶段:

  1. 搞懂 AI 是什么(理论篇)

    • 入门: 推荐吴恩达的《AI for Everyone》系列,建立宏观概念。
    • 进阶: 必看 Karpathy 的《深入探索像 ChatGPT 这样的大语言模型》。他能把复杂的 Transformer 架构讲得像搭积木一样简单。
    • 核心关键词: Transformer 架构、Attention 机制、微调(Fine-tuning)、RLHF。
  2. 动手用起来(工具篇)

    • 日常提效: 把重复性工作交给 AI。比如使用 Cursor、GitHub Copilot 进行辅助编程,或者用 NotebookLM 做 RAG(检索增强生成)阅读。
    • 第二大脑: 结合 Obsidian 等工具,打造个人的 AI 知识库。
  3. 做个人作品(实战篇)

    • Vibe Coding: 尝试用自然语言描述需求,让 AI 帮你生成一个完整的网站或小程序。
    • Agent 开发: 学习构建能够自主规划、调用工具的 AI 智能体。

🔑 二、 分词(Tokenization):LLM 的计价单位与最小工作单元

大模型看不懂中文,也看不懂英文,它只认识数字。

1. 为什么要分词?

计算机底层只能处理数字(向量、矩阵)。为了让神经网络理解文本,我们必须把文字转换成离散的符号 ID,这就是 Token

  • 英文: 1 个字符大约对应 0.3 个 Token(因为英文单词长,子词切分更细)。
  • 中文: 1 个汉字大约对应 0.6 个 Token(中文信息密度大,通常 1-2 个字就是一个 Token)。

注意: 这直接关系到你的钱包!API 的计费是按 Token 数量算的,百万 Token 可能只需要几块钱,但量大了也是一笔不小的开支。

2. 代码实战:用 js-tiktoken 拆解文本

我们可以使用 OpenAI 官方 tiktoken 的 JS 版本来直观地看看文本是如何变成数字的。

javascript

编辑

arduino 复制代码
1import { getEncoding } from 'js-tiktoken';
2
3// 1. 获取编码器(GPT-4/3.5 使用的 cl100k_base 规则)
4const enc = getEncoding('cl100k_base');
5
6const text = "Hello, tiktoken! 你好,世界!";
7
8// 2. 编码:文本 -> Token ID 数组
9const tokens = enc.encode(text); 
10console.log("Token IDs:", tokens); 
11// 输出示例: [9906, 11, 28530, 3857, 227, 2873, 1010, 3528, 13]
12
13// 3. 解码:Token ID 数组 -> 还原为文本
14const decodedText = enc.decode(tokens);
15console.log("Decoded Text:", decodedText);

原理解析:

这段代码演示了 LLM 处理文本的第一步。enc.encode 就像查字典,把 "Hello" 变成 9906,把 "你" 变成 227。模型后续的所有计算,都是基于这串数字进行的。


🧮 三、 Embedding:把语义变成"坐标"

有了 Token ID 还不够,数字 100101 在数学上很接近,但在语义上可能毫无关系(比如 ID 100 是"苹果",ID 101 是"挖掘机")。

为了让计算机理解语义相关性 ,我们需要 Embedding(嵌入) 。它将 Token 映射到一个高维向量空间中。

  • 核心逻辑: 语义相近的词,在向量空间里的距离就很近。
  • 维度: 常见的 Embedding 模型(如 text-embedding-v4)会输出 1024 维甚至更高维度的向量。

1. 为什么是 1024 维?

你可以把这 1024 个数字想象成对文本的 1024 个"特征描述":

  • 第 1 维可能代表"情感正负面";
  • 第 2 维可能代表"是否涉及科技";
  • 第 3 维可能代表"正式程度"......

2. 代码实战:计算文本相似度

下面这段代码演示了如何调用阿里云百炼(DashScope)的 API,将文本向量化,并计算两段话的"语义相似度"。

javascript

编辑

javascript 复制代码
1import OpenAI from 'openai';
2import dotenv from 'dotenv';
3dotenv.config();
4
5// 初始化客户端(兼容 OpenAI 格式)
6const client = new OpenAI({
7  apiKey: process.env.DASHSCOPE_API_KEY,
8  baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1'
9});
10
11// 1. 获取向量的封装函数
12async function getEmbedding(text) {
13  const res = await client.embeddings.create({
14    model: 'text-embedding-v4',
15    input: text,
16    dimensions: 1024 
17  });
18  return res.data[0].embedding;
19}
20
21// 2. 余弦相似度算法:计算两个向量的夹角
22function cosineSimilarity(vecA, vecB) {
23  let dot = 0, magA = 0, magB = 0;
24  for (let i = 0; i < vecA.length; i++) {
25    dot += vecA[i] * vecB[i]; // 点积
26    magA += vecA[i] ** 2;     // A的模长平方
27    magB += vecB[i] ** 2;     // B的模长平方
28  }
29  return dot / (Math.sqrt(magA) * Math.sqrt(magB));
30}
31
32// 3. 主程序运行
33async function run() {
34  const text1 = "Andrej Karpathy LLM Tokenization 分词原理";
35  const text2 = "卡帕西讲解大模型BPE字词分词"; // 语义相近
36  const text3 = "今天天气晴朗,适合出门散步";   // 语义无关
37
38  const vec1 = await getEmbedding(text1);
39  const vec2 = await getEmbedding(text2);
40  const vec3 = await getEmbedding(text3);
41
42  console.log("相似度 (Text1 vs Text2):", cosineSimilarity(vec1, vec2)); // 结果应接近 1
43  console.log("相似度 (Text1 vs Text3):", cosineSimilarity(vec1, vec3)); // 结果应远小于 1
44}
45
46run();

3. 代码深度解析

  • cosineSimilarity 函数:这是 RAG(检索增强生成)技术的基石。它通过计算两个向量的点积和模长,得出一个 -1 到 1 之间的值。

    • 值越接近 1,说明两段文本在 AI 眼里越像(比如 text1 和 text2 都在讲分词)。
    • 值接近 0,说明两者风马牛不相及。
  • 循环 1024 次 :代码中的 for 循环遍历了向量的每一个维度,累加计算特征的重合度。这就是 AI "思考"的过程------在海量特征中寻找共鸣。


📌 总结

Tokenization 的离散 ID 到 Embedding 的连续向量,再到 Cosine Similarity 的数学计算,大模型并没有魔法,它只是把人类的语言极其精妙地转化为了数学问题。

学习建议:

不要只停留在看视频,像上面那样亲手写几行代码,调用一次 API,看着 Token ID 和向量数据打印在控制台上,你对 LLM 的理解会瞬间上一个台阶。

推荐关注:

  • 晓辉博士:专业深度解析。
  • 42章经:行业洞察。
  • 宝玉 AI:Prompt Engineering 技巧。

让我们一起在 AI 的浪潮中,不仅做使用者,更做懂原理的创造者!

相关推荐
糯米导航1 小时前
AI 视觉回归实战:截图对比不是“找不同”,如何让智能差异分析真正服务 UI 质量
人工智能·ui·回归
科技圈观察2 小时前
2026年好伴AI医疗专用大模型应用梳理与梯队参考
人工智能
jkyy20142 小时前
深耕AI健康医疗数据智库,赋能企业构建主动健康管理新生态
大数据·人工智能·健康医疗
cd_949217212 小时前
3D角色自动绑骨怎么做?用V2Fun完成建模、绑定、动作和导出
人工智能·3d
瑞禧生物tech2 小时前
SH-PEG-Biotin巯基-聚乙二醇-生物素 HS-PEG-Bio 深度解析
人工智能
QYR-分析2 小时前
机器人安全控制器行业高速扩容 本土替代迎来全新发展窗口期
人工智能·安全·机器人
冬奇Lab3 小时前
MCP 系列(06):MCP vs Function Calling——用数据说话的选型指南
人工智能
冬奇Lab3 小时前
每日一个开源项目(第159篇):Vibe-Trading - 用自然语言做量化研究,AI 驱动的个人交易 Agent
人工智能·开源·资讯
AI大模型-小雄3 小时前
2026 年 7 月国内怎么开通 ChatGPT Pro?5x / 20x 区别、适合人群与避坑指南
人工智能·gpt·chatgpt·ai编程·开发工具·codex·chatgpt pro
快乐非自愿3 小时前
AI低代码破局:数字化降本增效的核心逻辑与商业落地
人工智能·低代码