Stop Indexing at Full Precision: Revisiting Clustering for Vector Embeddings
本文表明,在聚类之前应用降维、量化和维度剪枝,可以使向量嵌入以 1 位编码进行索引,从而在实现近乎最优搜索质量的同时,与全精度方法相比,将存储需求降低 60 倍并加速了聚类时间。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
在现代数字世界中,计算机越来越多地被要求从浩如烟海的数据中寻找意义。当用户搜索一首歌、一件产品或一张相似的图片时,系统并不仅仅是在寻找单词或像素的精确匹配。相反,它将每一项内容转化为一长串数字,即所谓的“嵌入”(embedding),这些数字捕捉了该项内容的本质特征。这些列表如此之长,且集合规模如此庞大,以至于通过检查每一个项目来寻找最相似的项目是不可能的。为了解决这个问题,工程师们使用了一种叫做“聚类”(clustering)的方法。想象一下,不是通过阅读每一本书来整理一座巨大的图书馆,而是根据它们的大致主题将书籍分类成堆。一旦书籍被分组,搜索就只需要在最相关的堆中进行,而忽略其他部分。这种分组的过程是许多现代搜索系统的支柱,使它们能够在极短的时间内交付结果。然而,构建这些分组是一个缓慢且昂贵的过程,通常需要计算机同时将整个图书馆保存在其内存中,并进行数十亿次计算,以决定每本书应该属于哪里。
位于阿姆斯特丹的 CWI 研究团队发现,这个昂贵的过程远比必要的要浪费得多。多年来,系统一直使用尽可能精确、详细的数据版本来构建这些分组,对长列表中的每一个数字都极其谨慎地对待。研究人员发现,这种精度水平是过度的。他们证明了计算机可以使用更粗略、压缩后的数据版本,同样出色地构建这些分组。通过在分组开始前简化数字,他们能够将完成该任务所需的内存缩减了六十倍。更令人惊讶的是,这种简化并没有让分组质量变差。生成的聚类与使用完整、详细数据构建的聚类几乎完全相同,使得系统能够同样可靠地找到正确答案。
这项研究在海量数据集上测试了这一想法,包括数百万个文本嵌入和图像描述。研究人员应用了三种不同的方法在分组开始前简化数据。一种方法缩短了数字列表的长度,另一种将数字本身压缩成更小的代码,第三种则移除了数据中不必要的成分。他们发现,即使是最激进的压缩——即将数据减少到每个数字仅剩一个比特(bit)——所产生的分组与理想状态的差异也小于百分之一。这种微小的差异如此之小,以至于对最终的搜索结果几乎没有明显影响。事实上,使用这些简化的数字使分组过程显著加快,有时甚至快了十七倍,因为计算机需要处理的信息变少了,可以更高效地利用其处理能力。
研究人员最显著的发现之一是,分组过程对这些捷径具有多强的韧性。当研究人员观察数据点如何被分配到其所属组时,他们看到,最关键的决策——选择最接近的组——很少会因为简化而产生混淆。最佳组与次佳组之间的差距通常非常大,以至于即使是一个粗略的估计也能轻松分辨出它们。这意味着系统不需要完美的精度来做出正确的选择;它只需要足够的清晰度来识别出那个显而易见的获胜者。这一洞察力使团队能够结合不同的简化技术,例如缩小数据列表和压缩数字,从而在不牺牲质量的前提下实现更大的速度和存储节省。
研究人员还探索了如何处理过程的最后一步。一旦分组形成,系统就需要知道在哪里可以找到原始项目。他们展示了用于构建分组的相同简化数据也可以用于存储最终的索引,从而消除了返回检索原始、沉重数据文件的需求。这创造了一个流线型的流水线:数据被简化一次,然后既用于构建索引,也用于搜索该索引。虽然某些方法(例如一种特定类型的单比特压缩)偶尔会产生略微不均匀的分组,但研究人员发现,在最后一步进行简单的调整就可以解决这个问题。其结果是,该系统不仅构建速度更快,而且运行成本更低,因为它需要的内存和计算能力都大大减少了。
这项工作挑战了一个长期存在的假设,即高质量的搜索索引必须使用高精度的数据来构建。研究表明,对于向量分组这一特定任务,额外的细节往往只是噪声。通过在过程早期拥抱近似处理,系统可以更轻松地处理大规模数据集。研究人员已向公众开放了他们的工具,允许他人使用这些方法测试自己的数据。随着人们对搜索海量信息的需求不断增长,这些发现提供了一条切实可行的路径:一种让搜索系统在不损失用户所依赖的准确性的前提下,变得更快、更便宜且更具扩展性的方法。向量搜索的未来可能不在于以完美的精度计算每一个细节,而在于清楚哪些细节是可以安全舍弃的。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。