向量嵌入是把一段文字、一张图片或一段音频转换成一串固定长度数字的方法,英文叫 Embedding。这串数字相当于内容在一张高维地图上的坐标:意思越接近的内容,坐标靠得越近;意思差得越远,坐标离得越远。大模型本身并不直接比较文字,它先把内容变成这种坐标,再用坐标之间的距离判断相关性。语义搜索、RAG 知识库问答、推荐系统,底层都靠这一步把“意思像不像”变成一道可以计算的数学题。
先想象一张按意思排座位的地图
把所有内容都放进一张地图里:一端坐着“国王、女王、王冠”这一簇,另一端坐着“苹果、香蕉、果汁”那一簇。“国王”和“女王”的坐标会非常接近,因为它们总在相似的语境里出现;“国王”和“香蕉”则隔得很远。查询时也一样:你输入的问题先被转成一个坐标,系统要做的,就是在这张地图上找出离问题坐标最近的那几条内容,拿回来交给大模型组织答案。
这张地图有个反直觉的地方:它有几百甚至几千个维度,人脑画不出来,也没法像经纬度那样给每个维度起名字。第 17 个数字不代表“正式程度”,第 203 个数字也不代表“价格高低”,语义是分散在整串数字的组合里的。能用的只有一件事:比较两串数字的方向有多接近。
这串数字具体从哪一步来
文字进入模型后,先被切成 Token,也就是模型处理文字的最小单位。每个 Token 在模型的嵌入层里都对应一串初始数字,可以理解为这个词的出厂坐标。随后模型结合上下文调整这些数字:同样是“苹果”,出现在“苹果发布了新手机”里和出现在“吃一个苹果”里,调整后的表示并不相同,前者偏向公司,后者偏向水果。
实际做检索时,用的通常不是单个 Token 的向量,而是把一整句话、一个段落甚至一篇文档汇总成一条向量,行话叫句向量或文档向量。汇总之后,一段话就变成地图上的一个点。常见嵌入模型的向量维度从 768、1024 到 1536、3072 不等,维度大致决定了这张地图的精细程度和存储成本,但维度高不等于效果一定好,最终还是看模型在你的数据上找得准不准。
和三个容易混淆的概念分开看
很多人把向量嵌入和 Token、关键词检索混为一谈,其实三者处在完全不同的环节:
| 对比项 | Token | 关键词检索 | 向量嵌入检索 |
|---|---|---|---|
| 处理对象 | 把文字切成小块 | 在原文里找相同的词 | 把整段内容转成坐标 |
| 判断相关的方式 | 不判断,只是切分 | 字面是否命中 | 语义距离是否接近 |
| 遇到同义说法 | 不受影响 | 容易漏检 | 通常能找回来 |
| 遇到精确编号 | 不受影响 | 最可靠 | 可能找偏 |
举个例子:用户搜“怎么把工资卡里的钱转到支付宝”,知识库里写的却是“薪酬账户向第三方支付平台划转的流程”。关键词检索因为字面几乎对不上,很可能直接漏掉;向量嵌入因为两段话意思接近,坐标靠得近,反而能把它捞回来。反过来,查“订单号 A20261005 的物流状态”这种精确编号时,关键词检索一找一个准,向量嵌入却可能返回一堆编号长得像、实际毫不相干的结果。这也是成熟系统常把两者混用的原因,叫混合检索。
距离到底是怎么算出来的
最常用的算法是余弦相似度:只看两个向量方向夹角的大小,不太在意向量本身的长短。方向几乎一致时,得分接近 1;毫不相关时接近 0;方向相反时甚至会是负数。系统把知识库里所有向量和问题向量逐一算分,排序后取最靠前的几条,这就是所谓的 Top-K 检索。
要提醒一句:这个分数只是“像不像”的排序依据,不是“对不对”的概率。得分 0.86 不代表答案有 86% 的可信度,它甚至不能跨数据集直接比较,换一批文档、换一个模型,分数的分布都会变。把它当成相对名次,而不是绝对成绩,理解就不会跑偏。
它真正撑起来的四类应用
第一类是 RAG 和企业知识库问答:文档提前切段、转成向量存好,用户提问时先按语义找回最相关的几段,再连同问题一起交给大模型作答。第二类是语义搜索:电商搜“适合送妈妈的保暖礼物”、招聘平台搜“会做数据看板的产品经理”,靠的都是先理解意思再找货、找人,而不是逐字匹配。第三类是推荐、去重和聚类:新闻应用判断两篇报道是不是同一件事、把相似商品归到一起,本质都是在比向量距离。第四类是多模态检索:像 CLIP 这类模型把图片和文字映射到同一张地图上,于是输入一句话就能搜图,输入一张图也能找到配文,跨模态靠的正是同一套坐标。
三个流传很广的误解
第一个误解是“存进向量库,模型就学会了这些知识”。不对。向量库只是把资料的坐标提前算好放在门外,提问时临时取回来参考,模型参数本身没有变,关掉检索它依然不知道这些内容。第二个误解是“相似度高,找回来的就一定是对的”。语义接近和事实正确是两回事,一段写得流畅但数据写错的旧文档,完全可能因为措辞贴近问题而排在最前面。第三个误解是“每个数字都对应一种明确含义”。向量的单个维度通常没有可解释的名字,换一个模型,同段文字的整串数字会完全不同,两套坐标之间不能直接比较,更不能混着用。
用之前要先知道的几条限制
最硬的一条是:换嵌入模型,必须把存量文档全部重新算一遍。旧模型和新模型的地图不是同一张,混用等于拿着北京地铁图找上海的站点,算出来的距离毫无意义。第二条是切分方式直接影响效果:段落切得太长,一个向量里塞进多个主题,什么都沾一点、什么都不突出;切得太短,又会丢掉上下文,找回来的片段答不全问题。第三条是它对精确信息天然不敏感:产品型号、人名、否定句里的细微差别,在向量空间里可能挨得很近,涉及这类查询时要给关键词检索留位置,用混合检索补位。第四条是成本:维度越高、文档越多,向量占的存储和检索时的计算就越大,选型时要在效果和账单之间做取舍,没有必要无脑上最高维度。
下次再看到 RAG、语义搜索或者“以图搜图”这类功能,可以先在心里补上这一步:内容先被画进一张按意思排布的地图,系统按距离取材,大模型最后负责把取回来的材料说成人话。向量嵌入不负责生成答案,它负责的是在茫茫资料里,先把最值得看的几段找对地方。找对了,后面的生成才有靠谱的原料;找错了,再强的模型也只能对着错材料认真发挥。