pgvecto.rs

GitHub
2.2k 84 中等 1 次阅读 2天前Apache-2.0Agent开发框架数据工具语言模型
AI 解读 由 AI 自动生成,仅供参考

pgvecto.rs 是一款专为 PostgreSQL 设计的开源向量搜索扩展,旨在让传统数据库具备高效、可扩展的向量相似度检索能力。它基于 Rust 语言开发,利用 pgrx 框架深度集成到 Postgres 中,帮助用户在不引入额外向量数据库的前提下,直接在现有业务数据库中完成复杂的 AI 数据查询任务。

该工具主要解决了在大规模数据场景下,传统向量搜索方案难以兼顾过滤精度、高维支持与服务延迟的痛点。与常见的 pgvector 相比,pgvecto.rs 引入了独特的 VBASE 算法,确保在执行“向量 TopK+ 条件过滤”混合查询时结果完整且准确;同时支持高达 65535 维的向量数据,并提供 FP16、INT8 等多种数据类型以优化存储与计算效率。此外,其运行时动态调度 SIMD 指令的特性,能充分挖掘不同硬件的性能潜力。

pgvecto.rs 非常适合正在构建推荐系统、图像检索、语义搜索等 AI 应用的后端开发者,以及希望简化技术栈、避免维护独立向量数据库的研究人员和数据工程师。通过简单的 Docker 部署或 SQL 命令即可快速启用,让开发者能够专注于业务逻辑创新,而非底层基础设施的繁琐运维。值得注意的是,官方已推出性能更优的继任项目 VectorChord,建议新用户关注迁移指南以获得更佳体验。

使用场景

某电商平台的推荐系统团队需要在现有的 PostgreSQL 用户行为数据库中,实时整合商品图像特征进行“以图搜图”和个性化推荐。

没有 pgvecto.rs 时

  • 高维支持受限:原生方案难以高效处理超过 2000 维的深度学习图像特征向量,迫使团队对数据进行有损降维,导致推荐准确率下降。
  • 过滤结果缺失:在执行“查找相似商品且库存大于 10"的混合查询时,常因预过滤机制缺陷导致返回结果不足(如请求 10 条仅返回 5 条),严重影响用户体验。
  • 架构复杂冗余:为获得高性能向量检索,不得不额外部署独立的向量数据库(如 Milvus 或 Qdrant),增加了数据同步延迟、运维成本及系统故障点。
  • 存储效率低下:缺乏对 FP16 或 INT8 等压缩数据类型的原生支持,海量向量数据占用过多内存与磁盘空间,推高了基础设施成本。

使用 pgvecto.rs 后

  • 突破维度限制:直接支持高达 65535 维的向量存储与检索,完整保留模型特征信息,显著提升了图像匹配的精准度。
  • 混合查询精准:利用独有的 VBASE 算法,完美解决带过滤条件的 TopK 搜索问题,确保在限定库存、价格等条件下仍能返回足量且准确的结果。
  • 架构极简统一:作为 PostgreSQL 插件无缝集成,团队无需维护额外组件,直接在 SQL 中完成关系型数据与向量数据的联合查询,实现零延迟数据一致性。
  • 性能与成本优化:通过动态 SIMD 指令加速及对二进制、FP16 等压缩类型的支持,在提升查询吞吐量的同时,大幅降低了存储资源消耗。

pgvecto.rs 让团队在不改变现有数据库架构的前提下,获得了企业级的高维向量检索能力,真正实现了“革命性升级向量搜索,而非替换数据库”。

运行环境要求

操作系统
  • 未说明
GPU

未说明

内存

未说明

依赖
notes该工具是 PostgreSQL 的扩展插件,主要使用 Rust 编写。官方推荐使用 Docker 镜像快速启动(基于特定 PG 版本)。支持高达 65535 维的向量,提供二进制、FP16 和 INT8 等数据类型。注意:项目方已推出新实现 VectorChord,建议用户迁移至 VectorChord 以获得更好的稳定性和性能。
python未说明
PostgreSQL (支持版本见 Docker 标签,如 pg17)
pgrx
Rust
pgvecto.rs hero image

快速开始

pgvecto.rs

Discord邀请链接 trackgit-views all-contributors

pgvecto.rs 是一个 PostgreSQL 扩展,提供了向量相似性搜索功能。它使用 Rust 语言编写,并基于 pgrx 构建。

[!NOTE] 我们推出了新的实现 VectorChord,具有更好的稳定性和性能。建议用户迁移到 VectorChord。请查看迁移指南

与 pgvector 的比较

更多详细信息,请参阅 pgvecto.rs 与 pgvector 的比较

特性 pgvecto.rs pgvector
过滤 引入 VBASE 方法,支持向量搜索与关系查询(例如:单向量 TopK + 过滤 + 联接)。 应用过滤条件时,结果可能不完整。例如,原本计划限制结果为 10 条,但在应用过滤后可能只得到 5 条结果。
向量维度 支持高达 65535 维度。 最多支持 2000 维度。
SIMD 在运行时动态调度 SIMD 指令,以根据具体机器的硬件能力最大化性能。 在 0.7.0 版本中,为 Linux x86-64 平台的距离函数添加了 CPU 分派功能。
数据类型 引入了额外的数据类型:二进制向量、FP16(16 位浮点数)和 INT8(8 位整数)。 -
索引 将索引的存储和内存管理与 PostgreSQL 分开处理。 依赖 PostgreSQL 的原生存储引擎。
WAL 支持 提供数据的预写日志(WAL)支持,索引的 WAL 支持仍在开发中。 提供索引和数据的预写日志(WAL)支持。

文档

快速入门

对于新用户,我们推荐使用 Docker 镜像,以便快速上手。

docker run \
  --name pgvecto-rs-demo \
  -e POSTGRES_PASSWORD=mysecretpassword \
  -p 5432:5432 \
  -d ghcr.io/tensorchord/pgvecto-rs:pg17-v0.4.0

然后您可以使用 psql 命令行工具连接到数据库。默认用户名为 postgres,默认密码为 mysecretpassword

psql -h localhost -p 5432 -U postgres

运行以下 SQL 语句以确保扩展已启用。

DROP EXTENSION IF EXISTS vectors;
CREATE EXTENSION vectors;

pgvecto.rs 引入了一种新的数据类型 vector(n),表示 n 维向量。括号中的 n 表示向量的维度。

您可以通过以下 SQL 创建一张包含向量列的表:

-- 创建包含向量列的表

CREATE TABLE items (
  id bigserial PRIMARY KEY,
  embedding vector(3) NOT NULL -- 3 维
);

[!TIP] vector(n) 只有在 $1 \leq n \leq 65535$ 时才是有效的数据类型。由于 PostgreSQL 的限制,有可能创建一个 $5$ 维的 vector(3) 类型值,且 vector 也是有效数据类型。然而,您仍然不能将 $0$ 个标量或超过 $65535$ 个标量放入向量中。如果某列使用 vector 类型,而某些值与该列所声明的维度不符,则无法为其创建索引。

接下来,您可以按如下方式填充表中的向量数据:

-- 插入值

INSERT INTO items (embedding)
VALUES ('[1,2,3]'), ('[4,5,6]');

-- 或通过数组到向量的转换插入值

INSERT INTO items (embedding)
VALUES (ARRAY[1, 2, 3]::real[]), (ARRAY[4, 5, 6]::real[]);

我们支持三种运算符来计算两个向量之间的距离:

  • <->: 平方欧几里得距离,定义为 $\Sigma (x_i - y_i) ^ 2$。
  • <#>: 负点积,定义为 $- \Sigma x_iy_i$。
  • <=>: 余弦距离,定义为 $1 - \frac{\Sigma x_iy_i}{\sqrt{\Sigma x_i^2 \Sigma y_i^2}}$。
-- 通过运算符调用距离函数

-- 平方欧几里得距离
SELECT '[1, 2, 3]'::vector <-> '[3, 2, 1]'::vector;
-- 负点积
SELECT '[1, 2, 3]'::vector <#> '[3, 2, 1]'::vector;
-- 余弦距离
SELECT '[1, 2, 3]'::vector <=> '[3, 2, 1]'::vector;

您可以这样简单地搜索向量:

-- 查询相似的嵌入
SELECT * FROM items ORDER BY embedding <-> '[3,2,1]' LIMIT 5;

一个简单的问答应用

请查看 问答应用 教程。

半精度浮点数

vecf16 类型除了标量类型不同外,其他方面都与 vector 相同。它存储 16 位浮点数。如果您希望减少内存占用以获得更好的性能,可以尝试将 vector 类型替换为 vecf16 类型。

路线图 🗂️

请查看 路线图。想参与其中吗?欢迎讨论和贡献!

贡献 😊

我们欢迎来自开源社区、个人和合作伙伴的各种形式的贡献。

贡献者 ✨

感谢以下各位优秀的贡献者(emoji key):

Alex Chi
Alex Chi

💻
AuruTus
AuruTus

💻
Avery
Avery

💻 🤔
Ben Ye
Ben Ye

📖
Ce Gao
Ce Gao

💼 🖋 📖
Jinjing Zhou
Jinjing Zhou

🎨 🤔 📆
Joe Passanante
Joe Passanante

💻
Keming
Keming

🐛 💻 📖 🤔 🚇
Mingzhuo Yin
Mingzhuo Yin

💻 ⚠️ 🚇
Usamoi
Usamoi

💻 🤔
cutecutecat
cutecutecat

💻
odysa
odysa

📖 💻
yi wang
yi wang

💻
yihong
yihong

💻
盐粒 Yanli
盐粒 Yanli

💻
添加您的贡献

本项目遵循 all-contributors 规范。欢迎任何形式的贡献!

致谢

感谢以下项目:

  • pgrx - 使用 Rust 编写的 PostgreSQL 扩展框架
  • pgvector - 使用 C 语言编写的用于向量相似性搜索的 PostgreSQL 扩展

版本历史

v0.4.02024/11/21
v0.4.0-alpha.22024/09/23
v0.4.0-alpha.12024/09/05
v0.3.02024/06/20
v0.3.0-alpha.22024/06/01
v0.3.0-alpha.12024/03/20
v0.2.12024/03/04
v0.0.0-nightly2024/02/26
v0.2.1-alpha.22024/02/21
v0.2.1-alpha.12024/02/21
v0.2.02024/02/02
v0.2.0-alpha.22024/01/30
v0.2.0-alpha.12024/01/29
v0.2.0-alpha2024/01/24
v0.0.0-nightly.202401232024/01/22
v0.0.0-nightly.202401212024/01/20
v0.0.0-nightly.202401202024/01/19
v0.0.0-nightly.202401192024/01/18
v0.0.0-nightly.202401182024/01/17
v0.0.0-nightly.202401172024/01/16

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

158.1k|★★☆☆☆|今天
开发框架Agent语言模型

opencode

OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信

144.3k|★☆☆☆☆|今天
Agent插件

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|6天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像