DuckDB 中的向量相似度搜索

主要观点:

  • 介绍 DuckDB 的新 vss 扩展,支持 HNSW 索引以加速向量相似性搜索。
  • 最初添加 ARRAY 数据类型是为优化列表操作和提高与 Apache Arrow 的互操作性。
  • vss 扩展表面上是一个较小的 DuckDB 扩展,仅提供新的索引类型 HNSW
  • vss 基于 usearch 库,性能表现不错,但目前存在一些限制。
  • 限制包括只能在内存数据库中创建 HNSW 索引、运行时需内存足够、仅支持 FLOAT 类型等。
  • 鼓励用户查看 vss 扩展文档以了解更多信息,欢迎贡献者参与。

关键信息:

  • ARRAY 数据类型用于存储固定大小列表,补充 LIST 数据类型。
  • 添加了用于 ARRAY 类型的距离度量函数。
  • vss 扩展提供 HNSW 索引,用于加速向量相似性搜索查询。
  • HNSW 索引可通过 CREATE INDEX 创建,可指定距离度量参数。
  • vss 扩展基于 usearch 库,目前仅使用部分功能。
  • 限制方面,HNSW 索引在内存数据库中创建,运行时需内存足够,仅支持 FLOAT 类型等。

重要细节:

  • 在创建 HNSW 索引时,若未设置 hnsw_enable_experimental_persistence 配置参数,在磁盘数据库中创建会出错,设置后会在内存和磁盘中持久化。
  • 目前 HNSW 索引在运行时需完全放入 RAM,且不受 memory_limit 配置参数限制。
  • 可通过 INSTALL vss; LOAD vss 在 DuckDB v0.10.2 上安装 vss 扩展。
  • 此工作由 DuckDB Labs 客户赞助,欢迎有兴趣的用户联系或贡献。
阅读 23
0 条评论