1. Embedding的本质:文本与向量的桥梁
第一次接触Embedding这个概念是在处理自然语言处理项目时。当时需要比较两段文本的相似度,传统的字符串匹配方法完全失效——"猫喜欢吃鱼"和"猫咪爱食用鱼类"明明表达相同含义,但字面匹配度极低。直到同事扔给我一个Word2Vec模型,把文本转换成向量后计算余弦相似度,问题迎刃而解。这种将离散符号映射到连续空间的技术,就是Embedding的核心。
1.1 为什么需要文本向量化?
文本数据天生不适合直接用于机器学习。计算机擅长处理数字,而自然语言是高度离散化的符号系统。传统方法如词袋模型(Bag-of-Words)存在两大缺陷:
- 维度灾难:英语词汇量超百万,中文常用字也有数千,直接one-hot编码会导致特征空间爆炸
- 语义缺失:"bank"在金融和河岸场景中的不同含义无法通过简单编码区分
Embedding通过稠密向量(通常50-300维)解决这两个问题。例如使用GloVe模型:
python复制# 加载预训练GloVe向量
glove = {"apple": [0.12, -0.34, ..., 0.56],
"orange": [0.23, 0.45, ..., -0.12]}
相似的词在向量空间中距离更近,这种几何关系还能捕捉语义规律:
code复制king - man + woman ≈ queen
1.2 主流Embedding技术演进
从静态到动态,Embedding技术经历了三代发展:
| 世代 | 代表模型 | 特点 | 典型维度 |
|---|---|---|---|
| 第一代 | Word2Vec/GloVe | 静态词向量,上下文无关 | 50-300 |
| 第二代 | ELMo | 双向LSTM,考虑上下文 | 1024 |
| 第三代 | BERT/GPT | Transformer,动态上下文感知 | 768-4096 |
最新的大语言模型如Qwen Embe
