pgvector/pgvector

Open-source vector similarity search for Postgres

解决的问题

pgvector 是 PostgreSQL 的一个开源扩展,允许您在数据库内部直接存储和搜索向量嵌入。这消除了对独立专用向量数据库的需求,使您能够将嵌入与关系型数据一起保存,同时保持 ACID 兼容性,并支持标准 SQL 查询。

工作原理

它引入了新的 vector 数据类型和专用的距离运算符,用于执行相似性搜索。支持多种向量类型,包括单精度、半精度(halfvec)、二进制(bit)和稀疏向量(sparsevec)。

为了加速搜索,它提供了两种近似最近邻(ANN)索引类型:

  • HNSW(分层可导航小世界):一种多层图索引,提供高查询性能和更优的速度-召回率权衡,但需要更多内存且构建时间较慢。
  • IVFFlat(倒排文件平铺):将向量划分为列表(聚类),仅搜索最近的列表,相比 HNSW 具有更快的构建速度和更低的内存占用。

适用人群

已经使用 PostgreSQL 的开发人员和数据工程师,希望在 AI 应用(如 RAG 或推荐系统)中集成向量相似性搜索,而无需增加新的基础设施复杂性。

主要亮点

  • PostgreSQL 集成:充分利用 PostgreSQL 的完整功能,如 JOIN、ACID 兼容性、时间点恢复等。
  • 多样化的向量支持:支持单精度、半精度、二进制和稀疏向量。
  • 多种距离度量:支持 L2 距离、内积、余弦距离、L1 距离、汉明距离和杰卡德距离。
  • 混合搜索:可与 PostgreSQL 全文搜索结合,实现混合检索。
  • 高级索引:包含迭代索引扫描,可在使用 WHERE 子句过滤时提升召回率。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目