在上一节讲 RAG 时,我们提到过一个关键步骤:当用户提问时,系统会先去知识库里搜索相关的资料。
很多小伙伴可能觉得很简单,这不就和我们平常在电脑上使用 “Ctrl + F” 快捷键来搜索文件一样吗?其实,这完全是两码事。
为了让大模型能够真正理解我们搜的是什么意思,我们会在底层使用了一项非常关键的技术——词向量。
什么是词向量?
词向量,英文叫 “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 个数字的超长坐标。

词语之间也能做加减法
词向量神奇的地方还不止于此。既然词的 “意思” 能变成数学坐标,那它们之间居然还能做 “加减法”!经典的词向量研究里有个著名的例子:拿 “国王” 的向量,减去 “男人”、再加上“女人”,算出来的结果竟然和 “女王” 的向量非常接近:
国王 − 男人 + 女人 ≈ 女王
这恰恰说明,向量是真的把 “性别”、“身份” 这些抽象含义,都编码进了那一串数字里。(这只是个帮助理解的经典示意,实际不会精确到这种程度。)
为什么不直接用传统的 “关键词匹配”?
很多小伙伴会问:“传统的搜索引擎不也是搜文字吗?RAG 为什么不直接去匹配关键词,非要费这么大劲把文字转成数字呢?”
这是因为传统的搜索引擎(使用 “关键词匹配”),有一个致命的缺陷:它只认字,不认意思。
假设用户在知识库里搜索:“西红柿怎么炒好吃?” 如果使用传统的关键词匹配,系统会死死盯着 “西红柿” 这 3 个字去文章里找。可知识库里偏偏有一篇写的是“番茄炒蛋的做法”,由于全文压根没出现 “西红柿” 3个字,传统搜索就会直接判定:找不到相关内容。
而词向量技术(Embedding )彻底解决了这个问题——它关注的是文字背后的 “语义(意思)”。
在词向量眼里,“西红柿” 和 “番茄” 转换出来的数字串非常相似。它一对比数字,立马就能判断出这俩说的是同一个东西,于是就能精准地把 “番茄炒蛋” 那篇文章给找出来。

词向量是怎么判断 “意思相近” 的?
为了让小伙伴们更直观地理解,我们可以把 Embedding 生成的数字串,想象成一张多维地图上的 “坐标”。
在这张由 AI 构建的巨大 “语义地图” 上:
- 凡是意思相近的词,它们的坐标就会紧紧挨在一起。比如 “猫” 和 “狗”,它们都是宠物,从原点指向它们的箭头方向几乎重合。
- 凡是意思无关的词,它们的坐标就会离得非常远。比如 “猫” 和 “汽车”,它们属于不同分类,从原点指向它们的箭头方向指向的是不同方向。

当用户提出一个问题时,Embedding 模型也会先把这个问题转换成空间里的一个坐标点。
检索系统要做的,就是在这个数学空间里,计算用户问题的这根箭头、和知识库里所有文档箭头之间的 “夹角”。这个计算过程,在 AI 业界有个专门的术语——余弦相似度(Cosine Similarity)。
两根箭头的夹角越小(方向越一致),就说明意思越相关。这,就是词向量能够彻底甩开 “死记硬背” 的关键词、实现精准语义检索的底层逻辑。

分工不同
在真实的 RAG 架构中,并不是什么活儿都靠大模型一个人干。这里我们梳理一下它们各自的分工:
- 大模型(LLM):接收文字、生成文字。
- 词向量模型(Embedding):把文字转换为向量(1536维的数学坐标)。
- 向量数据库:负责计算向量之间的夹角(也就是评估方向)。
因此小伙伴们不要以为什么活儿都是大模型自己干的,很多脏活累活,它其实都外包给了其他独立的小模型或小系统。
词向量在 RAG 中的工作流程
搞懂了基本原理,我们来看看在真实的 RAG 开发中,词向量技术是如何发挥作用的。一般分为两个阶段:
1. 录入资料阶段(准备知识库)
- 第 1 步:切分文本。把公司长达几万字的规章制度文档,切分成一小段一小段的文本(业界称为 Chunk)。
- 第 2 步:转为向量。使用词向量(Embedding)技术,把切好的每一小段文本,统统转换成一串串 1536 维的数字向量。
- 第 3 步:存入数据库。把这些数字向量保存到一个专门的地方(向量数据库)妥善存起来。

需要注意的是,第 1 步的 “切分(Chunk)” 其实是把双刃剑。如果切得不好,把本该在一起的内容切散到了两段里,或者检索时没命中那一段,大模型就拿不到完整信息了——这正是上一篇 “什么是 RAG” 文章中说的、AI 有时会 “漏掉你长文档里细节” 的根本原因。所以怎么把文档切得恰到好处,是 RAG 工程里一门重要的学问。
2. 搜索问答阶段(用户提问)
- 第 1 步:用户提问。用户在输入框里提问,比如 “出差报销流程是什么?”。
- 第 2 步:转为向量。系统再次使用词向量技术,把用户的这句话也转换成数字向量。
- 第 3 步:检索对比。系统拿用户问题的数字向量,去刚刚存好的一堆文档向量里进行数学比对。
- 第 4 步:总结回答。把夹角最小、方向最一致(最相关)的那几段规章制度提取出来,发给大模型,让大模型总结回答。

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