一句话定义
Embedding 是一张可训练的查找表:每个 token ID 对应一个固定维度的向量,把离散符号变成连续表示。
它解决什么问题
独热编码里每个词都是互不相干的坐标轴,模型无法表达「猫」和「狗」比「猫」和「汽车」更接近。Embedding 把 token 放进一个稠密向量空间,让语义相近的片段在空间中靠近,方向也可以承载类比关系。这种接近不是人工标注的,而是从共现与上下文中学习出来的。
关键机制
- 查表:输入 token ID,取出对应行向量,维度常见为 768、1024、4096 等。
- 联合训练:向量不是人工设计的,而是在预训练中随梯度一起更新。
- 权重共享:不少模型让输入 Embedding 与输出 softmax 层共享权重,减少参数量。
- 位置信息:Transformer 还需要额外的位置编码或 RoPE,Embedding 本身不包含顺序。
相同的 token 在不同上下文里会得到相同的初始向量,真正让表示随语境变化的是后续的 Attention 层。
常见误区
- Embedding 不是「模型理解了词义」,它只是可优化的初始表示。
- 两个向量余弦相似度高,不代表它们在所有任务上都可互换。
- 检索用的向量模型和生成模型的输入 Embedding 通常不是同一套东西。
用在哪里
- 语义检索、聚类、去重、推荐和 RAG 的召回阶段。
- 作为生成模型的输入表示;它不是知识库,也不直接产出答案。
- 做语义检索时,文档和 query 要用同一套向量模型;维度不是越高越好,受训练数据和任务约束。
相关概念
- Tokenization:Embedding 的输入来源。
- Transformer:Embedding 之后的堆叠网络。
- RAG:用向量检索把外部知识送进模型。