理解向量

vector 2d coordinates

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

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

相似性

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

vector similarity

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

它们之间的角度 是衡量它们相似性的好方法。 如何计算角度

pythagorean triangle

我们都熟悉 毕达哥拉斯定理

ab 之间的角度不是 90 度时怎么办?

引入 余弦定律

余弦定律

下图显示了这种方法的向量图: lawofcosines

这个向量的大小根据其分量定义如下:

大小

两个向量 之间的点积根据其分量定义如下:

点积

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

向量形式的余弦定律

替换为 得到以下结果:

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

展开这个式子 就得到了 余弦相似度 的公式。

余弦相似度

这个公式适用于高于 2 或 3 维的情况,虽然难以可视化。但是,https://projector.tensorflow.org/[可以在一定程度上进行可视化]。 在 AI/ML 应用中,向量通常有数百甚至数千个维度。

使用向量分量在更高维度中的相似度函数如下所示。 它通过使用 求和数学语法 将前面给出的二维大小和点积定义扩展到 N 维。

使用向量分量的余弦相似度

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