· 预计阅读 6 分钟

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 的关键工程参数

① 向量维度(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世界的投影函数


📌 必须记住的 5 件事

  1. Embedding 不是工具,而是语义空间本身
  2. 决定模型理解世界的方式(世界坐标系)
  3. 是被 Loss 一点点逼出来的(任务目标决定塑形方向)
  4. 决定 RAG/Agent 的上限(空间结构决定检索与迁移)
  5. 在小模型中最容易被忽视却最致命(错了就全盘错)

🔮 下一篇预告

《Attention 是如何工作的?》

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