暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

向量数据库or传统数据库的向量插件?

AI 搜索引擎 2024-09-23
318

今天为大家分享一篇ICDE 2024年的向量检索论文:

Are There Fundamental Limitations in Supporting Vector Data Management in Relational Databases? A Case Study of PostgreSQL

在关系型数据库中支持向量数据管理是否存在根本上的局限性?基于PostgreSQL的案例分析

论文作者来自普渡大学。

论文地址:https://www.cs.purdue.edu/homes/csjgwang/pubs/ICDE24_VecDB.pdf

代码地址:https://github.com/YunanZzz/VecDB-ICDE24

论文概述

目前,工业级的向量管理有两种模式,一种是像Pinecone,Zilliz一类的向量数据库,一种是在传统数据库中支持向量类型,如PostgreSQL。一些传统数据库的向量支持的性能相比专用向量数据库仍有较大差距。本文通过分析两种数据库的代码实现,探究在关系型数据库中是否存在本质缺陷,使得无法高效支持向量管理。

本文结论是:现有关系型数据库的向量支持存在7个方面的实现缺陷,但均可以通过改善工程实现以优化。换句话说,关系型数据库上支持向量类型不存在本质缺陷

实验观察

本文以PostgreSQL的插件PASE,和FAISS进行性能对比。

索引构建性能

1. IVF-FLAT

构建IVF-FLAT的性能上,FAISS是PASE的几十倍,作者通过火焰图手段分析到距离计算是核心差距:

  • FAISS将欧式距离拆分成向量内积和向量的模,内积则使用BLAS库中的高效矩阵计算函数SGEMM进行计算;
  • PASE仅使用原始方法进行距离计算。
若将FAISS中的距离计算方式换成和PASE一样,则构建性能几乎无差距:

2. HNSW

在构建HNSW索引上,PASE仍然比FAISS慢了数倍,然而其原因却不在距离计算上,因为HNSW没有批量距离计算的操作。

通过如下分析,可以看到PASE在内存访问上显著慢于FAISS。其原因在于PASE的内存管理方式仍然是基于磁盘页的缓存池。每次随机读取需要通过读整个页进行缓存,然后取出tuple。这对随机访问来说很不友好,造成了性能下降。

注意到,对于IVF-Flat/PQ则无此问题,因为这两个索引构建时以批量读取的方式为主

索引内存大小

在IVF-Flat和IVF-PQ方面,PASE和FAISS索引大小基本一致,但在HNSW上,又出现了数倍的差距。

经过分析,原因为如下两点:

  1. PASE要求每个邻接表对页对齐,一个页8KB,然而邻接表通常不到2KB,留下了大量的内存空白。
  2. 由于页结构,PASE中表示一个向量的位置,id,需要多个指针。在FAISS中一个4字节的id在PASE中需要24字节。

索引查询性能

1. IVF-FLAT

PASE相比于FAISS,查询速度慢2-3倍。

根据论文的检查,发现原因在于以下三点:

  1. PASE的k-means算法质量比FAISS要差,聚类中心不一样;
  2. PASE的访存时延比FAISS要高。注意在查询时,不再会以顺序访问为主。
  3. 对于堆的使用,PASE的堆大小设置的远比k要大,在实现上有缺陷。

2. IVF_PQ

和IVF-Flat一样,PASE的IVF_PQ性能也要比FAISS慢几倍。主要原因除了以上三点以外,还有一个是关于查询时查找表的计算优化。PASE采用暴力算法,而FAISS再次使用了距离分裂的方法变欧氏距离为内积距离。

3. HNSW

在HNSW查询上,性能差距会更大。其主要原因仍然是内存排布与访存延迟的问题。

精彩段落

<<< 左右滑动见更多 >>>

总结与思考

本文通过细粒度的性能分析比较了关系型数据库和向量数据库对于向量搜索性能差距的原因。结果发现主要是工程实现导致了性能的差距,尤其是RDBMS中基于页的内存访问,给内存索引带来了不少障碍。这些结论意味着RDBMS的向量搜索性能将通过不断迭代优化逐步追上向量数据库。

然而,这不意味着向量数据管理问题的终结。本文仅测试了单一的搜索功能,对于与其他数据类型的混合搜索、容错恢复、查询优化等问题尚未考虑。如何完善RDBMS对向量类型的支持仍是开放问题。

延伸阅读

[1] VLDBJ'24:向量数据库技术综述 Survey of vector database management systems (https://arxiv.org/pdf/2310.14021)

[2] SIGMOD'20: PostgreSQL向量插件PASE PASE: PostgreSQL Ultra-High-Dimensional Approximate Nearest Neighbor Search Extension (https://dl.acm.org/doi/pdf/10.1145/3318464.3386131)

编者简介

王泽宇
复旦大学与巴黎西岱大学联合培养博士生,研究领域为高维数据(向量、序列等)管理和分析。以第一作者在SIGMOD,VLDB,VLDBJ,TKDE等数据库领域会议/期刊发表多篇论文,并担任审稿人。

个人主页:https://zeyuwang.top/ 

谷歌学术:https://scholar.google.com.hk/citations?hl=zh-CN&user=XXGhABIAAAAJ

技术博客:https://www.jianshu.com/u/d015902c6d09

文章转载自AI 搜索引擎,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论