vectorize

在PostgreSQL中封装RAG向量检索服务

概览

扩展包名版本分类许可证语言
pg_vectorize0.26.1RAGPostgreSQLRust
ID扩展名BinLibLoadCreateTrustReloc模式
1830vectorizevectorize
相关扩展pg_cron pgmq vector vchord vectorscale pg_summarize pg_tiktoken pg4ml pgml pg_later pg_similarity

manually upgraded PGRX from 0.16.1 to 0.17.0 by Vonng; shared_preload_libraries should include vectorize and pg_cron.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.26.11817161514pg_vectorizepg_cron, pgmq, vector
RPMPIGSTY0.26.11817161514pg_vectorize_$vpgmq_$v, pg_cron_$v, pgvector_$v
DEBPIGSTY0.26.11817161514postgresql-$v-pg-vectorizepostgresql-$v-pgmq, postgresql-$v-pg-cron, postgresql-$v-pgvector
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
d12.aarch64
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
d13.x86_64
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
d13.aarch64
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
u22.x86_64
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
u22.aarch64
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
u24.x86_64
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
u24.aarch64
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
PIGSTY 0.26.1
u26.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u26.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS

构建

您可以使用 pig build 命令构建 pg_vectorize 扩展的 RPM / DEB 包:

pig build pkg pg_vectorize         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_vectorize 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_vectorize;          # 当前活跃 PG 版本安装
pig ext install -y pg_vectorize -v 18  # PG 18
pig ext install -y pg_vectorize -v 17  # PG 17
pig ext install -y pg_vectorize -v 16  # PG 16
pig ext install -y pg_vectorize -v 15  # PG 15
pig ext install -y pg_vectorize -v 14  # PG 14
dnf install -y pg_vectorize_18       # PG 18
dnf install -y pg_vectorize_17       # PG 17
dnf install -y pg_vectorize_16       # PG 16
dnf install -y pg_vectorize_15       # PG 15
dnf install -y pg_vectorize_14       # PG 14
apt install -y postgresql-18-pg-vectorize   # PG 18
apt install -y postgresql-17-pg-vectorize   # PG 17
apt install -y postgresql-16-pg-vectorize   # PG 16
apt install -y postgresql-15-pg-vectorize   # PG 15
apt install -y postgresql-14-pg-vectorize   # PG 14

预加载配置

shared_preload_libraries = 'pg_cron, vectorize';

创建扩展

CREATE EXTENSION vectorize CASCADE;  -- 依赖: pg_cron, pgmq, vector

用法

vectorizepg_vectorize 提供的 PostgreSQL 扩展。上游文档描述了两种模式:独立的 HTTP 服务,以及数据库内的 SQL 扩展。对这里打包的扩展而言,相关的是 SQL 工作流。

启用扩展

ALTER SYSTEM SET shared_preload_libraries = 'vectorize,pg_cron';
ALTER SYSTEM SET cron.database_name = 'postgres';

CREATE EXTENSION vectorize CASCADE;

extension README 列出了 pg_cronpgmqpgvector 这些依赖,以及用于嵌入服务的 vectorize.embedding_service_url

创建搜索任务

高级 SQL API 从 vectorize.table() 开始:

SELECT vectorize.table(
  job_name    => 'product_search_hf',
  relation    => 'products',
  primary_key => 'product_id',
  columns     => ARRAY['product_name', 'description'],
  transformer => 'sentence-transformers/all-MiniLM-L6-v2',
  schedule    => 'realtime'
);

extension README 说明,这会为源表创建并维护一个 embeddings 列。

搜索、RAG 与直接模型调用

搜索示例:

SELECT * FROM vectorize.search(
  job_name       => 'product_search_hf',
  query          => 'accessories for mobile devices',
  return_columns => ARRAY['product_id', 'product_name'],
  num_results    => 3
);

上游还记录了:

  • vectorize.rag():用于 retrieval-augmented answers。
  • vectorize.generate():用于文本生成。
  • vectorize.encode():用于直接生成 embedding。
  • vectorize.import_embeddings():用于导入预计算向量。

更新行为与 v0.26.1 说明

extension README 说明,schedule => '* * * * *' 会每分钟检查一次更新,而 schedule => 'realtime' 会创建 trigger,在插入和更新时立即刷新。

v0.26.1 release note 只写了 “update dependencies”,因此除了现有 README 中已经记录的接口外,没有额外的上游用户侧 SQL/API 变化需要补充。