· 预计阅读 6 分钟
更新于

Embedding:词是如何变成数学的?


本篇解决什么

本篇是「小模型训练系列」第 2 篇:从工程与数学直觉出发,解释大模型训练中的语义坐标系。

适合谁读

正在沿着「小模型训练系列」系统学习,希望把概念、工程和真实判断串起来的读者。

AI大模型训练Embedding向量空间

Embedding 若只被理解成「查相似度的工具」, RAG、Agent、行业模型里的很多问题都会被误判。 在整个大模型训练流程中,Embedding 是第一道真正具有「智能含量」的关卡。 它不负责生成答案,也不直接做推理,却定义了模型“理解世界”的坐标系

很多人学习大模型时,习惯从 Transformer、Attention、参数规模入手, 却忽略了一个更底层的事实:

在 Attention 开始工作之前,世界已经被 Embedding 定义好了。

如果这个「世界坐标系」是模糊的、扭曲的, 那么再复杂的网络结构,也只是在一个错误空间里做精密计算。


📌 本篇聚焦的问题不是「Embedding 怎么用」,而是底层表示如何形成

  • 词、符号、token 是如何被映射到连续数学空间
  • 为什么模型不能直接理解文字
  • 向量空间里,「距离/方向/结构」究竟代表什么
  • Embedding 是如何在训练过程中被 Loss 一点点逼出来的
  • 为什么 RAG、检索、Agent 的上限,本质都卡在 Embedding 上
  • 以及:当 RAG 失败时,如何区分 数据问题切分问题Embedding 空间问题

这不是一篇科普文章, 而是一篇站在工程 + 数学直觉 + 可训练视角整理出的底层说明书。

适用场景包括:

  • 小模型训练 / 微调
  • RAG 系统
  • 行业模型
  • Agent 架构
  • 向量检索与语义搜索

这些场景都依赖一个稳定的语义坐标系。


📘 先定位置:Embedding 是语义坐标系

定位说明
本文不是科普,而是站在 工程 + 数学直觉 + 可训练视角
用于判断 RAG / 检索 / Agent / 行业模型中的
表示能力、检索边界与系统上限。

🧩 为什么要先理解 Embedding?

在整个模型训练流程中,Embedding 是第一道真正「有智能含量」的门槛。

可以这样概括:

Embedding 做不好,后面 Transformer 再复杂也救不回来。

但现实中,很多人对 Embedding 的理解停留在:

  • 调用现成 Embedding API
  • 往向量库里塞数据
  • 用 cosine 相似度查一查
  • 然后得出结论:

    “哦,Embedding 就是查相似度的”

这是一个非常危险、也非常浅层的理解

真实情况是:

Embedding 决定了模型「世界观」的坐标系。
坐标系一旦扭曲,后续所有检索、推理、工具调用,都只是在“错误空间”里做高精度运算。


🧠 一句话定义 Embedding(工程级)

Embedding = 把离散符号,映射到连续向量空间中的一种学习型函数

更工程一点说

token_id → R^d(d 维连续向量)

例如: “猫” → [0.12, -0.98, 1.43, …, 0.07] “狗” → [0.11, -0.95, 1.41, …, 0.09]

关键不是数值,而是:

  • ❌ 不是人为写死的
  • ✅ 是在训练中「自己长出来的」
  • ✅ 是被 Loss 持续塑形出来的(塑形方向由任务目标决定)

🔍 为什么模型不能直接用文字?

因为模型的世界里,只有三种东西:

  1. 数字
  2. 矩阵
  3. 向量运算

对模型来说:

  • 文字 ≠ 语义
  • 语言 ≠ 理解
  • 文本本身只是不可计算的符号序列

没有这样的数学空间,模型就无法:

  • 比较相似性
  • 建立抽象
  • 做泛化
  • 做迁移学习

Embedding 的使命是: 把「语言」翻译成「可以计算的几何结构」。


🧭 Embedding 在训练流程中的真实位置

flowchart TB
A[文本] --> B[Tokenizer(离散 ID)]
B --> C[Embedding(连续向量)]
C --> D[Transformer(关系建模)]
D --> E[Logits / Loss]

⚠️ 一个极其重要但常被忽略的事实: 在 Transformer 之前,模型已经身处一个「几何世界」里了。 Embedding 不是“附属模块”,而是整个计算世界的“坐标系”。


🧩 向量空间到底是什么?

很多教程会说: “向量空间就是高维空间”

这句话没错,但几乎没有工程价值。

工程级定义: 向量空间 = 一个可以度量「关系/方向/距离/结构」的空间。

在这个空间中:

  • 距离 ≈ 语义相似度
  • 方向 ≈ 概念变化
  • 聚类 ≈ 语义类别
  • 子空间 ≈ 领域知识

语义不是标签,而是几何结构。


🔥 一个常见但容易被低估的例子

Embedding(“国王”) - Embedding(“男人”) + Embedding(“女人”) ≈ Embedding(“王后”)

这不是魔法。原因是:

  • 「性别」在向量空间中形成了可线性表示的方向
  • 模型在训练中被“预测任务”逼着学会了这个结构

这里的结论是:

  • ❌ 语义 ≠ 标签
  • ✅ 语义 = 空间中的结构关系

🔥 更接近工程系统的两个例子

例子 A:代码域的“变更方向”

Embedding(“bug”) → (修复方向) → Embedding(“fix”) Embedding(“fix”) → (重构方向) → Embedding(“refactor”)

在代码检索 / 修复 Agent 中,这些“方向”是否存在,决定了模型能不能在空间里完成“从问题到解决”的迁移。

例子 B:业务域的“流程邻近性”

Embedding(“采购申请”)Embedding(“审批”) 应当更近 Embedding(“审批”)Embedding(“合同”) 应当更近 Embedding(“采购申请”)Embedding(“发票”) 不应当天然更近

在企业 RAG/Agent 中,检索是否能沿着流程“就近”推进,本质依赖 embedding 空间里是否存在“流程结构”。


🧠 Embedding 是怎么「学出来」的?

核心事实: Embedding 是在「预测下一个 token」的目标下,被动学出来的。

训练目标: 最大化 P(token_i | context)

为了降低 Loss,Embedding 会逐步学到:

  • 拉近语义相关的词
  • 推远无关的词
  • 构造 Attention 可直接使用的结构

Embedding 的质量,最终全部体现在 Loss 与泛化表现上。


🧨 RAG 失败的三种典型“空间形态”

当 RAG 检索“看起来像随机”,通常不是向量库的问题,而是 embedding 空间出了结构性问题:

  1. 空间塌缩(Collapse)

    • 表现:所有 query 检索出来都差不多
    • 本质:向量分布缺乏区分度,语义被压扁
  2. 类间混叠(Overlap / Entanglement)

    • 表现:不同主题互相串台,召回污染严重
    • 本质:不同语义簇没有拉开边界
  3. 方向失真(Broken Directions)

    • 表现:组合查询(A+B- C)效果极差,推理/迁移弱
    • 本质:空间里缺少可线性表示的“概念变化方向”

结论: RAG 的稳定性来自空间结构,而不是“多塞点文档”。

可以把这件事想成一张地图:健康的 Embedding 空间会让相近概念自然靠近;空间一旦变形,检索就像在一张印歪的地图上找路。

flowchart TB
  Q["用户问题 / Query"] --> S{"Embedding 空间"}
  S --> A["健康空间<br/>相似内容靠近,边界清晰"]
  S --> B["空间塌缩<br/>什么都像,什么都不准"]
  S --> C["类间混叠<br/>主题边界互相串台"]
  S --> D["方向失真<br/>组合查询和迁移走不动"]
  A --> R["召回稳定<br/>答案更容易落在正确区域"]
  B --> F1["结果重复<br/>检索像随机抽卡"]
  C --> F2["召回污染<br/>不同主题混进来"]
  D --> F3["推理断裂<br/>A + B 这类查询失效"]

⚙️ Embedding 的关键工程参数

① 向量维度(d)

模型规模常见维度
小模型256 / 512 / 768
中模型1024 / 2048
大模型4096 / 8192

维度 = 模型理解世界的分辨率 维度太低会丢结构,维度太高会带来训练成本与过拟合风险。

② 输入/输出 Embedding 是否共享 让「理解」和「表达」使用同一套语义空间,这是很多成熟模型默认采用的重要工程技巧。

③ LoRA/QLoRA 中是否微调 Embedding

选项特性
冻结 Embedding稳定,但领域适配慢
微调 Embedding语义更贴合行业,但更易过拟合

🧪 最小可验证实验(MVE):观察语义空间如何被 Loss 塑形

不训练大模型,也能验证 Embedding 的本质:

实验目标:

  • 给一组小词表(同类词 + 异类词)
  • 用一个极简的预测任务训练 embedding(几十到几百步)
  • 观察相似词的 cosine 相似度是否上升、异类是否下降

实验观察点:

  • “同一类别”的向量逐渐聚在一起
  • “不同类别”的向量逐渐拉开
  • 训练越稳定,空间结构越清晰

做过这个实验后,Embedding 就不再只是“查相似度工具”,而是一个会被任务目标塑形的语义空间。


🚀 Embedding 与 RAG 的本质关系

graph LR
A[文档] --> B[向量]
C[Query] --> B
B --> D[相似度计算]
D --> E[最近的语义邻居]

RAG = 在 Embedding 空间中做几何检索 RAG 的上限 = Embedding 的上限


🧠 架构级总结

flowchart LR
A[现实世界] --> B[Embedding]
B --> C[语义坐标系]
C --> D[Transformer]
D --> E[Agent/Tool/Memory]

Embedding 是:现实世界 → AI世界的投影函数


📌 核心结论

  1. Embedding 不是工具,而是语义空间本身
  2. 决定模型理解世界的方式(世界坐标系)
  3. 是被 Loss 一点点逼出来的(任务目标决定塑形方向)
  4. 决定 RAG/Agent 的上限(空间结构决定检索与迁移)
  5. 在小模型中容易被忽视,错误会沿着后续链路持续放大

🔮 下一篇预告

《Attention 是如何工作的?》

  • 注意力机制底层原理
  • 多头注意力工程实现
  • Attention 如何形成推理能力
  • 小模型中的注意力优化技巧

持续学习,持续记录,持续筛选

如果这篇对你有用,可以继续沿着主题读下去。

福星家和会长期记录 AI 技术、生活成长、真实好物与正向文化观察。产品体验、人物故事、教育内容、生活方式、文化作品和内容共创都欢迎邮件沟通,合作内容会清楚标注。