pgvector 是 PostgreSQL(也称为 Postgres)的扩展程序,可简化向量处理,让您能够直接在关系型数据库中存储、搜索和索引向量。
借助 pgvector,向应用程序和 AI 智能体添加相似度搜索等高级功能既简便又具备高可扩展性,无需迁移数据或更改应用架构即可适配新的向量数据类型。
pgvector 是 PostgreSQL 的一个开源扩展程序,可帮助您直接在现有 PostgreSQL 数据库中存储、索引和搜索高维度向量。pgvector 以支持以下功能而闻名:
向量以数值方式表示数据,并捕获数据的关键特征,将其映射到虚拟数学空间中。在此空间中,相似项(如字词、图片或对象)会紧密排列在一起。
例如,考虑“外套”和“夹克”这两个词。传统的基于关键字的搜索不会将这两个词视为相似,因为它们的字母差异很大。想要将这些关键字统一起来的电子商务系统需要手动完成这项工作。不过,这两个词的向量表示会非常接近,因为它们具有相似的含义,即为用户提供更准确的搜索结果,并为开发者节省时间。
同样,如果你拍摄两张不同的猫照片,那么从像素的角度来看,它们可能会有很大不同。但是,它们的向量嵌入在数学空间中会非常接近,就像人类可以轻松识别出这两张图片都是猫的图片一样:

为了实现这一目标,嵌入模型会将原始数据(例如图片或文本)转换为向量嵌入。pgvector 会将这些嵌入存储在数据库中。当用户提交查询时,该输入也会转换为向量。然后,pgvector 会计算查询向量与存储的向量之间的距离,以高效地识别具有最高相似度得分的“最近邻”。
想了解不同类型的最近邻搜索?查看我们的生成式 AI 应用开发指南。
PostgreSQL 是一种强大的开源关系型数据库管理系统,旨在处理使用表、行和列的结构化数据。
pgvector 是在 PostgreSQL 内运行的扩展程序。它向数据库添加了新的数据类型“vector”,允许存储和处理向量嵌入以及标准运营数据。
不是,pgvector 是一种扩展程序,可直接集成到您现有的 PostgreSQL 数据库中。这样,您无需管理新的或单独的基础设施,即可添加高级 AI 和搜索功能。
为了支持当今 AI 驱动的功能,您需要能够存储和管理向量嵌入。
PostgreSQL 本身功能强大,但由于其数据以表格、行和列的形式严格结构化,因此其查询功能在很大程度上仅限于关键字和模式匹配。
在 AI 时代,文本、图片和音频等复杂数据会编码为向量表示形式。这些编码使 AI 模型能够掌握数据中的上下文和语义关系,从而为智能搜索、推荐和生成式 AI 等功能奠定基础。
pgvector 扩展程序将语义搜索引入 PostgreSQL,使用向量嵌入根据查询的含义查找结果,而不是像 SQL 那样仅根据关键字匹配查找结果。此过程称为相似度搜索,可让您直接在应用中轻松添加高级搜索功能,而无需重新构建或将数据移至单独的向量数据库。
想要详细了解向量嵌入?查看我们的生成式 AI 应用开发指南。
pgvector 能够处理高维度向量,因此支持各种高级应用。
传统关系型数据库中的关键字匹配往往无法识别数据中的有意义的关联。相似度搜索使用欧几里得距离和余弦距离等指标比较向量的邻近度,以发现更深层的模式,这对于图像识别和语义搜索等应用至关重要,因为这些应用会根据含义对结果进行排名。例如,在电子商务领域,相似度搜索可以通过分析用户行为并查找相关商品来提供商品推荐。
基于向量的自然语言处理可让 AI 智能体理解上下文,从而实现更个性化的对话和更准确的回答。多语言支持增强了它们作为虚拟助理和客户服务平台的性能。
pgvector 支持存储和查询向量嵌入,这对于识别数据中的异常模式至关重要,因此可以增强 AI 工作流。通过分析向量邻近度,它可以帮助实时检测异常值,以实现欺诈防范、网络安全或质量控制。
情感分析可以分析消息的意图,让您能够适当地将负面评论转送给相关人员,以便更快地采取行动,制定量身定制的解决方案。
pgvector 利用 PostgreSQL 的可伸缩性、事务支持和强大的可靠性,高效地管理高维度数据集。此外,它采用熟悉的 SQL 语法,使现有团队能够轻松上手,无需额外的工具或基础设施专门用于向量索引和搜索。
轻松集成到基于 PostgreSQL 的现有应用中。
提高了 PostgreSQL 处理不断增长的数据集时的可伸缩性。
提供可自定义的功能,例如距离指标和索引。
拥有 PostgreSQL 值得信赖的安全性和可靠性。
让您能够跨结构化和非结构化数据进行无缝查询。
提供对开发者友好的解决方案,用于处理大规模高维数据。
如果需要一个既擅长传统 SQL 查询又擅长现代顶点搜索的数据库,不妨考虑 AlloyDB for PostgreSQL。AlloyDB 使用 Google 开发的 ScaNN(可扩容最近邻)向量相似度搜索算法,在大型数据库中处理事务和分析工作负载时,性能明显优于其他基于云的 PostgreSQL 服务。
了解 AlloyDB 如何同时搜索结构化和非结构化数据。
Cloud SQL 和 AlloyDB for PostgreSQL 支持 pgvector,让您可以使用标准 SQL 命令存储和查询向量嵌入。
使用您首选的 PostgreSQL 客户端(例如 psql、pgAdmin 或 Google Cloud 控制台)连接到 Cloud SQL 或 AlloyDB 实例。
运行以下 SQL 命令,在数据库上启用该扩展程序。您只需为每个数据库执行一次此操作。
创建新表(或更改现有表),以包含用于存储向量数据的列。您必须指定向量的维度。例如,如需创建用于存储 3 维嵌入的表,请执行以下操作:
您可以像插入标准数据一样插入向量嵌入。向量的格式为用方括号括起来的数组。
现在,您可以查询数据以查找最近邻。<-> 运算符计算欧几里得距离(L2 距离),通常用于查找最相似的项。
对于较大的数据集,添加索引可以大幅提高搜索性能。HNSW 和 ScaNN 索引都是常用选项。下面是一个 HNSW 示例: