Skip to content

03 · Embedding:把文字变成坐标 ​

学完你能说出:

  • Embedding 是把一段文字变成一串数字(向量),意思相近的文字,向量也相近。
  • 怎么用「余弦相似度」算两段文字像不像,能用简单数字算一遍。
  • 为什么 RAG 的检索要靠 Embedding,而不是关键词搜索。

先看地图 ​

前两篇讲大模型怎么「接龙」、怎么「看上下文」。这一篇讲文字怎么变成机器能算的数字。它是 RAG 的地基:RAG 检索资料,靠的就是比较向量。

本篇讲 4 个点:① 向量是什么 → ② 相似度怎么算 → ③ 为什么要用向量表示文字 → ④ Embedding 模型和大模型的区别。

一句话本质 ​

Embedding(嵌入)= 把文字放进一个「意思空间」里,给它一个坐标。意思越接近,坐标离得越近。

生活类比:地图上的城市 ​

  • 每个城市在地图上有经纬度两个数字。北京和天津离得近,北京和广州离得远。
  • Embedding 也是给每段文字一个「坐标」,只不过不是 2 个数,而是几百到几千个数(比如 768 维、1024 维)。
  • 「猫」和「小猫」离得很近,「猫」和「汽车」离得很远。

一步步看:用 2 维向量算一遍 ​

真实向量有几百维,我们先用 2 维(只有两个数)来理解。假设:

文字向量(示意)
「猫」(1, 2)
「小猫」(2, 4)
「汽车」(2, −1)

相似度看「方向」:余弦相似度(Cosine Similarity)

cos = (a·b) / (|a| × |b|)
      点积       各自长度相乘
  • 猫 vs 小猫:点积 = 1×2 + 2×4 = 10;长度 = √5 和 √20;cos = 10 / √100 = 1.0 → 方向完全一样,最相似。
  • 猫 vs 汽车:点积 = 1×2 + 2×(−1) = 0;cos = 0 → 互相垂直,毫无关系。

记住这条规则:方向相同是 1,垂直是 0,完全相反是 −1。「小猫」的向量比「猫」长一倍,但方向一样,所以相似度仍然是 1。这就是为什么要看方向,不看长度。

为什么这么设计 ​

为什么要把文字变成向量? ​

  • 问题:计算机只会算数字。直接比较文字只能看「字面是否一样」,「猫」和「喵星人」字面上毫无交集。
  • 方案:用一个训练好的模型,把文字映射成向量,让意思相近的文字向量也相近。
  • 好处:「像不像」变成了一个可以计算的数字,可以排序、可以在百万条里快速找最近的几条。

一句话答法

把文字变成向量,就能用数学计算语义相似度,从而做语义搜索、聚类、推荐;而且能识别字面不同、意思相同的内容。

为什么 RAG 检索用 Embedding,而不只用关键词搜索? ​

  • 问题:用户问「怎么请假」,文档里写的是「休假申请流程」。关键词搜索一个字都对不上,就找不到。
  • 方案:问题和文档都转成向量,比较语义距离。
  • 好处:同义词、换种说法都能找到。

一句话答法

关键词只匹配字面,Embedding 匹配语义,「请假」能找到「休假申请」。实际项目里两者常常一起用(混合检索),后面 RAG 篇会讲。

为什么用余弦相似度,而不是直接算距离? ​

  • 问题:一段长文和一段短文,向量的「长度」可能不同,但讲的是同一件事。
  • 方案:余弦只看方向、不看长度。
  • 好处:不会因为文字长短不同而误判。不少 Embedding 模型输出的向量已经归一化(长度都是 1),这时余弦和点积是一回事。

一句话答法

余弦相似度只看向量方向,和长度无关,更适合衡量语义是否一致。

Embedding 模型 vs 大模型 ​

Embedding 模型大模型(聊天用的)
输入一段文字一段文字
输出一个向量(一串数)接着写的文字
用途检索、比较相似度生成回答
在 RAG 里干什么找资料根据资料写答案

两者是不同的模型,各干各的。换了 Embedding 模型,库里所有文档都要重新算向量,因为不同模型的「坐标系」不通用。

英文术语拆解 ​

术语拆开看一句话意思
Embeddingembed 嵌入 + -ing把文字「嵌」进一个数字空间,得到向量
Vector向量一串有顺序的数字,例如 (1, 2)
Dimension维度向量里有几个数,例如 768 维
Cosine Similaritycosine 余弦 + similarity 相似度用夹角的余弦衡量两个向量方向是否一致
Dot Productdot 点 + product 乘积点积:对应位置相乘再相加
Normalizenormal 标准的 + -ize 使…归一化:把向量长度缩放成 1
Semantic Searchsemantic 语义的 + search 搜索按意思而不是按字面搜索

面试怎么问 ​

Q:什么是 Embedding?在 RAG 里起什么作用?

Embedding 是把文本映射为稠密向量的表示,语义相近的文本在向量空间中距离也近。RAG 里,文档切块后用 Embedding 模型转成向量存入向量库;查询时把问题也转成向量,按相似度找出最相关的文档块。

Q:为什么常用余弦相似度?

余弦只衡量方向,不受向量长度影响,更能反映语义是否一致。如果向量已经归一化,余弦相似度等于点积,计算更快。

Q:换了 Embedding 模型要注意什么?

不同模型的向量空间不兼容,必须用新模型把库里所有文档重新向量化;查询和文档必须用同一个模型。

容易混的地方 ​

  • 向量维度越高越好 ✗:维度高,表达能力强一些,但存储和计算更贵。要看效果和成本。
  • 相似 ≠ 正确:向量相似只说明「话题相近」。「年假 5 天」和「年假 10 天」的向量可能非常接近,所以检索结果还需要后续筛选。
  • 查询和文档要用同一个模型:用 A 模型存库、用 B 模型查询,结果会完全乱掉。

和其他知识的连接 ​

自测 3 问 ​

Q1:用一个生活类比解释 Embedding。

点开看答案

像地图上的经纬度:每段文字被放到一个「意思空间」里,得到一个坐标(向量)。意思相近的文字坐标离得近,比如「猫」和「小猫」很近,「猫」和「汽车」很远。

Q2:向量 (1, 2) 和 (2, 4) 的余弦相似度是多少?为什么?

点开看答案

1。点积 = 2 + 8 = 10,长度乘积 = √5 × √20 = 10,10/10 = 1。两个向量方向完全相同(一个是另一个的 2 倍),余弦只看方向,所以相似度是 1。

Q3:为什么 RAG 检索要用 Embedding?只用关键词搜索有什么问题?

点开看答案

关键词搜索只匹配字面,用户问「怎么请假」,文档写「休假申请流程」就搜不到。Embedding 按语义匹配,换种说法也能找到。实际项目常把两者结合(混合检索)。

✅ 验收清单 ​

  • 能用「地图坐标」的类比解释 Embedding
  • 能手算两个 2 维向量的余弦相似度
  • 能说出余弦相似度的取值含义(1 / 0 / −1)
  • 能讲清「为什么 RAG 检索用 Embedding」(问题 → 方案 → 好处)
  • 能说出 Embedding 模型和聊天大模型的区别,以及为什么换模型要重建索引

下一步该懂什么 ​

  • 有了向量,怎么在几百万条里快速找到最近的几条?→ 检索与重排
  • 先回到大模型本身:怎么写提示词、怎么调参数让它更听话?→ Prompt 与采样参数