资讯

嵌入模型 Embedding 是什么?文字怎么变成向量

2026-11-075 分钟阅读百科
TL;DR嵌入模型(Embedding Model)是把文字、图片等内容转换成一串固定长度数字(向量)的模型,目标是让意思相近的内容得到相近的数字。

嵌入模型(Embedding Model)是把文字、图片等内容转换成一串固定长度数字(向量)的模型,目标是让意思相近的内容得到相近的数字。打个比方:地图上每座城市都有经纬度,坐标挨得近,两地就是邻居;嵌入模型给“意思”标坐标,“怎么重置密码”和“忘了登录密码怎么办”字面差得远,坐标却落在同一片区域。

它是怎么回事:坐标、距离和对比学习

输入一段文本,模型输出一个向量,比如 OpenAI 的 text-embedding-3-small 默认是 1536 个数字,text-embedding-3-large 是 3072 个。单个数字没有含义,有意义的是相对位置。比较两段内容最常用余弦相似度:把两个向量看成从原点出发的箭头,夹角越小,意思越接近。

坐标是训练出来的。给模型成对的样本,问题配正确答案是正例,配无关内容是负例,训练目标是拉近正例、推远负例,这叫对比学习。MTEB 论文提到近年的嵌入模型大多这样微调,Qwen3 Embedding 的技术报告用的损失也基于对比学习里常见的 InfoNCE。

用起来分两步:先把文档切块,各算一个向量存进向量数据库;用户提问时把问题也算成向量,找出最近的几块,交给聊天模型作答。RAG(检索增强生成)里的检索,靠的就是它。它只产出向量,不生成文字,这是和聊天模型最直观的区别。

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

2013 年 1 月,Google 的 Tomas Mikolov 等人在 arXiv 发表 Efficient Estimation of Word Representations in Vector Space,提出 CBOW 和 Skip-gram 两种结构,论文称在 16 亿词的语料上学出高质量词向量用不到一天。词向量的短板是一个词只有一个坐标,不看上下文,“苹果”在手机和水果里是同一个向量。

BERT 之后,直接取它的输出平均值或 [CLS] 位置当句向量,Sentence-BERT 论文说效果相当差,常常不如平均 GloVe。而用 BERT 在一万句里找最相似的一对,要两两拼着算,约 65 小时。2019 年 Nils Reimers 和 Iryna Gurevych 发表 Sentence-BERT(EMNLP 2019),用孪生网络微调 BERT,每句话单独算向量再比余弦,同一任务约 5 秒。

之后是评测和瘦身。2022 年 10 月 MTEB 基准发布,覆盖 8 类任务、58 个数据集、112 种语言,测了 33 个模型。同年 NeurIPS 上,Kusupati 等人提出套娃表示学习(Matryoshka Representation Learning):让向量的前 m 维本身就是可用的低维向量,需要时直接截短。

现在在哪用

OpenAI 在 2024 年 1 月 25 日发布 text-embedding-3-small 和 text-embedding-3-large,上一代是 2022 年 12 月的 text-embedding-ada-002。官方给出的 MTEB 平均分从 61.0 升到 62.3 和 64.6,small 的价格比 ada-002 低 5 倍;dimensions 参数可以截短向量,官方举例,large 截到 256 维,在 MTEB 上仍超过没截的 1536 维 ada-002。

Claude 这边不一样:Anthropic 官方文档写明不提供自家的嵌入模型,推荐的合作方是 Voyage AI,示例里用 input_type 区分文档和查询。给 Claude 做知识库问答,典型搭法是别家嵌入模型管检索,Claude 管读结果作答。

Gemini 分两代。gemini-embedding-001 用 task_type 指定用途,如 SEMANTIC_SIMILARITY、CLASSIFICATION、CLUSTERING;较新的 gemini-embedding-2 是 Gemini API 里第一个多模态嵌入模型,把文本、图片、视频、音频和文档映射到同一个向量空间,不再用 task_type,而是要求把任务写进输入文本。

Qwen3 Embedding 由阿里通义实验室在 2025 年 6 月发布,有 0.6B、4B、8B 三个尺寸和配套的重排序模型,Apache 2.0 协议开源。它以 Qwen3 大模型为底座,取最后一层结束符位置的隐藏状态当向量,支持自定义指令和灵活的向量维度。

容易混的地方

嵌入和重排序是两回事。嵌入模型各算各的向量,文档能提前算好,快但判断粗;重排序模型把问题和候选文档放一起读,直接打相关分,细但慢。Qwen3 把两者分开发布,常见搭法是先用嵌入捞几十条候选,再交给重排序排顺序。

向量不能跨模型混用。每个模型有自己的坐标系,维度也不同,拿 A 模型算的问题去搜 B 模型算的文档,结果没有意义。查询和文档必须用同一个模型、同一个维度,换模型就得把文档全部重算一遍。Gemini 文档也提醒,文档用了哪种任务格式,查询也要用同样的格式。

榜单分数只能参考。MTEB 论文自己的结论是没有哪种方法在所有任务上占优。我们 AI主线 的建议是:别只看分数,拿手头二三十个真实问题和对应文档,在两三个候选模型上各跑一遍检索,看正确文档能不能排进前几名。控成本也有两招:截短维度省存储;长文档先切块,因为每个模型对单条输入都有长度上限。