DBMS for ANNS 一览
自 2023 年 ChatGPT 带动的大语言模型热以来,向量相似度检索得到了很多数据库系统的支持。实际上,早在 2023 年之前,就已经有很多 DBMS 支持了向量数据存储、索引、查询优化等功能。其中,最重要的功能就是提供支持近似最近邻检索(ANNS)的索引结构。在 ANN Benchmark 中,列出了许多支持 ANNS 的库或者 DBMS,并在主要的数据集上进行了性能测试。本文简要的介绍几个支持 ANNS 的数据库系统。
1. Vearch
论文见:The Design and Implementation of a Real Time Visual Search System on JD E-commerce Platform
GitHub:vearch/vearch: Distributed vector search for AI-native applications (github.com)
Vearch 算是最早的提供 ANNS 功能的数据库系统,来自京东,用于其内部的商品图像检索。更早期的系统大多服务于基于内容的图片检索,不能称得上真正的 DBMS。Vearch 提供了 Restful API 、实时索引更新、一些语言的 SDK 以及 DDL/DML/DQL 接口等功能,所以可以算是 DBMS。Vearch 架构图:
以现在观点看,当时(论文发表时)的 Vearch 还是比较 naive 的,但是其的却算是开创性的支持 ANNS 的 DBMS。且在后续发展中,也逐渐支持了属性过滤等相对高级的功能。
另外,尽管开源了且最近都在更新,但是其文档似乎做的不是特别好,页面不是很详细,让人担心使用时会遇到问题。
2. AnalyticDB
论文:AnalyticDB: Real-time OLAP Database System at Alibaba Cloud
未开源,阿里云提供云服务版
如论文标题所示,AnalyticDB 是 OLAP 系统。不过根据论文,其在当时已经支持了向量数据存储及索引功能。其为所有列创建索引,以加速 OLAP 场景复杂查询的响应速度。在论文发表时,其支持了 PQ 和 Proximity Graph (k-NNG) 两种 ANN 索引结构。对于走索引的查询,其设计了一些不错的优化策略,具体可参考原论文 4.2.1 Index Filtering 小节。附架构图:
3. AnalyticDB-V
论文:AnalyticDB-V: A Hybrid Analytical Engine Towards Query Fusion for Structured and Unstructured Data
未开源
如题目所示,AnalyticDB-V 显然是 AnalyticDB 针对 V(vector)的优化版本。AnalyticDB-V 主要贡献是针对同时包含结构化数据的布尔条件过滤和向量相似度的混合查询进行了系统的优化。混合查询示意图如下:
系统架构图如下:
AnalyticDB-V 实现了 4 中针对混合查询的物理执行计划,并设计了基于代价的查询优化算法,让系统选择代价最低的执行计划。具体参见论文 5. HYBRID QUERY OPTIMIZATION 小节。
个人认为,AnalyticDB-V 是很不错的工作。针对工业界的现实需求:标量向量数据混合查询,设计并实现一系列优化算法,以实现高效查询。同时也算是挖了个坑,混合查询优化这个方向值得进一步探索与研究。
4. PASE
论文:PASE: PostgreSQL Ultra-High-Dimensional Approximate Nearest Neighbor Search Extension
GitHub:https://github.com/alipay/PASE
连续第三篇阿里的工作。不同于前两个 DBMS,PASE 是 PostgreSQL 的插件,实现了向量数据存储和索引功能,支持 PQ 和 HNSW 两种索引结构。
本文是学习如何为 PG 编写插件的不错案例,论文中介绍了 PG 页面结构,如何自定义索引,如何设计页面存储格式等问题。例如:PQ 和 HNSW 的页面格式分别设计如下:
对如何为 PG 编写插件感兴趣的,值得参考本论文和对应的 GitHub 仓库。
根据 GitHub 仓库,PASE 似乎提交后就没有后续的更新和维护了。不过类似的工作还有: pgvector/pgvector: Open-source vector similarity search for Postgres (github.com) ,pgvector 是一个开源社区编写的 PG 插件,同样用于 ANNS,实现了 PQ 和 HNSW 索引,且还在更新维护中。
5. Milvus
论文:Milvus: A Purpose-Built Vector Data Management System
Milvus 是一个开源的、商业级、专为向量数据设计的 DBMS,算是当今全球比较成功的 VDBMS,同样是国内企业开发。Milvus 提供了 GPU 加速、SIMD 指令优化、多向量相似度检索等高级特性。个人认为文档与社区也建设的不错,算是国内一众数据库厂商中发展的很不错的了。Milvus 架构图如下:
同时,还有个 Manu (Manu: A Cloud Native Vector Database Management System),是同一家公司的云原生 VDBMS,感兴趣参考论文,这里不多介绍。
另外,谈到商业 VDBMS,国外的 Pinecone 也是知名的 VDBMS 创业公司,且其文档也做得特别好,不过其未开源也没有相关的论文。
6. Traditional DBMS for ANNS
早些年时,一些传统的数据库,包括 PG、ES 等,其实也有相关插件,实现了向量检索功能。2023 年 GhatGPT、LLMs 等概念大火以来,许多传统数据库陆续官方宣布支持了向量数据存储及 ANNS 功能,包括 Elasticsearch、ClickHouse、Redis 等等。可见,未来 vector 大概率会成为类似 int、char 的基础数据类型,得到 DBMS 的广泛支持。不过,在与传统 DBMS 结合时,必然也会产生新的问题和需求,比如 AnalyticDB-V 首次探索的混合查询优化等等。后续会如何发展,值得我们拭目以待。