定义
Embedding(嵌入、嵌入向量)是一种把离散的内容,比如一个词、一句话、一张图片,映射成一组连续数字(向量)的表示方法。这组数字通常有几百到几千个维度,每个维度单独看没有明确含义,但整体上编码了内容的语义特征。
它最重要的性质是:意思相近的内容,向量在空间中也相近。例如“猫”和“小猫”的向量距离很近,“猫”和“股票”的距离则较远。这样一来,计算机就可以用数学上的距离或夹角来衡量“像不像”,而不必依赖字面上的完全匹配。
工作原理
早期的词向量。 Word2Vec 等方法基于一个朴素的观察:出现在相似上下文中的词,含义往往相近。模型通过“用一个词预测周围的词”或反过来的任务进行训练,训练完成后每个词都得到一个固定向量。这类向量甚至能体现一些类比关系,但缺点是一个词只有一个向量,无法区分多义词在不同语境下的意思。
上下文相关的表示。 基于 Transformer 的模型会根据整句话来计算每个词的向量,同一个词在不同句子里会得到不同的表示,能更准确地反映语境。
句子与文档嵌入。 实际应用中更常用的是对整段文本生成一个向量。专门的嵌入模型通常采用对比学习训练:给模型大量“语义相关”的文本对(如问题与答案、标题与正文),让相关的向量靠近、无关的远离。
多模态嵌入。 类似地,也可以把图片和文字映射到同一个向量空间,使“一只在草地上奔跑的狗”这句话与对应照片的向量相近,从而实现以文搜图。
衡量两个向量相似度的常用方法有余弦相似度(看方向是否一致)、点积和欧氏距离。
使用 Embedding 时需要注意:
- 同一套向量必须来自同一个模型。 不同模型生成的向量空间互不兼容,不能混用比较。
- 更换模型需要重新生成。 一旦升级嵌入模型,已有数据通常要全部重新向量化。
- 维度与成本相关。 维度越高,存储和计算开销越大,但效果未必线性提升。
典型应用
- 语义搜索:按意思而不是关键词查找内容。
- 检索增强生成(RAG):为大模型找到最相关的资料片段。
- 推荐系统:根据用户和物品向量的相似度推荐内容。
- 文本聚类与分类:把相似的评论、工单自动归类。
- 去重与异常检测:发现内容近似的重复项,或与常规模式差异大的数据。
- 跨语言检索:多语言嵌入模型能让不同语言中意思相同的句子向量相近。
相关概念
- 向量数据库:专门存储和检索 Embedding 的数据库。
- RAG:依赖 Embedding 完成语义检索。
- Transformer:现代嵌入模型的主流架构。
- Token:大模型内部,每个 Token 首先也会被映射为一个嵌入向量。
- 多模态:跨模态嵌入让图文可以在同一空间中比较。
参考论文:Efficient Estimation of Word Representations in Vector Space(Word2Vec)、Sentence-BERT