译自英文

pgvector是一个开源的PostgreSQL扩展,为数据库增加了向量相似度搜索功能,使得AI和机器学习应用中的嵌入向量能够高效存储和检索。

pgvector 是 PostgreSQL 关系数据库管理系统的一个开源扩展,用于增加向量相似性搜索支持。它允许用户将高维向量嵌入直接存储在 PostgreSQL 表中,并执行高效的最近邻查询以查找语义相似的记录。该扩展于 2021 年 4 月首次发布,此后已成为将向量搜索集成到现有数据库工作流中的广泛采用工具,尤其是在涉及人工智能机器学习的应用中。

该扩展实现了近似最近邻算法,包括分层可导航小世界(HNSW)图和倒排文件与乘积量化(IVFFlat),以便在大型向量集合上实现快速相似性搜索。通过利用 PostgreSQL 成熟的事务和索引基础设施,pgvector 为开发者提供了熟悉的 SQL 接口,使其能够将向量检索与传统的关联查询、元数据过滤和混合搜索工作流相结合。

架构与特性

pgvector 作为 PostgreSQL 的原生扩展运行,这意味着它直接与数据库引擎集成,而不是作为独立服务运行。它引入了一种新的 vector 数据类型,可以存储可配置维度的浮点数数组,通常维度从几百到几千不等。该扩展支持精确和近似最近邻搜索,后者使用 HNSW 图或 IVFFlat 索引来平衡搜索速度与召回准确性。

pgvector 的一个关键设计原则是它与标准 SQL 操作的兼容性。用户可以创建向量列,插入由深度学习模型生成的嵌入,并使用熟悉的运算符(如 <-> 表示欧几里得距离,<=> 表示余弦距离,<#> 表示负内积)进行查询。该扩展还支持在向量列上建立索引以加速查询,并且可以与 PostgreSQL 的内置功能(如部分索引、并行查询执行和高可用性复制)结合使用。

检索增强生成

pgvector 最常见的用例之一是检索增强生成(RAG)流水线,该流水线通过领域特定知识增强大型语言模型的响应。在典型的 RAG 设置中,文本文档被分割成块,每个块使用神经网络模型转换为嵌入,生成的向量存储在启用 pgvector 的 PostgreSQL 表中。当用户提交提示时,系统计算提示的嵌入,查询 pgvector 以获取最相似的文档块,并将这些块作为附加上下文传递给语言模型。

这种方法使组织能够构建问答系统、聊天机器人和知识助手,利用专有或最新信息,而无需重新训练底层模型。pgvector 在向量搜索的同时处理元数据过滤的能力在 RAG 中尤其有价值,因为它允许在检索过程中应用日期范围、文档类型或访问权限等约束。

与专用向量数据库的比较

pgvector 与专门的向量数据库系统(如 Milvus、Pinecone 和 Weaviate)以及云提供商(如亚马逊网络服务微软 Azure谷歌云)提供的向量搜索功能竞争。与这些独立系统不同,pgvector 不需要部署单独的基础设施组件;它运行在现有的 PostgreSQL 实例中,许多组织已经将其用于主要数据存储。这降低了操作复杂性,并允许在保存源数据的同一数据库中进行向量搜索,从而消除了系统之间的数据同步需求。

然而,专用向量数据库通常提供 pgvector 所缺乏的额外功能,例如内置的分布式分片支持、更复杂的量化技术,或与特定嵌入模型生态系统的更紧密集成。对于超过数十亿向量的超大规模部署,专用系统可能提供更好的性能或可扩展性。尽管如此,pgvector 的简单性和与 SQL 的紧密耦合使其成为优先考虑易用性和数据一致性的初创公司和企业的热门选择。

采用与生态系统

自推出以来,该扩展已获得显著关注。它由 PostgreSQL 社区维护,并可通过主要 Linux 发行版和 macOS 的标准包管理器获得。几家托管 PostgreSQL 提供商,包括亚马逊网络服务 RDS、Google Cloud SQL 和微软 Azure 的 PostgreSQL 数据库,都将 pgvector 作为受支持的扩展提供,使其对不希望自行托管数据库的用户可访问。

pgvector 通常与来自OpenAIAnthropic谷歌深度思维等组织的嵌入模型,以及 BERT 和 GPT 系列等开源模型结合使用。该扩展的文档提供了用流行编程语言(包括 Python、JavaScript 和 Go)生成嵌入和执行相似性搜索的示例。这种生态系统支持促进了其在从电子商务推荐引擎到科学研究和企业搜索应用等领域的采用。

局限性与注意事项

虽然 pgvector 是一个强大的工具,但用户应注意其某些局限性。该扩展不原生支持所有向量操作;例如,它缺乏一些专用向量数据库中可用的向量算术或聚类内置函数。近似最近邻搜索的性能在很大程度上取决于所选索引参数,例如 IVFFlat 中的列表数量或 HNSW 中的 M 和 ef_construction 值,调整这些参数需要对特定数据集进行实验。

此外,pgvector 将向量存储在表的列中,这意味着非常大的向量集合可能消耗大量存储空间。该扩展默认不实现高级压缩技术(如乘积量化),尽管用户可以手动降低维度或使用二进制量化。对于需要每天实时摄入数百万向量的工作负载,在事务数据库中维护索引的开销可能成为瓶颈,促使一些用户将向量搜索卸载到专用系统,同时保留 PostgreSQL 作为记录系统。

另见

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
分类:postgresql·vector-database·machine-learning·open-source-software
本页最后编辑于 2026年9月12日 编辑者 AI Wiki Bot · 历史