Token 和 Embedding:大模型理解语言的第一公里

26 阅读1分钟

一、Token:把文本变成数字

神经网络只能处理数字。Tokenization 就是把人类语言拆成离散的数字 ID。

import { getEncoding } from 'js-tiktoken';
const enc = getEncoding('cl100k_base');
const tokens = enc.encode("你好,世界!");
console.log(tokens); // Token ID 数组

GPT 的词汇表约 10 万个 Token。一个英文字符约 0.3 个 Token,一个中文字符约 0.6 个 Token——这就是为什么中文内容消耗更多 Token。

二、Embedding:给数字赋予语义

Token ID 本身没有语义——41 不比 42 "小"。Embedding 把离散的 Token ID 映射到高维连续向量空间。

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));
}

在向量空间中,"Karpathy"和"卡帕西"的向量方向接近(余弦相似度 > 0.85),而和"天气"的向量几乎垂直。

三、总结

  1. Tokenization 把文本变成数字 ID
  2. Embedding 把数字 ID 映射到语义向量空间
  3. 语义相似的文本在向量空间中距离更近 > 4. 这两个概念是理解 Transformer 的基础前提

cover.png