AI 是怎么"读懂"一段话的?—— Embedding 向量化入门
上一篇文章我们聊了向量数据库,知道它能把"听起来像"的内容找出来。但问题是:一段文字,是怎么变成一串数字的?
比如"苹果"这两个字,怎么变成了 [0.12, 0.88, -0.34, ...] 这样一串数字?
这就是今天要聊的主题——Embedding,中文叫"向量化"或者"文本嵌入"。
大模型不识字
一个很多人不知道的事实是:大模型根本"不识字"。
你把"苹果"两个字发给 AI,AI 看到的不是"苹果"这两个汉字,而是一串数字。
为什么?因为计算机只认识数字。你输入的任何东西——文字、图片、声音——最终都要转换成数字,计算机才能处理。
那怎么把文字变成数字呢?最简单的办法是给每个字编个号。比如"我"是 1,"你"是 2,"苹"是 327,"果"是 156。但这种方法有个问题:编号不能反映字和字之间的关系。"苹果"和"香蕉"的编号可能差了十万八千里,但它们在意思上是很接近的——都是水果。
所以我们需要一种更好的方式:让意思相近的词,对应的数字也相近。
这就是 Embedding 要做的事。
用"地图坐标"来理解
Embedding 的核心思想其实很简单:把每个词放在一个"语义地图"上,意思相近的词,在地图上的位置也相近。
让我用现实世界的地图来类比。
北京、上海、广州,都是中国的大城市。在地图上,它们的坐标虽然不同,但都"在中国范围内",所以彼此之间的距离,跟北京到纽约的距离比起来,要近得多。
同样的道理,"猫"、"小猫"、"猫咪"这三个词,在"语义地图"上挨得非常近,因为它们说的是同一个东西。而"猫"和"汽车"在语义地图上就隔得很远,因为它们完全是两码事。
向量是什么?
向量,你可以把它理解为一个点在空间中的坐标。
在现实世界中,我们需要经度和纬度两个数字来定位一个地方。比如北京是(39.9, 116.4),上海是(31.2, 121.5)。
在"语义地图"中,我们需要更多数字来定位一个词。比如可能是 768 个数字,或者 1024 个数字。为什么需要这么多?因为语言的含义比地理位置复杂得多——一个词有感情色彩、有语境、有多义性,需要更多的维度才能准确描述。
所以,"苹果"这个词,经过 Embedding 之后,就变成了一串 768 位的数字,比如:
”苹果” -> [0.12, 0.88, -0.34, 0.05, 0.67, ...]这串数字就是"苹果"在语义地图上的坐标。有了这个坐标,我们就可以计算任意两个词之间的距离了。
一个神奇的数学现象
Embedding 最神奇的地方在于:向量的加减法,居然能做语义推理。
来看一个著名的例子:
”国王” - ”男人” + ”女人” ≈ ”女王”这是什么意思?把"国王"的向量减去"男人"的向量,再加上"女人"的向量,得到的结果,和"女王"的向量非常接近。
也就是说,Embedding 自动学会了"国王之于男人,如同女王之于女人"这个关系。没有人教过它这个规则,它完全是通过阅读海量文本自己"悟"出来的。
再比如:
”巴黎” - ”法国” + ”中国” ≈ ”北京”"巴黎之于法国,如同北京之于中国"——这个关系也被 Embedding 自动捕捉到了。
这就是 Embedding 的强大之处:它不仅能表示一个词的意思,还能表示词与词之间的关系。
怎么判断两段话"意思相近"?
有了 Embedding,判断两段话是不是"意思相近"就变得很简单了。
假设你有一段话 A:"这家的红烧肉很好吃。"
另一段话 B:"他们的家常菜做得不错,尤其是猪肉。"
这两段话在字面上完全不同,但 Embedding 把它们的向量计算出来之后,你会发现这两个向量在语义地图上的距离很近。
为什么?因为 Embedding 模型在训练的时候,读过了海量的文本,它知道"红烧肉"和"猪肉"有关,知道"好吃"和"不错"是近义词,知道"这家"和"他们"都可以指代一个餐厅。
所以它能把字面完全不同但意思相近的内容,映射到向量空间中相近的位置。
小结
今天聊了三个核心概念:
- Embedding 是什么
:把文字变成一串数字,让计算机能"理解"文字的意思。 - 向量是什么
:语义地图上的坐标,意思相近的词,坐标也相近。 - 为什么神奇
:向量加减法能做语义推理,比如"国王 - 男人 + 女人 = 女王"。
一句话总结:Embedding 就是 AI 的"翻译官",把人类语言翻译成 AI 能懂的数学语言。
有了 Embedding,AI 就能"读懂"文字了。但这还不够——AI 只能"说话",不能"做事"。怎么让 AI 从"会说"变成"会做"?这就是下一篇文章要聊的——AI Agent。
下一篇预告:从"鹦鹉"到"助手" —— AI Agent 是怎么学会"做事"的
夜雨聆风