理解向量

vector 2d coordinates

向量具有维度和方向。例如,下图描绘了一个二维向量 在笛卡尔坐标系中表示为一个箭头。

向量 的头部位于点 ,其中 x 坐标值为 y 坐标值为 。这些坐标值也称为向量的分量。

相似度

有几种数学公式可以用来确定两个向量是否相似。其中一种最直观且易于理解和可视化的方法是余弦相似度。考虑以下显示三组图表的图像

vector similarity

当向量 指向彼此接近时,它们被认为是相似的,如第一个图所示。当向量相互垂直时,它们被认为是无关的;当它们指向彼此远离时,它们被认为是相反的。

它们之间的角度 是衡量它们相似度的良好指标。如何计算角度 呢?

pythagorean triangle

我们都熟悉勾股定理

那么当 ab 之间的角度不是90度时呢?

引入余弦定理

余弦定理

下图将此方法表示为向量图:lawofcosines

此向量的大小根据其分量定义为

大小

两个向量 之间的点积定义为它们的分量之积的和:

点积

用向量大小和点积重写余弦定理得到以下结果

向量形式的余弦定理

替换为 得到以下结果

仅用 $\vec{A}$ 和 $\vec{B}$ 表示的向量形式余弦定理

展开此式 得到余弦相似度的公式。

余弦相似度

此公式适用于高于2或3维的情况,尽管难以可视化。然而,可以在一定程度上进行可视化。在AI/ML应用中,向量通常具有数百甚至数千个维度。

在更高维度上使用向量分量的相似度函数如下所示。它使用求和数学符号将之前给出的二维大小和点积定义扩展到 N 维。

带向量分量的余弦相似度

这是简单向量存储实现中使用的关键公式,可以在 SimpleVectorStore 实现中找到。