选择向量索引工具
下面列出了几种现有的向量检索工具:
FAISS
FAISS 是 Facebook AI 基于 C++ 语言编写的一款开源、针对多媒体文件相似性搜索的算法库。FAISS 支持开发人员对检索速度、内存使用和检索精度等的优化设置。但它仅仅是一个算法库,并且对开发人员有较高的使用要求。
SPTAG
SPTAG 是由 Microsoft 发布的向量检索算法库,使用基于图的最近邻搜索算法。
SPTAG 的优点是搜索速度快,毫秒内智能搜索数十亿条向量,并且在查询精确度和内存占用上表现佳。但缺点也很明显,其建图时间长,而且每次添加新向量进数据库,必须重新建图。
Hnswlib
Hnswlib 使用基于图的最近邻搜索算法 HNSW (Hierarchical Navigable Small World Graphs),可以同时达到极快的搜索速度和较高的搜索精度,但是内存占用量也很大,同样不适合十亿级或以上的数据量。
ANNOY
ANNOY 是 Spotify 发布的向量检索算法库,使用基于树的最近邻搜索算法。
ANNOY 的搜索速度很快,而且支持多进程读取数据,但由于搜索时会将原数据加载到内存,导致内存占用量很大,因此不适合十亿级或以上的数据量。
结论
综上所述,当前业界针对向量检索的实现中,并没有一个能擅长所有场景的万能算法。同时现有的实现也都还只是算法库,而并非一个系统。随着 AI 应用的大规模落地,提供一个面向海量特征向量检索的数据库系统,已经成为市场对于向量检索服务提出的新需求。