1. 什么是嵌入向量?
1.1 从文本到数字的转换原理
在自然语言处理领域,计算机无法直接理解人类语言的语义和语法结构。嵌入向量(Embeddings)作为一种强大的表示学习方法,将离散的文本数据映射到连续的向量空间中。这种转换过程本质上是通过深度学习模型捕捉文本的语义特征。
以OpenAI的text-embedding-3-large模型为例,当输入"Hello world!"这样的文本时,模型会通过多层Transformer网络提取特征,最终输出一个3072维的浮点数向量。这个向量不是随机的,而是经过海量文本训练后形成的语义表示:
python复制# 示例嵌入向量输出
[0.123, -0.456, 0.789, ..., 0.021] # 3072个维度
关键点:好的嵌入模型应该保持语义相似性,即意思相近的词/句子在向量空间中的距离更近。这种特性使得我们能够通过数学运算来比较文本间的语义关系。
1.2 嵌入向量的核心特性
| 特性 | 技术原理 | 实际意义 |
|---|---|---|
| 语义保持 | 基于自注意力机制捕捉上下文 | "手机"和"智能手机"向量距离近 |
| 维度固定 | 模型最后一层神经元数量决定 | 便于统一存储和计算 |
| 可计算性 | 向量空间中的几何关系 | 可用余弦相似度等度量比较 |
| 跨语言能力 | 多语言语料训练 | 不同语言的相同概念向量相近 |
1.3 向量相似度的实际案例
让我们通过具体数值来理解语义相似性。假设我们有以下三个文本的简化二维向量表示:
python复制"深度学习" → [0.8, 0.6]
"神经网络" → [0.78, 0.63]
"篮球运动" → [-0.2, 0.9]
计算它们之间的余弦相似度:
python复制def cosine_sim(a, b):
return np.dot(a,b)/(np.linalg.norm(a)*np.linalg.norm(b))
print(cosine_sim([0.8,0.6], [0.78,0.63])) # 输出 ≈0.998
print(cosine_sim([0.8,0.6], [-0.2,0.9])) # 输出 ≈0.287
可以看到,语义相关的术语相似度接近1,而不
