词向量 (Embedding)

在上一节讲 RAG 时,我们提到过一个关键步骤:当用户提问时,系统会先去知识库里搜索相关的资料。

很多小伙伴可能觉得很简单,这不就和我们平常在电脑上使用 “Ctrl + F” 快捷键来搜索文件一样吗?其实,这完全是两码事。

为了让大模型能够真正理解我们搜的是什么意思,我们会在底层使用了一项非常关键的技术——词向量。

什么是词向量?

词向量,英文叫 “Embedding”。我们都知道,“向量” 在数学意义上指的是 “带方向的数字”。而词向量,就是把人类的文字(比如一个词、一句话、一篇文章等)转换为一长串数字的技术。

什么是词向量(Embedding)?将文字、词语、句子,转化为计算机能懂的数字向量

要知道,计算机的底层是完全不懂中文、英文的,它只会做数学计算。如果我们直接把 “苹果” 这两个汉字丢给它,它根本没法理解这是个啥。

为了让计算机能够处理文字,我们需要使用一个翻译工具,也就是——词向量。它能把 “苹果” 这个词,转换成类似下面这样的一串浮点数(这是一个数组):

[0.12, -0.45, 0.89, 0.33, -0.11, ...]

这样一串数字,在大模型中就叫做 “向量”。经过这么一转换,一段原本毫无数学逻辑的纯文字,就变成了一组计算机能够精确计算的数字。

词向量转换示例:通过词向量模型,把 “苹果” 翻译成一长串计算机能精确计算的浮点数数组

这里小伙伴们就会问了:“‘方向’ 到底怎么理解?为什么非要搞成一堆小数呢?” 其实,向量数组里的每一个小数,都代表着大模型在暗中给这个词的某个 “特征” 打的分。

为了方便理解,假设我们现在只用 2 个数字(二维数组)来代表一个词:第一个数字代表 “水果相关度”,第二个数字代表 “科技相关度”:

  • 苹果(吃的水果):[0.9, 0.1](水果分极高,科技分极低)
  • 香蕉:[0.8, 0.0](水果分极高,科技分为零)
  • 苹果(科技公司):[0.1, 0.9](水果分极低,科技分极高)

现在,我们把这 3 个数组当成 X 轴和 Y 轴上的坐标点,画在图纸上,再从原点向这 3 个点分别画一个箭头。此时你会惊奇地发现:代表 “苹果(水果)” 和 “香蕉” 的两个箭头,它们指的方向几乎是一模一样、挨得非常近。而代表 “苹果(公司)” 的箭头,则指向了完全不同的方向。

词向量二维坐标系图解:意思相近的 “苹果(水果)” 与 “香蕉” 空间距离近,与“苹果(公司)” 距离远

这,就是词向量的本质:

  • 词向量:就是把文字变成了一排小数(数组)。
  • 方向:代表了词的意思。两个词的意思越接近,它们数组里的数值就越相似,在数学空间里指的 “方向” 就越一致(空间距离越近)。

因此,大模型不需要真正 “懂” 什么是苹果,它只需要算出两个词的数组方向差不多,就知道它们是近义词。

这也是为什么在 RAG(知识库检索)中,哪怕你搜的是 “手机”,而文档里写的是 “移动终端”,大模型依然能够帮你精准找出来——因为它俩在底层的向量方向是高度一致的。

在真实的大模型中(比如ChatGPT),坐标轴并不止 2 个,而是高达 1536 个维度(不同的大模型会有不同)!这 1536 个隐藏的维度,包含了人类语言中细腻的情感、语法、行业背景等各种特征。任何一句话被丢进去,都会变成一个包含 1536 个数字的超长坐标。

大模型词向量多维坐标系示意图:包含情感与语境的高达 1536 维的数学空间

词语之间也能做加减法

词向量神奇的地方还不止于此。既然词的 “意思” 能变成数学坐标,那它们之间居然还能做 “加减法”!经典的词向量研究里有个著名的例子:拿 “国王” 的向量,减去 “男人”、再加上“女人”,算出来的结果竟然和 “女王” 的向量非常接近:

国王 − 男人 + 女人 ≈ 女王

这恰恰说明,向量是真的把 “性别”、“身份” 这些抽象含义,都编码进了那一串数字里。(这只是个帮助理解的经典示意,实际不会精确到这种程度。)

为什么不直接用传统的 “关键词匹配”?

很多小伙伴会问:“传统的搜索引擎不也是搜文字吗?RAG 为什么不直接去匹配关键词,非要费这么大劲把文字转成数字呢?”

这是因为传统的搜索引擎(使用 “关键词匹配”),有一个致命的缺陷:它只认字,不认意思。

假设用户在知识库里搜索:“西红柿怎么炒好吃?” 如果使用传统的关键词匹配,系统会死死盯着 “西红柿” 这 3 个字去文章里找。可知识库里偏偏有一篇写的是“番茄炒蛋的做法”,由于全文压根没出现 “西红柿” 3个字,传统搜索就会直接判定:找不到相关内容。

而词向量技术(Embedding )彻底解决了这个问题——它关注的是文字背后的 “语义(意思)”。

在词向量眼里,“西红柿” 和 “番茄” 转换出来的数字串非常相似。它一对比数字,立马就能判断出这俩说的是同一个东西,于是就能精准地把 “番茄炒蛋” 那篇文章给找出来。

传统关键词匹配与词向量搜索对比:以 “西红柿” 匹配 “番茄炒蛋” 为例的语义精准检索图解

词向量是怎么判断 “意思相近” 的?

为了让小伙伴们更直观地理解,我们可以把 Embedding 生成的数字串,想象成一张多维地图上的 “坐标”。

在这张由 AI 构建的巨大 “语义地图” 上:

  • 凡是意思相近的词,它们的坐标就会紧紧挨在一起。比如 “猫” 和 “狗”,它们都是宠物,从原点指向它们的箭头方向几乎重合。
  • 凡是意思无关的词,它们的坐标就会离得非常远。比如 “猫” 和 “汽车”,它们属于不同分类,从原点指向它们的箭头方向指向的是不同方向。

词向量多维语义地图坐标图解:意思相近的猫和狗箭头紧挨,意思无关的汽车指向不同方向

当用户提出一个问题时,Embedding 模型也会先把这个问题转换成空间里的一个坐标点。

检索系统要做的,就是在这个数学空间里,计算用户问题的这根箭头、和知识库里所有文档箭头之间的 “夹角”。这个计算过程,在 AI 业界有个专门的术语——余弦相似度(Cosine Similarity)

两根箭头的夹角越小(方向越一致),就说明意思越相关。这,就是词向量能够彻底甩开 “死记硬背” 的关键词、实现精准语义检索的底层逻辑。

词向量余弦相似度(Cosine Similarity)通俗图解:向量箭头夹角越小,代表意思越相关

分工不同

在真实的 RAG 架构中,并不是什么活儿都靠大模型一个人干。这里我们梳理一下它们各自的分工:

  • 大模型(LLM):接收文字、生成文字。
  • 词向量模型(Embedding):把文字转换为向量(1536维的数学坐标)。
  • 向量数据库:负责计算向量之间的夹角(也就是评估方向)。

因此小伙伴们不要以为什么活儿都是大模型自己干的,很多脏活累活,它其实都外包给了其他独立的小模型或小系统。

词向量在 RAG 中的工作流程

搞懂了基本原理,我们来看看在真实的 RAG 开发中,词向量技术是如何发挥作用的。一般分为两个阶段:

1. 录入资料阶段(准备知识库)

  • 第 1 步:切分文本。把公司长达几万字的规章制度文档,切分成一小段一小段的文本(业界称为 Chunk)。
  • 第 2 步:转为向量。使用词向量(Embedding)技术,把切好的每一小段文本,统统转换成一串串 1536 维的数字向量。
  • 第 3 步:存入数据库。把这些数字向量保存到一个专门的地方(向量数据库)妥善存起来。

词向量在 RAG 知识库中的录入阶段流程:文档切分(Chunk)、转为向量并存入向量数据库

需要注意的是,第 1 步的 “切分(Chunk)” 其实是把双刃剑。如果切得不好,把本该在一起的内容切散到了两段里,或者检索时没命中那一段,大模型就拿不到完整信息了——这正是上一篇 “什么是 RAG” 文章中说的、AI 有时会 “漏掉你长文档里细节” 的根本原因。所以怎么把文档切得恰到好处,是 RAG 工程里一门重要的学问。

2. 搜索问答阶段(用户提问)

  • 第 1 步:用户提问。用户在输入框里提问,比如 “出差报销流程是什么?”。
  • 第 2 步:转为向量。系统再次使用词向量技术,把用户的这句话也转换成数字向量。
  • 第 3 步:检索对比。系统拿用户问题的数字向量,去刚刚存好的一堆文档向量里进行数学比对。
  • 第 4 步:总结回答。把夹角最小、方向最一致(最相关)的那几段规章制度提取出来,发给大模型,让大模型总结回答。

词向量在 RAG 知识库中的搜索问答流程:用户提问转为向量,检索对比夹角后生成答案

最后顺便提一下,词向量(Embedding)的本事,远不止用在 RAG 上。我们平常刷视频、逛购物网站时看到的 “猜你喜欢”,搜索引擎给出的 “相关结果”,还有各种内容去重、智能分类,背后用的其实都是同一套 “把万物变成向量、再比距离” 的思路。可以说,Embedding 是整个 AI 时代一块极其底层、又无处不在的基石。

上一篇:

下一篇:

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号