向量空间与语义表示:理解Embedding的数学本质
第 1 章:向量空间与语义表示:理解Embedding的数学本质
当我们审视现代人工智能技术的演进历程,会发现一个贯穿始终的核心主题:将世间万物转化为数字,再将数字转化为可计算的形式。在这场漫长的数字化进程中,向量空间(Vector Space)作为一种数学工具,发挥着不可替代的关键作用。从搜索引擎背后的PageRank算法,到推荐系统中用户与物品的匹配,再到大型语言模型对文本的深层理解,向量空间的概念始终如影随形。可以说,不理解向量空间,就无法真正理解现代AI系统的工作原理。
本书专注于探讨Embedding(嵌入)技术驱动的语义搜索与检索增强生成(Retrieval-Augmented Generation,RAG)系统,而这一切的起点,正是向量空间与语义表示。本章将作为全书的理论奠基,带领读者从最基础的数学概念出发,逐步构建起对向量空间的直观认知,进而理解如何将文本、图像等非结构化数据转化为能够在向量空间中进行语义运算的数值表示。我们会从最简单的向量定义开始,逐步深入到语义空间的核心奥秘,最终为后续章节关于Embedding模型的讨论铺平道路。
1.1 向量的定义:从有序数列表说起
1.1.1 向量作为基本数学对象
在数学的严格定义中,向量(Vector)是指定义在某个数域上的有序$n$元组。对于初学者而言,这个定义可能过于抽象,让我们从几个具体的例子来理解这一概念。
考虑一个简单的电商场景:某款笔记本电脑可以用一组特征来描述——价格(元)为6500、CPU主频(GHz)为3.2、内存容量(GB)为16、硬盘容量(GB)为512、屏幕尺寸(英寸)为15.6、重量(kg)为1.8。这组数据可以记作:
$$\mathbf{v} = (6500, 3.2, 16, 512, 15.6, 1.8)$$
这个六元组就是一个六维向量。向量中的每一个元素称为向量的分量(Component)或坐标(Coordinate),分量的个数称为向量的维度(Dimension)。在这个例子中,向量的每个维度都代表着商品的一个可量化特征。
向量可以用粗体字母表示,如 $\mathbf{v}$、$\mathbf{w}$、$\mathbf{u}$ 等;也可以用带箭头的字母表示,如 $\vec{v}$、$\vec{w}$。在本书中,我们主要采用粗体字母的表示方法。
1.1.2 向量的几何直观
除了代数表示,向量还具有直观的几何含义。在二维空间中(维度为2),向量可以形象地理解为从原点指向某一点的有向线段。假设有一个向量 $\mathbf{v} = (3, 4)$,我们可以在平面坐标系中将其表示为:
```mermaid graph LR A[原点] --> B[3, 4] style A fill:#f9f,stroke:#333,stroke-width:2px style B fill:#9f9,stroke:#333,stroke-width:2px ```
这条从原点 (0, 0) 指向点 (3, 4) 的有向线段就是向量 $\mathbf{v}$ 的几何表示。这种几何视角对于理解向量运算和向量空间性质至关重要。
1.1.3 不同数据类型向量化示例
向量的强大之处在于其通用性——几乎任何类型的数据都可以转化为向量表示。以下是几个典型例子:
文本数据:一段文本可以转化为一组数值特征。例如,句子"人工智能正在改变世界"可以用词频向量表示,统计每个词在文本中出现的次数。若词典为["人工智能", "正在", "改变", "世界", "科技", "发展"],则该句子的词频向量为 $(1, 1, 1, 1, 0, 0)$。更复杂的文本表示方法(如后文将要介绍的TF-IDF和现代Embedding技术)则能生成更具语义信息的向量。
图像数据:一幅图像可以表示为像素值的向量。若图像大小为 $28 \times 28$ 像素,每个像素的灰度值为 0 到 255 之间的整数,则该图像可以展开为一个 784 维的向量 $(p_1, p_2, ..., p_{784})$。对于彩色图像,则需要更多的维度来表示RGB三个通道的值。
用户行为数据:在推荐系统中,用户的行为模式可以编码为向量。例如,某用户在过去一周内点击了5次电子产品、3次服装、1次图书,则其兴趣向量可能表示为 $(5, 3, 1)$。更精细的模型会考虑时间衰减、行为权重等因素。
音频数据:一段音频可以通过梅尔频谱(Mel Spectrogram)或MFCC(梅尔频率倒谱系数)技术转化为向量表示。这种表示能够捕捉音频的频率特征,常用于语音识别和音乐推荐系统。
这些例子共同揭示了向量表示的核心思想:将复杂、多样的数据转化为统一的数值形式,使其能够在数学框架下进行处理和分析。
1.2 向量空间与维度:理解高维空间的性质
1.2.1 向量空间的定义
在理解了单个向量的概念后,我们现在来认识向量空间(Vector Space)。向量空间是由向量组成的集合,并且对这些向量的加法和数乘运算封闭。形式化地说,若 $\mathbf{V}$ 是一个向量空间,则对于任意 $\mathbf{u}, \mathbf{v} \in \mathbf{V}$ 和任意标量 $\alpha$,都有 $\mathbf{u} + \mathbf{v} \in \mathbf{V}$ 和 $\alpha \mathbf{u} \in \mathbf{V}$。
以三维实数向量空间 $\mathbb{R}^3$ 为例,它包含所有形如 $(x, y, z)$ 的三元组,其中 $x, y, z$ 为实数。这个空间中的向量可以相加得到新的向量,也可以与实数相乘得到缩放后的向量。$\mathbb{R}^3$ 是我们最熟悉的三维物理空间在高维数学中的推广。
更一般地,$\mathbb{R}^n$ 表示 $n$ 维实数向量空间,其中每个向量都是 $n$ 个实数组成的有序元组。现代AI系统通常在非常高维的向量空间中进行运算——常见的Embedding向量维度从128维到4096维不等,远远超出了人类直观可视化的能力范围。
1.2.2 基向量与坐标表示
在向量空间中,基(Basis)是一组特殊的向量,它们具有两个关键性质:线性无关性(其中任何一个向量都不能表示为其他向量的线性组合)和张成性(空间中任意向量都可以唯一地表示为这组基向量的线性组合)。基向量构成了向量空间的“坐标系”,而向量在基下的系数即为该向量的坐标。
以二维空间 $\mathbb{R}^2$ 为例,标准基由两个向量组成:$\mathbf{e}_1 = (1, 0)$ 和 $\mathbf{e}_2 = (0, 1)$。任何二维向量 $\mathbf{v} = (v_1, v_2)$ 都可以唯一地表示为:
$$\mathbf{v} = v_1 \mathbf{e}_1 + v_2 \mathbf{e}_2$$
这意味着 $\mathbf{v}$ 在标准基下的坐标就是 $(v_1, v_2)$ 本身。基向量的选择并非唯一——同一个向量在不同基下会有不同的坐标表示。这一事实在理解Embedding时非常重要:当我们说一个词被映射到某个向量时,这个向量的“含义”实际上取决于我们选择的映射方式(即Embedding模型)。
1.2.3 高维空间的反直觉性质
当维度增加到数百甚至数千时,向量空间的行为会出现许多与低维直觉相悖的现象。这些维度诅咒(Curse of Dimensionality)的相关特性对于理解语义搜索和Embedding模型至关重要。
“所有点都分布在边界附近”:在一个高维单位超立方体中随机采样,几乎所有的点都会分布在其表面附近,而非内部。以1000维单位超立方体为例,一个点距离边界超过0.01的概率为 $(1 - 0.02)^{1000} \approx 2 \times 10^{-9}$。这意味着在高维空间中,“内部”和“边界”的区分变得模糊。
“所有点之间的距离趋向相等”:在高维空间中,随机选取的点对之间的欧几里得距离趋向于接近某个固定值。假设在 $d$ 维单位超立方体内随机取两个点,当 $d$ 很大时,两点间距离的期望值和方差都会趋近于稳定,使得距离的区分度降低。这对于依赖距离度量的相似性搜索是一个挑战。
“球体的体积集中在薄球壳中”:在一个高维球体中,大部分体积集中在靠近球面的薄壳层内。这是因为高维球体的半径为1时,赤道附近(距离球心约0.7到1之间)贡献了绝大部分体积,而球心附近几乎是“空”的。
```mermaid graph TD A["低维空间 (d=2,3)"] --> B["点分布较均匀"] A --> C["体积集中在中心"] A --> D["距离区分度明显"]
E["高维空间 (d→∞)"] --> F["点集中在表面"] E --> G["体积集中在薄壳"] E --> H["距离趋向平均"]
style A fill:#e1f5fe style E fill:#fff3e0 ```
理解这些高维空间的性质,有助于我们在后续章节中理解为什么某些Embedding技术(如降维、归一化)对于构建有效的语义搜索系统如此重要。
1.3 向量的度量:距离与相似性的量化
1.3.1 欧几里得距离
欧几里得距离(Euclidean Distance)是日常生活中最直观的距离概念,它测量的是两点之间的直线距离。对于两个 $n$ 维向量 $\mathbf{u} = (u_1, u_2, ..., u_n)$ 和 $\mathbf{v} = (v_1, v_2, ..., v_n)$,它们之间的欧几里得距离定义为:
$$d_{euclidean}(\mathbf{u}, \mathbf{v}) = \sqrt{\sum_{i=1}^{n}(u_i - v_i)^2} = \|\mathbf{u} - \mathbf{v}\|_2$$
其中 $\|\cdot\|_2$ 表示向量的 $L_2$ 范数(稍后我们会详细讨论范数概念)。
例如,向量 $\mathbf{u} = (1, 2, 3)$ 和 $\mathbf{v} = (4, 6, 3)$ 之间的欧几里得距离为:
$$d = \sqrt{(1-4)^2 + (2-6)^2 + (3-3)^2} = \sqrt{9 + 16 + 0} = 5$$
欧几里得距离的优势在于它符合人们对“距离”的直观理解:当两个点在各维度上的值都接近时,它们之间的距离就小。然而,它对向量的绝对值敏感——如果两个向量的各维度数值都成比例放大,即使它们的“方向”完全相同,距离也会增大。
1.3.2 曼哈顿距离
曼哈顿距离(Manhattan Distance),又称城市街区距离或 $L_1$ 范数,测量的是沿坐标轴方向移动的总距离。对于向量 $\mathbf{u}$ 和 $\mathbf{v}$:
$$d_{manhattan}(\mathbf{u}, \mathbf{v}) = \sum_{i=1}^{n}|u_i - v_i| = \|\mathbf{u} - \mathbf{v}\|_1$$
这个名字来源于纽约曼哈顿街区的布局——由于街区通常是矩形网格,从一点到另一点必须沿街道行走,其最短路径长度即为曼哈顿距离。
曼哈顿距离在某些场景下比欧几里得距离更适用。例如,在推荐系统中评估用户偏好的绝对差异时,曼哈顿距离可能更能反映实际的用户行为差异。在机器学习中,曼哈顿距离也被用于正则化项(如L1正则化),以促进稀疏解的产生。
1.3.3 余弦相似度与余弦距离
余弦相似度(Cosine Similarity)测量的是两个向量方向上的相似程度,而非它们的绝对距离。对于向量 $\mathbf{u}$ 和 $\mathbf{v}$,余弦相似度定义为它们夹角的余弦值:
$$\text{cosine}(\mathbf{u}, \mathbf{v}) = \frac{\mathbf{u} \cdot \mathbf{v}}{\|\mathbf{u}\| \|\mathbf{v}\|} = \frac{\sum_{i=1}^{n} u_i v_i}{\sqrt{\sum_{i=1}^{n} u_i^2} \cdot \sqrt{\sum_{i=1}^{n} v_i^2}}$$
余弦相似度的取值范围是 $[-1, 1]$。当两个向量方向完全相同时,夹角为 $0°$,余弦相似度为 1;当方向完全相反时,夹角为 $180°$,余弦相似度为 -1;当两个向量正交时,余弦相似度为 0。
余弦距离通常定义为 $1 - \text{cosine}(\mathbf{u}, \mathbf{v})$,其取值范围是 $[0, 2]$。
```mermaid graph LR A["向量A"] --> C["夹角θ"] B["向量B"] --> C C --> D["cos θ = 相似度"]
E["θ=0°"] --> F["相似度=1"] G["θ=90°"] --> H["相似度=0"] I["θ=180°"] --> J["相似度=-1"] ```
余弦相似度在文本处理和语义分析中应用广泛,原因在于:文本的长度差异往往很大,但语义相似的文本应该具有相似的“方向”。例如,文档A说“人工智能很重要”,文档B说“人工智能确实非常重要”,尽管文档B可能更长或包含更多词汇,但它们的语义方向应该相近,因此余弦相似度接近1。
1.3.4 点积与向量投影
点积(Dot Product),又称内积(Inner Product),是另一个重要的向量运算。对于 $\mathbf{u}$ 和 $\mathbf{v}$:
$$\mathbf{u} \cdot \mathbf{v} = \sum_{i=1}^{n} u_i v_i = \|\mathbf{u}\| \|\mathbf{v}\| \cos\theta$$
其中 $\theta$ 是两向量之间的夹角。点积与余弦相似度密切相关——余弦相似度实际上是归一化后的点积。
点积的几何意义与投影(Projection)紧密相关。向量 $\mathbf{v}$ 在向量 $\mathbf{u}$ 方向上的投影长度为:
$$\text{proj}_{\mathbf{u}}(\mathbf{v}) = \frac{\mathbf{u} \cdot \mathbf{v}}{\|\mathbf{u}\|} = \|\mathbf{v}\| \cos\theta$$
这个投影值可以理解为 $\mathbf{v}$ 在 $\mathbf{u}$ 所代表的方向上“贡献”了多少。当我们将高维语义空间中的向量进行各种运算时,点积和投影的概念无处不在——在Transformer架构中的注意力机制里,点积运算就是核心计算之一。
1.3.5 范数:向量的“长度”
范数(Norm)是向量“长度”的数学抽象。最常用的是 $L_p$ 范数,定义为:
$$\|\mathbf{v}\|_p = \left(\sum_{i=1}^{n} |v_i|^p\right)^{\frac{1}{p}}$$
当 $p=2$ 时,得到 $L_2$ 范数,即欧几里得长度;当 $p=1$ 时,得到 $L_1$ 范数,即曼哈顿距离的组成部分。此外还有 $L_0$ 范数(计算非零元素的个数)和 $L_\infty$ 范数(取最大绝对值)。
单位向量(Unit Vector)是长度为1的向量。将任意非零向量除以其范数,可以得到该方向的单位向量,这个过程称为归一化(Normalization):
$$\hat{\mathbf{v}} = \frac{\mathbf{v}}{\|\mathbf{v}\|}$$
归一化后的向量只保留“方向”信息,丢弃了“长度”信息。在语义搜索中,由于我们主要关心语义的相似性(方向),而非文本的绝对长度,归一化是一种常用且重要的预处理步骤。
1.4 从几何空间到语义空间:数据的语义表示
1.4.1 为什么要超越几何空间
前面几节我们讨论的向量空间,维度通常代表具体的、可测量的属性(如价格、尺寸等)。但在现实世界的数据处理中,我们经常需要处理更加抽象的信息——文本的语义、图像的内容、音频的情感。这些信息无法简单地用物理属性来度量。
例如,“苹果”这个词在水果语境下指的是一种可食用的水果,在科技语境下可能指的是苹果公司。如何用向量来表示这种多义的语义?更进一步,如何让计算机理解“狗”和“猫”是相似的(都是宠物),而“狗”和“汽车”是不同的?
这就是语义空间(Semantic Space)要解决的问题——一种向量表示方法,其中向量的“距离”和“方向”能够反映概念的语义关系。
1.4.2 语义空间的核心思想
语义空间的核心思想可以借助一个生动的类比来理解:图书馆的书架排列。
在一个组织良好的图书馆中,相关主题的书籍往往被放在相邻的书架上。你要找关于“机器学习”的书籍,图情管理员会告诉你去第48区的第3排。这本《深度学习》可能就在《机器学习导论》旁边。如果你想了解某个主题但没有直接相关的书籍,相邻区域的书也可能对你有帮助。
语义空间的工作原理与此类似:每个概念(词、句子、图像等)被映射为向量空间中的一个点,语义相近的概念在空间中距离较近,语义相远的概念距离较远。如果我们能够构建出这样一个语义空间,许多智能任务就会变得简单——寻找相似内容变成了寻找最近邻(Nearest Neighbor)问题。
```mermaid graph TD A["语义空间"] --> B["词向量分布"] A --> C["语义关系"] A --> D["类比推理"]
B --> E["猫 → (0.2, 0.8, ...)"] B --> F["狗 → (0.25, 0.75, ...)"] B --> G["汽车 → (0.9, 0.1, ...)"]
E -.距离很近.-> F E -.距离很远.-> G
style E fill:#90caf9 style F fill:#90caf9 style G fill:#ffcc80 ```
1.4.3 语义空间的数学结构
虽然语义空间在概念上与几何空间相似,但它具有一些独特的数学性质:
连续性(Continuity):与图书馆书架的离散排列不同,语义