使用基于磁盘的近似最近邻 (ANN) 方法(其中索引的一部分存储在 SSD 或 HDD 上)通常会导致比完全在内存中的索引更高的查询延迟。 这是因为从磁盘访问数据涉及较慢的 I/O 操作,即使在使用像 SSD 这样的快速存储时也是如此。 内存索引通过将所有数据保存在 RAM 中来避免这种开销,RAM 具有比磁盘快几个数量级的读取速度。 例如,需要在分层 ANN 索引的多个层中遍历的查询可能在内存中花费几微秒,但在磁盘上由于需要从存储中获取数据块而花费几毫秒。
性能差距取决于基于磁盘的系统如何平衡数据局部性和 I/O 效率。 像 DiskANN 这样的系统通过构造数据以最大限度地减少随机访问,并尽可能利用顺序读取来优化磁盘使用。 然而,即使经过优化,SSD 对于小读取的延迟也在 100 微秒左右,而 RAM 访问通常低于 100 纳秒。 这种差异在需要多次磁盘寻道的查询期间会累积。 例如,涉及 10 次磁盘访问的搜索可能在 SSD 上花费 1-2 毫秒,而内存等效搜索可能在 0.1 毫秒内完成。 基于 HDD 的系统的性能更差,每次访问的寻道时间通常超过 5 毫秒,这使得它们对于低延迟应用来说是不切实际的。
尽管延迟较高,但基于磁盘的 ANN 方法能够以较低的成本处理更大的数据集。 1TB 的数据集可能需要昂贵的服务器级 RAM 才能进行内存索引,而基于磁盘的系统可以使用经济实惠的 SSD。 当扩展到超出内存限制时,开发人员通常会接受较慢的查询——例如,具有数十亿个向量的推荐系统可能会使用磁盘支持的索引来避免过高的硬件成本。 混合方法(例如,将频繁访问的数据缓存在内存中,同时将其余数据保存在磁盘上)可以缓解常见查询的延迟。 最终,选择取决于平衡成本、数据集大小和特定用例的可接受响应时间。