嵌入模型

经典和现代Embedding模型的原理、架构与应用场景。

共 3 篇文章·阅读时间:约30分钟

01Word2Vec

Word2Vec是最具影响力的词向量模型,由Google于2013年提出,开启了词嵌入时代。

Word2Vec原理

Word2Vec的核心思想是"分布假说":一个词的意义由它的上下文决定。 相似的词有相似的上下文,因此在向量空间中距离更近。

训练目标

通过神经网络学习词向量,使得语义相似的词在向量空间中具有相似的表示。 训练完成后,只保留输入层到隐层的权重矩阵作为词向量。

CBOW与Skip-gram

CBOW

Continuous Bag of Words

根据上下文词预测中心词。
"我 昨天 买 了 西瓜" → 预测"苹果"

Skip-gram

Skip-gram with Negative Sampling

根据中心词预测上下文词。
"苹果" → 预测"昨天"、"买"、"了"

Word2Vec的特点

  • 训练速度快,适合大规模语料
  • 每个词对应一个固定的向量(静态表示)
  • 能够捕捉词语之间的线性关系
  • 无法处理一词多义问题

02BERT嵌入

BERT采用动态语境化表示,同一个词在不同上下文中得到不同的向量表示。

BERT的Embedding机制

BERT的Embedding由三部分组成,每个词的最终表示是这三部分的和:

Embedding = Token Embedding + Segment Embedding + Position Embedding

  • Token Embedding:词表中的词嵌入
  • Segment Embedding:区分句子对中的句子A和句子B
  • Position Embedding:表示词在序列中的位置

BERT vs Word2Vec

特性Word2VecBERT
表示类型静态(每个词一个向量)动态(语境化)
上下文仅考虑局部上下文双向上下文(Self-Attention)
多义词无法区分自然区分
计算量相对较小较大

示例:多义词"bank"

Word2Vec:无论在"river bank"还是"bank account"中,"bank"的向量都是一样的。
BERT:根据上下文,"bank"的向量在两个句子中完全不同。

03OpenAI Embedding

OpenAI提供的Embedding API将文本转换为高维向量,支持多种模型和用途。

text-embedding模型

  • text-embedding-3-large:1536维,最强性能
  • text-embedding-3-small:1536维,性价比高
  • text-embedding-ada-002:1536维,稳定可靠

使用场景

语义搜索

将文档和查询都转为向量,通过余弦相似度找到最相关的结果。

文本分类

使用Embedding作为特征,结合简单的分类器(如逻辑回归)进行分类。

聚类分析

将文本聚类为语义相近的组别,用于主题发现或用户分群。

推荐系统

基于用户和物品的Embedding相似度进行个性化推荐。

API调用示例

import openai

response = openai.Embedding.create(
    model="text-embedding-3-small",
    input="The quick brown fox jumps over the lazy dog"
)
embedding = response['data'][0]['embedding']
----