Embedding向量化
把文本或图片转成一串数字(向量),让计算机能用数学算「意思有多接近」
Embedding(向量化 / 嵌入)是把一段文本、一张图片、一段音频转换成一个固定长度的数字数组——通常是几百到几千个浮点数。转换的规则由一个专门的 Embedding 模型学出来,目标是:意思相近的内容,向量在空间里也靠得近。
这样一来,"这两段话意思像不像"这个原本很难的语义问题,就变成了一个可以精确计算的几何问题:算两个向量的夹角(余弦相似度)。
它带来的关键能力
传统的关键词检索是字面匹配:搜"怎么退款"就找不到写着"如何申请退货款项"的文档。向量检索比的是意思,能跨过用词差异。这是语义搜索、推荐、去重、聚类以及整个 RAG 架构的基础。
经典的直觉例子:在一个训练良好的向量空间里,"国王"和"皇帝"的向量距离很近,和"苹果"很远;而"国王 − 男人 + 女人"算出来的位置,离"女王"很近。语义关系被编码进了几何结构。
用的时候会踩的坑
- 模型必须前后一致。建索引和查询必须用同一个 Embedding 模型;换模型就得把整库重新向量化,没有捷径。
- 维度不是越高越好。高维度带来更强的表达力,也带来更大的存储和更慢的检索。很多场景中小维度模型已经够用。
- 中文要选对模型。用只在英文语料上训的模型处理中文,效果会明显掉。选支持中文或多语言的模型。
- 相似不等于相关。两段话都在讲退款政策,向量很近,但一段是国内政策一段是海外政策——检索会同时召回,得靠元数据过滤或 Rerank 分开。
- 长文本要先切块。Embedding 模型有输入长度上限,而且把一整篇文档压成一个向量会丢掉几乎所有细节。切块的粒度直接决定检索质量。
和别的东西的区别
- 和向量数据库:Embedding 是产生向量的模型,向量数据库是存储和检索向量的系统。前者是转换,后者是仓库。
- 和 Token:Token 是模型切分文本的最小单位,是给生成用的;Embedding 是整段内容的语义表示,是给比较用的。两者都涉及"把文字变成数字",但目的完全不同。
- 和大模型内部的表示:大模型内部也有向量表示,但这里说的 Embedding 通常特指专门训练来做检索的那类模型,和生成模型是两套东西。
一个实用建议
上线前先做一件小事:拿 50 条真实用户问题,人工标出每条应该检索到哪几个片段,然后跑一遍看召回率。这个成本很低的动作,能在几小时内暴露出模型选型和切块策略的所有大问题。
什么时候会用到
RAG、语义搜索、推荐、去重、聚类的共同底层;凡是要比较「意思像不像」的地方都会用到。
例句
- 建索引和查询得用同一个 Embedding 模型,换模型整库都要重跑。
- 这个模型是纯英文训的,中文语料的召回明显不行,换个多语言的。
- 别把整篇文档压成一个向量,细节全丢了,先切块。
别混淆
别把 Embedding 和向量数据库混为一谈:一个是把内容变成向量的模型,一个是存这些向量的仓库。