pgvector 是一个开源的 PostgreSQL 扩展,它提供了向量相似性搜索功能,现已发布 v0.8.0 版本。此版本包含了一些功能,可改善使用过滤器(例如 WHERE 子句)时的查询性能和可用性,并改进了搜索和构建 HNSW 索引的性能。
最新版本的 pgvector 在过滤方面进行了多种改进。这包括对 PostgreSQL 如何估算何时扫描近似最近邻(ANN)索引(如 HNSW 和 IVFFlat)的更新,这可能会导致 PostgreSQL 选择一个 B-tree 或其他更有效地执行查询的索引。如果您无需使用 ANN 索引即可达到相同的查询性能,通常这是首选,因为它能让您获得 100% 的召回率,或高相关性搜索。
此外,此 pgvector 版本还增加了 迭代索引扫描功能,这是一种防止“过度过滤”或返回结果不足以满足查询条件的技术。您可以分别通过 HNSW 和 IVFFlat 索引的 hnsw.iterative_scan 和 ivfflat.iterative_scan 参数来启用迭代扫描,如果初始索引扫描不满足查询条件,pgvector 将继续搜索索引,直到达到可配置的阈值(hnsw.max_scan_tuples 和 ivfflat.max_probes)。
更多信息,请参阅 0.8.0 的变更日志
https://github.com/pgvector/pgvector/blob/master/CHANGELOG.md#080-2024-10-30
有关 pgvector 的更多信息,包括如何开始使用,请访问 GitHub 上的项目仓库