论文部分内容阅读
在大数据时代,每天都有海量的数据产生,以深度学习为代表的技术被广泛应用于从复杂的数据中提取信息。深度学习技术通过将复杂的对象如文本、语音、图像等编码为高维向量来表示对象,并通过向量之间的距离来度量对象之间的相似性。在构建各种应用系统如搜索推荐系统时,常常需要在大规模、高维度的向量上进行相似特征检索。为了解决这类大规模高维向量上的相似特征检索问题,各种近似最近邻搜索算法被提了出来。尽管存在各种各样的近似最近邻搜索算法,实际应用中的相似向量检索仍然存在不少困难。首先是面对种类繁多的近似最近邻搜索算法,如何针对具体应用场景选取适合的应用算法。其次对于召回率要求极高场景,现有很多算法都是不适合的。最后是对于大规模数据进行相似特征检索的时候,算法构建的索引模型会占用大量内存,如何减少构建的索引的大小。本文将上述问题总结为通用场景下近似最近邻搜索算法的选择问题,以及内存资源受限的情况下如何有效降低索引模型大小的问题。对于前者,HNSW算法是目前的主要选择,但是仍然存在问题。针对上述问题,本文做了以下工作:(1)对于HNSW现有的节点删除方法存在的节点大量删除之后部分搜索请求返回结果数量不足的问题,本文提出了新的节点删除算法HNSW MutualRemove,成功且高效地解决了该问题。此外,本文的实验结果也表明基于GPU加速的线性扫描算法也拥有接近HNSW的性能,非常适合于对召回率要求极高的场景。(2)对于近似最近邻搜索算法所构建的索引模型内存占用大的问题,本文基于HNSW对其进行了深入分析。本文认为可以分别采用对高维向量进行压缩以及采用更加轻量级的组织数据的数据结构来解决该问题。IVF-HNSW算法虽然结合了以上两点对索引大小进行了极大比例的压缩,但是其构建速度慢。对此本文提出了新的索引构建方法,我们称之为Balanced IVF-HNSW。该方法在大幅加快索引的构建速度的同时仍能够保证较高的召回率。(3)成功将上述优化后的算法应用到微信大规模分布式近似最近邻搜索组件Sim Svr中,该组件能够完成对数十亿级规模的数据的高效索引与检索,已经广泛应用于微信搜一搜、看一看等业务中。本文的实验结果以及相关算法在Sim Svr中的应用经验表明,本文提出的HNSW Mutual-Remove成功解决了HNSW缺少适合的节点删除算法的问题,有效提升了HNSW的稳定性,同时本文提出的Balanced IVF-HNSW有效加快了IVF-HNSW构建索引的速度,让IVF-HNSW在内存资源受限场景下变得更加实用。