

pgvector 为任何 PostgreSQL 数据库添加了向量相似度搜索功能。将嵌入(embeddings)作为原生列存储,使用纯 SQL 通过余弦或 L2 距离进行查询。无需额外服务。已被 Supabase、AWS RDS、GCP Cloud SQL 和 Neon 上的团队用于生产环境。
pgvector 是 PostgreSQL 的一个开源扩展,可为任何现有的 Postgres 数据库添加向量相似度搜索功能。它由 Andrew Kane 于 2021 年创建,并在 PostgreSQL License(一种类似于 MIT 的宽松开源许可证)下发布,允许您将高维嵌入(embeddings)作为原生列类型进行存储,并使用标准 SQL 运算符运行近似最近邻查询。该扩展可在 github.com/pgvector/pgvector 获取,截至 2026 年 4 月已获得超过 13,000 个 GitHub 星标,并受到 Amazon RDS、Amazon Aurora、Google Cloud SQL、Azure Database for PostgreSQL、Supabase 和 Neon 等平台的原生支持。没有供应商锁定,没有订阅费,也没有按查询计费:您的成本仅限于运行 Postgres 的费用。
该扩展添加了三种距离运算符:<-> 用于 L2(欧几里得)距离,<#> 用于内积,以及 <=> 用于余弦距离。它支持两种索引类型:IVFFlat(基于分区的近似搜索,需要训练步骤)和 HNSW(分层可导航小世界,于 2023 年 10 月在 v0.5.0 中添加,支持增量构建并在无需训练阶段的情况下提供更高的召回率)。根据版本的不同,您可以存储高达数千维的向量,使其与 OpenAI、Cohere、Google 等的嵌入模型兼容。查询在 Postgres 内部运行,因此您可以将向量结果与常规关系表进行 JOIN 操作,应用行级安全策略,并使用现有的连接池和 ORM,而无需任何新的基础设施。
截至 2026 年 4 月 pgvector 的实际功能
pgvector 当前的稳定版本 (v0.8.x) 作为标准的 Postgres 扩展发布:只需一条 CREATE EXTENSION vector; 命令即可在任何兼容的数据库中启用它。您可以定义一个声明了维度数量的向量列(例如,针对 OpenAI ada-002 嵌入的 embedding vector(1536)),使用标准的 INSERT 将嵌入与常规数据一起插入,并在 WHERE 子句或 ORDER BY 中使用距离运算符进行查询。2023 年 10 月添加的 HNSW 索引现在是超过约 100,000 个向量的生产工作负载的推荐索引类型。它支持并发插入而无需重建步骤,并在合理的查询速度下始终提供 95% 以上的召回率。对于可以接受训练阶段成本且内存受限的工作负载,IVFFlat 仍然可用。这两种索引类型在较新的 Postgres 版本中都支持并行索引创建。该扩展得到积极维护,定期有代码提交,主要云提供商在发布后几周内就会跟进新版本。
pgvector 与 Pinecone 和 Qdrant 的定位对比
截至 2026 年 4 月,向量数据库市场大致分为三个阵营:专用的托管服务(Pinecone)、开源的专用数据库(Qdrant、Weaviate、Chroma)以及 Postgres 扩展(pgvector)。它们之间的权衡是具体且基于架构的。
pgvector vs. Pinecone: Pinecone 是一个闭源的、纯托管的服务,从头开始为大规模近似最近邻搜索而构建。其分布式架构在处理数十亿个向量时,比在单个 Postgres 实例中的 pgvector 更为流畅。它提供实时索引更新、直接连接到索引的内置元数据过滤(而不是查询后的 SQL WHERE 子句),以及无 SQL 的 REST/SDK 接口。Serverless Pinecone 名义上是免费起步的,但一旦索引规模增长,付费层级大约从每月 $70 开始。核心的权衡在于性能上限和供应商锁定,与留在 Postgres 内部的简单性之间的对比。如果您已经有一个 Postgres 应用程序,Pinecone 需要一项新服务、一个新的 API 客户端、一个新的计费关系,以及查询两个不同数据存储并关联结果的应用程序代码。而 pgvector 将一切都保留在一个地方。
pgvector vs. Qdrant: Qdrant 是一个用 Rust 编写的开源、可自托管的向量数据库,也作为托管云服务提供。它使用 HNSW 作为其主要索引(与 pgvector 在 v0.5.0 中采用的算法相同),但专门针对向量工作负载进行了实现,这意味着在同等召回率下具有更高的原始 QPS,特别是在高并发负载下。Qdrant 将有效负载过滤视为一等索引原语:元数据过滤器连接到 HNSW 遍历中,而不是作为查询后过滤器应用。基准测试一致表明,在高并发情况下,Qdrant 的吞吐量优于 pgvector。代价是运维方面的:Qdrant 是一个独立的状态服务,具有自己的部署、存储格式、API 和监控。您无法在单个查询中将 Qdrant 结果与您的 Postgres 用户表进行 JOIN 操作;您需要从 Qdrant 获取数据,然后在应用程序代码中或通过第二次数据库往返进行关联。对于有 DevOps 带宽来管理另一项服务,并且向量工作负载将超过 2000 万到 5000 万行的团队来说,Qdrant 是更强大的技术选择。对于其他所有人来说,pgvector 的“它只是你的 Postgres”这一论点很难被拒绝。
"上个季度我们从 Pinecone 迁移到了 pgvector。我们的 p99 查询延迟变高了,但我们消除了一整个基础设施依赖,每月的账单下降了大约 $400。对于我们不到 500 万个向量的规模来说,这是一个正确的决定。" -- throwaway_ml_eng,Hacker News,2023 年 11 月
日常工作流的实际情况
最常见的 pgvector 工作流是 RAG(检索增强生成)管道:对文档进行分块,通过调用 OpenAI 或 Cohere 的 API 生成嵌入,将嵌入和源文本存储在 Postgres 表中,然后在查询时为用户的问题生成嵌入,并检索前 K 个最接近的块以注入到 LLM 提示词中。使用 pgvector,这只是一个单一的 SQL 查询。嵌入与您的用户、文档、权限和审计日志位于同一个数据库中。行级安全性自动适用。您现有的 Postgres 监控(pg_stat_statements、慢查询日志、Datadog 等)涵盖了向量查询。数据库迁移也仅仅是 ALTER TABLE 语句。
2023 年 10 月发布的 v0.5.0 添加了 HNSW 索引,这是社区广泛认为 pgvector 已准备好投入生产的时刻。在该版本之前,IVFFlat 是唯一的近似索引选项。IVFFlat 需要在加载数据后进行显式的训练步骤(SET ivfflat.probes),在大型数据集上探测计数较低时会降低召回率,并且如果不进行定期重新训练就无法增量更新。2022-2023 年的多起生产中断和博客文章都追溯到随着集合增长而导致的 IVFFlat 召回率下降。HNSW 消除了训练要求,并提高了实际召回率的标准。宣布 v0.5.0 的 GitHub 问题线程在几天内积累了数百条评论,团队报告称长期存在的生产问题立即得到了缓解。
"0.5.0 中的 HNSW 索引支持是让 pgvector 对我们真正可用的关键。在此之前,我们在任何超过一百万行的数据上都会遇到全表扫描。有了 HNSW 之后,简直是天壤之别。" -- datasci_pete,GitHub 问题线程,pgvector/pgvector,2023 年末
pgvector 适合哪些人
pgvector 适合那些已经在使用 Postgres 并且希望在不向其技术栈添加新服务的情况下进行向量搜索的团队。这涵盖了初创企业和扩大规模市场的一大部分:任何在 Supabase、Neon、RDS、Cloud SQL 或自托管 Postgres 实例上的用户都可以通过一条命令启用 pgvector,并在当天开始存储嵌入。它适用于 RAG 管道、语义搜索功能、推荐引擎和重复检测工作流,在高达约 1000 万到 2000 万个向量的规模下具有可接受的查询性能。它特别适合多租户 SaaS 应用程序,在这些应用程序中,Postgres 的行级安全策略提供每个客户的数据隔离,而无需在向量层中进行任何自定义访问控制层。对于 DevOps 带宽有限、无法证明管理另一项状态服务是合理选择的团队来说,即使性能数据不是同类最佳,pgvector 的操作简便性也极具吸引力。
pgvector 不是什么
在大规模或高并发写入负载下,pgvector 并不是专用向量数据库的替代品。在 5000 万个向量及以上,或者在向量存储每秒被查询数千次的应用程序中,pgvector 的 Postgres 查询规划器开销和基于 MVCC 的并发性成为明显的限制。处于这种情况的团队一致报告称,他们会迁移到 Qdrant(自托管)或 Pinecone(托管),而不是试图通过调优来绕过 pgvector 的限制。
pgvector 不提供原生的混合搜索。对于需要将 BM25 关键字排名与向量相似度相结合的 RAG 管道(截至 2025-2026 年,这种模式在生产检索系统中越来越标准),您必须使用 Postgres 全文搜索、pg_trgm 或外部 BM25 索引自己组装这些部分,然后在应用程序代码中融合分数。像 Weaviate 和 Elasticsearch 这样的专用系统将混合搜索作为具有可调 alpha 参数的一等模式提供。如果混合检索是您产品的核心,pgvector 需要大量额外的工程工作才能达到专用系统开箱即用的效果。
如果您的应用程序不在 Postgres 上,pgvector 也帮不了您。如果您的主要数据存储是 MongoDB、MySQL、Cassandra 或纯对象存储,那么 pgvector 不适合您:您需要一个专用的向量数据库或托管服务。
用户评价
暂无评价,快来分享你的第一条体验吧!
登录 后即可撰写评价。
收录于精选合集
包含 pgvector 的精选合集。
相关文章
与 pgvector 相关的指南和文章。

Build an Internal Knowledge Bot (RAG) for Your Company: A No-Nonsense Guide

Replace 6 SaaS Subscriptions With 4 n8n AI Agents (2026)

Turn Any AI Agent Into a Superagent: The 12-Integration Stack (2026)

Replit Pricing Explained (2026): Core vs Pro and Effort-Based Agent Billing

RFP and Proposal Auto-Fill: The Agent That Handles 80% of the Repeating Questions (2026)
