资讯

嵌入向量 Embedding Vector 是什么?

2026-11-075 分钟阅读百科
TL;DR嵌入向量(Embedding Vector)是模型把一段文字、一张图片或一段代码转成的一串定长数字,意思相近的内容,对应的数字串在空间里也挨得近。你可以把它想成地图上的坐标:北京和天津的经纬度离得近,和乌鲁木齐离得远。

嵌入向量(Embedding Vector)是模型把一段文字、一张图片或一段代码转成的一串定长数字,意思相近的内容,对应的数字串在空间里也挨得近。你可以把它想成地图上的坐标:北京和天津的经纬度离得近,和乌鲁木齐离得远。区别是它的“地图”要用几百到几千个数来定位,量的也不是公里数,而是意思上有多像。

它是怎么回事:一段话怎么变成一串数字

做法很朴素。把文本送进嵌入模型,接口返回一个浮点数列表,存进向量数据库;查询时把问题也转成向量,找离得最近的那几条。以 OpenAI 为例,text-embedding-3-small 默认输出 1536 维,text-embedding-3-large 默认 3072 维。

“近”最常用余弦相似度来量:看两个向量的夹角,取值在 -1 到 1 之间,越接近 1 越像。按 OpenAI 的说明,它的向量长度已归一化为 1,直接算点积,排序和余弦相似度一致,还更快。

至于每一维代表什么,答案是没有固定含义。word2vec 一类方法里,一个词的意思摊在所有维度上,算法没有给任何一维预先指派含义,意思只存在于向量之间的相对位置里。

从哪来的:从词向量到句向量

源头可以追到 2003 年。Yoshua Bengio 等人在 JMLR 发表《A Neural Probabilistic Language Model》,要治的是 n-gram 模型的老毛病:测试时的词序列,很可能训练里一次都没见过。他们让模型同时学每个词的分布式表示和词序列的概率,这样没见过的句子,只要由相近的词组成,也能拿到较高概率。

2013 年,Tomas Mikolov、Kai Chen、Greg Corrado、Jeffrey Dean 在 Google 发表《Efficient Estimation of Word Representations in Vector Space》,卖点是便宜:论文称在 16 亿词的数据上不到一天就能训出高质量的词向量。同年 Mikolov、Yih、Zweig 的 NAACL 论文展示了那个著名例子:“King - Man + Woman”算出的向量,最接近“Queen”。

从词走到整句,靠的是 2019 年的 Sentence-BERT(Reimers 和 Gurevych,EMNLP 2019)。当时用 BERT 判断两句话像不像,要把两句一起送进网络,在 1 万个句子里找最相似的一对,约需 5000 万次推理、65 小时。SBERT 改用孪生网络,让每句话单独得到能直接算余弦的句向量,同样的事降到约 5 秒。

现在在哪用:模型里面和外面各一份

先说里面。Transformer 论文里,模型的第一步就是用学出来的嵌入,把输入 token 变成 d_model 维的向量,原论文取 512。这是模型内部的零件,服务于模型自己的计算。

再说外面,也就是单独的嵌入模型。OpenAI 的 text-embedding-3 系列能用 dimensions 参数缩短输出,官方给的对比是:3-large 缩到 256 维,在 MTEB 基准上仍好过 1536 维的 ada-002。这种“能截短”的本事,对应 2022 年 NeurIPS 的 Matryoshka Representation Learning(Kusupati 等):训练时让向量的前 m 维本身就是够用的低维向量,像套娃一层套一层。

Google 的 gemini-embedding-001 可以用 outputDimensionality 截断输出,还有 task_type 参数,告诉模型这段文字是检索用的查询(RETRIEVAL_QUERY),还是被检索的文档(RETRIEVAL_DOCUMENT)。阿里的 Qwen3-Embedding 开源了 0.6B、4B、8B 三档,输出维度分别是 1024、2560、4096,支持自定义维度和任务指令,取最后一层 [EOS] 标记的隐藏状态作为向量,采用 Apache 2.0 许可。

Claude 这边先说清楚:Anthropic 官方文档写明不提供自家的嵌入模型,推荐的服务商是 Voyage AI。所以常见搭法是 Claude 管生成,嵌入另接一家,Voyage 的接口用 input_type 区分 document 和 query。

容易混的地方

第一个坑是把不同的“向量”混为一谈。word2vec 是一个词一个固定向量,句向量模型是整段文本一个向量;各家模型的维度、训练方式不同,向量不能互换。我们 AI主线 的建议是:同一个知识库里,文档和查询用同一个模型、同一个维度,换模型就整库重算。

第二个坑是把“相似”当“正确”。向量检索找的是意思上挨得近的内容,问题和某段文档挨得近,不代表那段里有答案。Qwen3 的报告里同时发布了重排序模型,在检索任务上成绩比单用嵌入模型更好,所以别把余弦相似度的数值直接当成置信度。

第三个坑是成本。按 32 位浮点存,一条 3072 维的向量约 12KB,一百万条是 12GB 出头;缩到 768 维,体积降到四分之一。要缩,OpenAI 文档的建议是用 dimensions 参数,别自己去截。