目录
VF
平面索引很不错,但它无法扩展。这就是向量搜索的数据结构发挥作用的地方。通过牺牲准确性来减少运行时间,以便显著提高查询速度和吞吐量。现在有很多索引策略,其中最常用的是倒置文件索引(IVF)。
抛开花哨的名字,IVF 实际上是相当简单的。IVF 通过将整个数据集按分片排列以减少整个搜索范围。所有分片都与一个中心点相关联,数据集中的每个向量都被分配到与其最近的中心点对应的分片。
如果熟悉 FAISS,你应该对上图不会陌生。这是 Voronoi 图,直观地从两个维度展示了聚类分配。上图总共有 20 个单元(聚类),每个聚类的中心点显示为一个黑点。数据集中的所有点都将落入这 20 个区域中的一个。
聚类中心点通常用一种叫做 K-means 的聚类算法来确定。K-means 是一种交互式算法,其工作原理是首先随机选择 K 个点作为一组聚类。在每次迭代中,向量数据集中的所有点都被分配到其最近的中心点,然后所有中心点被更新为每个单元的平均值。这个过程一直持续到所有点聚合——对于熟悉统计学的人来说,这个过程被称为期望最大化。
有了这些知识,让我们用 K-means 来自动确定 IVF 的中心点。我们将使用 scipy 的