pgvecto.rs

在 Postgres 里实现高性能向量搜索,无需迁移数据库。

pgvecto.rs 是一个基于 Rust 开发的 Postgres 向量检索扩展,旨在为 Postgres 数据库提供可扩展、低延迟且支持混合检索的向量搜索能力。它解决了传统数据库难以高效处理大规模向量数据的问题,让开发者无需引入独立的向量数据库,即可在熟悉的 Postgres 环境中实现 AI 应用的语义搜索、推荐系统等功能。其核心能力包括:支持多种索引类型(如 HNSW、IVF)以加速近似最近邻搜索;提供完整的 SQL 集成,兼容标准 Postgres 查询语法;支持向量与标量条件的混合过滤,提升检索精准度;利用 Rust 的内存安全和性能优势,实现高并发低延迟的查询响应。项目设计上注重与现有 Postgres 生态的无缝融合,提供类似 pgvector 的使用体验,但性能更强、功能更丰富,适合对检索性能和混合查询有较高要求的场景。

开源 free 开源模型
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 2190
维护状态 低维护
是否开源 是
定价模式 free

项目预览

项目数据

分类开源模型
开发团队tensorchord
所属国家
定价模式free
价格说明开源项目,Apache-2.0 许可证,完全免费,可自行部署使用。
访问状态
是否开源是
开源协议Apache-2.0
主要语言Rust
技术栈/模型chatgpt,faiss,gpt,hacktoberfest,llm,nearest-neighbor-search,postgres,rust,vector,vector-database
GitHub 星标★ 2190
30天Star增速
HF 下载量
上线时间2023-04-15 00:00:00
代码更新—
仓库体积—
本站数据更新—
维护状态低维护
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-09
浏览次数2

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

正在加载星标数据…

技术标签

使用教程

—

难度:入门 约 10 分钟 部署方式:Docker 6 步

环境要求

  • 已安装 Docker 并能拉取镜像
  • 本机安装 psql 命令行工具(PostgreSQL 客户端)
  • 本机 5432 端口未被占用

安装与启动步骤

  1. 1启动 Docker 容器

    用官方镜像启动带 pgvecto.rs 扩展的 Postgres,镜像标签为 pg17-v0.4.0,容器名 pgvecto-rs-demo。

    docker run 
      --name pgvecto-rs-demo 
      -e POSTGRES_PASSWORD=mysecretpassword 
      -p 5432:5432 
      -d ghcr.io/tensorchord/pgvecto-rs:pg17-v0.4.0
  2. 2连接数据库

    默认用户名 postgres,默认密码 mysecretpassword,回车后按提示输入密码即可进入 psql。

    psql -h localhost -p 5432 -U postgres
  3. 3启用 vectors 扩展

    在 psql 中执行两条 SQL,先删除已有同名扩展再创建,确保扩展被正确启用。

    DROP EXTENSION IF EXISTS vectors;
    CREATE EXTENSION vectors;
  4. 4创建向量表

    vector(n) 表示 n 维向量,示例建 3 维向量列,n 必须在 1 到 65535 之间。

    CREATE TABLE items (
      id bigserial PRIMARY KEY,
      embedding vector(3) NOT NULL
    );
  5. 5插入向量数据

    可直接用字符串字面量插入,也可用 real[] 数组转换后插入,两种写法都支持。

    INSERT INTO items (embedding)
    VALUES ('[1,2,3]'), ('[4,5,6]');
  6. 6执行相似度查询

    用 <-> 算欧氏距离排序取最相似的 5 条;另有 <#> 负点积、<=> 余弦距离两个运算符。

    SELECT * FROM items ORDER BY embedding <-> '[3,2,1]' LIMIT 5;

关键配置

配置项必填说明示例
POSTGRES_PASSWORD是设置 Postgres 超级用户 postgres 的密码mysecretpassword
POSTGRES_USER否默认用户为 postgres,README 未给出其他取值postgres
5432:5432是将容器 5432 端口映射到宿主机 54325432:5432

如何确认成功

psql 连接成功,且执行 CREATE EXTENSION vectors; 无报错,再运行向量查询能返回结果即表示部署成功。

常见问题

Q:为什么一定要进 psql 手动启用扩展?

A:镜像只预装了扩展文件,README 明确要求在数据库里执行 DROP EXTENSION IF EXISTS vectors; 再 CREATE EXTENSION vectors; 才能使用向量类型与运算符。

Q:vector(n) 的维度有什么限制?

A:README 说明 1 ≤ n ≤ 65535。直接用无参数的 vector 类型或维度与列定义不符时,将无法在该列上创建索引。

Q:连接时提示认证失败怎么办?

A:确认使用用户名 postgres 与启动容器时 -e POSTGRES_PASSWORD 指定的密码(示例为 mysecretpassword)。

Q:这个项目还推荐继续用吗?

A:README 顶部提示已有新实现 VectorChord,稳定性和性能更好,官方建议用户迁移,并提供了迁移指南链接。

注意事项

  • README 提示项目已有后继实现 VectorChord,新项目建议评估迁移。
  • vector 与标量条件可组合做混合过滤检索,适合语义搜索与推荐场景。
  • 命令中的密码 mysecretpassword 仅为示例,生产环境请替换为强密码。

核心亮点

  • 基于 Rust 实现,内存安全且性能卓越,查询延迟低
  • 支持 HNSW 和 IVF 索引,可灵活应对不同数据规模
  • 原生支持混合检索,向量与标量条件可组合过滤

不足之处

  • 项目相对年轻,文档和社区生态有待完善
  • 与成熟扩展如 pgvector 相比,生产环境验证案例较少

适用场景

  • AI 应用中的语义搜索(如文档、图片、商品检索)
  • 推荐系统需要实时向量相似度匹配
  • 需要结合向量与结构化条件进行精确过滤的场景

替代项目

pgvector、Milvus、Qdrant

项目介绍

pgvecto.rs 是基础设施领域的开源项目,由 tensorchord 开发,2023 年首次发布。

在全站 13,655 个收录项目中,它的 GitHub 星标数(2,190)位列前 30%,在基础设施分类中处于中上游。

项目已超过三个月没有代码更新,维护节奏明显放缓,最近一次代码更新于 2025-02-26。Apache-2.0 许可证,完全免费,可自行部署使用。从国内网络环境看,可直接访问。

它主要面向的使用场景是:AI应用中的语义搜索(如文档、图片、商品检索)。同类可对比的替代方案包括 pgvector、Milvus、Qdrant。

上一篇:kiro-gateway

下一篇:node-llama-cpp

同类项目推荐

freebuff-proxy 开源

聚合多账号,一键接入 OpenAI 兼容 API,轻松管理会话。

[DEPRECATED / UNMAINTAINED] No longer maintained.

★ 303 2026-08-20
microduck 开源

用 Rust 造一只会走路的桌面小鸭,快速上手双足机器人。

A Tiny biped duck robot

★ 9114 2026-09-10
soperator 开源

用 Kubernetes 原生方式运行 Slurm,简化 HPC 集群管理。

Run Slurm in Kubernetes

★ 442 2026-08-10
ollama 开源

一条命令本地跑起大模型,免费、私密、不卡顿

Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other···

★ 182186 2026-08-09