pgvecto.rs
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 让团队在不改变现有数据库架构的前提下,获得了企业级的高维向量检索能力,真正实现了“革命性升级向量搜索,而非替换数据库”。
运行环境要求
- 未说明
未说明
未说明

快速开始
pgvecto.rs
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 类型。
路线图 🗂️
请查看 路线图。想参与其中吗?欢迎讨论和贡献!
- 在 💬 Discord 上与我们交流
- 查看
good first issue 💖问题!
贡献 😊
我们欢迎来自开源社区、个人和合作伙伴的各种形式的贡献。
- 加入我们的 Discord 社区!
- 如果您想从源代码构建,请阅读我们的 贡献文档 和 开发教程。
贡献者 ✨
感谢以下各位优秀的贡献者(emoji key):
![]() Alex Chi 💻 |
![]() AuruTus 💻 |
![]() Avery 💻 🤔 |
![]() Ben Ye 📖 |
![]() Ce Gao 💼 🖋 📖 |
![]() Jinjing Zhou 🎨 🤔 📆 |
![]() Joe Passanante 💻 |
![]() Keming 🐛 💻 📖 🤔 🚇 |
![]() Mingzhuo Yin 💻 ⚠️ 🚇 |
![]() Usamoi 💻 🤔 |
![]() cutecutecat 💻 |
![]() odysa 📖 💻 |
![]() yi wang 💻 |
![]() yihong 💻 |
![]() 盐粒 Yanli 💻 |
||||||
|
|
||||||
本项目遵循 all-contributors 规范。欢迎任何形式的贡献!
致谢
感谢以下项目:
版本历史
v0.4.02024/11/21v0.4.0-alpha.22024/09/23v0.4.0-alpha.12024/09/05v0.3.02024/06/20v0.3.0-alpha.22024/06/01v0.3.0-alpha.12024/03/20v0.2.12024/03/04v0.0.0-nightly2024/02/26v0.2.1-alpha.22024/02/21v0.2.1-alpha.12024/02/21v0.2.02024/02/02v0.2.0-alpha.22024/01/30v0.2.0-alpha.12024/01/29v0.2.0-alpha2024/01/24v0.0.0-nightly.202401232024/01/22v0.0.0-nightly.202401212024/01/20v0.0.0-nightly.202401202024/01/19v0.0.0-nightly.202401192024/01/18v0.0.0-nightly.202401182024/01/17v0.0.0-nightly.202401172024/01/16常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
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 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。














