
tensorchord/pgvecto-rspgvecto.rs是一个PostgreSQL扩展,提供高效的向量相似度搜索功能,采用Rust编写并基于pgrx框架。该Docker镜像已预先集成PostgreSQL与pgvecto.rs扩展,可快速部署具备向量搜索能力的数据库服务,适用于需要处理高维向量数据的场景。
| 特性 | 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快速启动pgvecto.rs服务:
bashdocker run \ --name pgvecto-rs-demo \ -e POSTGRES_PASSWORD=mysecretpassword \ -p 5432:5432 \ -d tensorchord/pgvecto-rs:pg16-v0.2.1
参数说明:
--name:容器名称-e POSTGRES_PASSWORD:设置PostgreSQL默认用户(postgres)密码-p 5432:5432:端口映射(主机端口:容器端口)-d:后台运行容器tensorchord/pgvecto-rs:pg16-v0.2.1:镜像名称(PostgreSQL 16版本,pgvecto-rs v0.2.1)使用psql客户端连接容器内数据库:
bashpsql -h localhost -p 5432 -U postgres
默认凭据:
postgresPOSTGRES_PASSWORD值(示例中为mysecretpassword)连接后执行以下SQL启用pgvecto.rs扩展:
sqlDROP EXTENSION IF EXISTS vectors; CREATE EXTENSION vectors;
使用vector(n)数据类型定义n维向量列:
sql-- 创建包含向量列的表 CREATE TABLE items ( id bigserial PRIMARY KEY, embedding vector(3) NOT NULL -- 3维向量 );
注意:
vector(n)仅在1 ≤ n ≤ 65535时有效。PostgreSQL允许创建vector类型(无维度限制)或维度不匹配的向量值,但此类情况下无法为该列创建索引。
支持通过向量字面量或数组转换插入数据:
sql-- 方法1:使用向量字面量 INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]'); -- 方法2:通过数组转换 INSERT INTO items (embedding) VALUES (ARRAY[1, 2, 3]::real[]), (ARRAY[4, 5, 6]::real[]);
支持三种距离计算运算符:
<->:平方欧氏距离,定义为 Σ(x_i - y_i)²<#>:负点积,定义为 -Σx_i y_i<=>:余弦距离,定义为 1 - (Σx_i y_i) / (√Σx_i² √Σy_i²)示例:
sql-- 计算平方欧氏距离 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;
查询相似向量并按距离排序:
sql-- 查询与目标向量最相似的前5条记录 SELECT * FROM items ORDER BY embedding <-> '[3,2,1]' LIMIT 5;
使用vecf16类型(16位浮点数向量)减少内存占用:
sql-- 创建使用半精度浮点数向量的表 CREATE TABLE items_f16 ( id bigserial PRIMARY KEY, embedding vecf16(3) NOT NULL -- 3维16位浮点向量 );
完整使用指南请参考官方文档:
pgvecto.rs 官方文档
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务