针对 pgvector 的分布式查询

主要观点:

  • 过去 pgvector 版本强调垂直扩展特征,如索引构建并行性,垂直扩展有诸多便利,即便内存无法容纳全部向量数据,只要满足延迟要求即可。
  • 可结合 PostgreSQL 特征与 pgvector 创建多节点系统来运行分布式查询,需探索 PostgreSQL 的分区和外部数据包装器等功能。
  • 分区可将数据分到多个表,有范围、列表和哈希三种类型,使用前需考虑诸多因素,pgvector 可与 PostgreSQL 分区原生配合,但有挑战。
  • 外部数据包装器可用于处理远程数据源,postgres_fdw 可用于跨 PostgreSQL 数据库工作,在生产中使用需考虑安全等因素。
  • 可结合分区和 postgres_fdw 在多个实例上运行 pgvector 查询,实验设置了 3 个实例进行测试,包括可行性测试和评估对召回率及查询性能的影响。
  • 测试发现低 ef_search 值时 2 节点系统召回率有提升,总体 1 节点系统 QPS 高于 2 节点系统,当 1 节点内存受限后性能与 2 节点差异减小。

关键信息:

  • 过去 pgvector 版本重点:垂直扩展特征及索引构建并行性。
  • 垂直扩展便利原因:管理单实例数据更简单。
  • 运行分布式查询工具:分区(三种类型及注意事项)、外部数据包装器(postgres_fdw 及特点)。
  • 实验设置:3 个实例(2 个大实例和 1 个“头节点”)及相关配置参数。
  • 测试内容:“能否”可行性测试及“应否”对 ANN 基准测试的影响。
  • 测试结果:低 ef_search 值时 2 节点召回率提升,1 节点内存受限后性能与 2 节点差异减小。

重要细节:

  • 创建表、函数、索引等的 SQL 语句及参数设置。
  • 不同数据集在不同配置下的召回率和 QPS 数据及图表。
  • 实验中对 pgvector 测试的修改,如支持在单个节点创建表和索引等。
阅读 29
0 条评论