理解向量

本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。
vector 2d coordinates

向量具有维度和方向。例如,下图描绘了笛卡尔坐标系中的二维向量 ,以箭头形式呈现。

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

相似性

有多种数学公式可用于判断两个向量是否相似。其中最直观易懂的是余弦相似度。请看以下展示三组图形的图像:

vector similarity

当向量 指向相近方向时(如第一张图所示),它们被认为是相似的。当向量互相垂直时被视为不相关,而方向相反时则被视为对立。

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

pythagorean triangle

我们都熟悉 勾股定理

当向量 ab 之间的夹角不是 90 度时该怎么办?

这时就需要用到 余弦定理

余弦定理

下图以向量图形式展示了这种方法:lawofcosines

该向量的大小(或长度、模)根据其分量定义为:

大小(或长度、模)

两个向量 的点积根据其分量定义为:

点积

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

向量形式的余弦定理

替换为 ,得到如下公式:

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

展开后,就得到了 余弦相似度 的公式。

余弦相似度

该公式适用于二维或三维以上的高维空间,尽管难以直观可视化。不过,在一定程度上仍然可以进行可视化。在人工智能和机器学习应用中,向量通常具有数百甚至数千个维度,这是很常见的。

下面展示了在高维空间中使用向量分量的相似性函数。它通过使用 求和(Summation)数学符号,将之前给出的二维情况下的模和点积定义扩展到 N 维空间。

向量分量形式的余弦相似度

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