Embedding 基础原理
问题
Embedding 是如何将文本转换为向量的?从 Word2Vec 到现代 Embedding 模型经历了哪些演进?
答案
一、文本表示演进
| 阶段 | 模型 | 特点 |
|---|---|---|
| One-Hot | — | 维度 = 词表大小,无语义信息 |
| Word2Vec | CBOW / Skip-gram | 固定维度,捕捉语义关系 |
| GloVe | 全局共现矩阵 | 结合全局统计信息 |
| ELMo | BiLSTM | 上下文相关词向量 |
| BERT | Transformer Encoder | 深度上下文理解 |
| 现代模型 | 多任务对比学习 | 专为检索优化 |
二、Word2Vec 核心思想
核心假设:语义相似的词出现在相似的上下文中。
// Skip-gram: 用中心词预测上下文
输入: "猫" → 预测: "可爱", "宠物", "毛茸茸"
// CBOW: 用上下文预测中心词
输入: "可爱", "宠物", "毛茸茸" → 预测: "猫"
训练后产生的向量具有语义运算性质:
三、现代 Embedding 模型训练
现代文本 Embedding 模型(如 BGE、E5、GTE)通常使用对比学习训练:
InfoNCE 损失函数:
四、从词向量到句子向量
| 方法 | 原理 | 质量 |
|---|---|---|
| 词向量平均 | 对所有词的 Embedding 取平均 | 低 |
| TF-IDF 加权平均 | 重要词权重更高 | 中 |
| BERT [CLS] | 取 BERT 输出的 [CLS] 向量 | 中(未优化) |
| Sentence-BERT | 孪生网络 + 对比学习 | 高 |
| 现代模型(BGE/E5) | 大规模对比学习训练 | 最高 |
常见面试问题
Q1: Word2Vec 和 BERT Embedding 的本质区别?
答案:
- Word2Vec:静态——一个词只有一个向量,"bank"(银行/河岸)无法区分
- BERT:上下文相关——同一个词在不同句子中有不同向量
- 现代 Embedding 模型基于 BERT 架构,但专门为句子级语义理解优化
Q2: Embedding 维度一般多大?
答案:
- 常见维度:256、512、768、1024、1536、3072
- 维度越高:表达能力越强,但存储和计算成本越大
- 实践建议:768-1024 是性价比最高的区间