Skip to content

pg_vectorsearch

Approximate vector search with PRISM indexes and RaBitQ quantization

pg_vectorsearch : Approximate vector search with PRISM indexes and RaBitQ quantization

Overview

ID Extension Package Version Category License Language
1990 pg_vectorsearch pg_vectorsearch 0.1.0 RAG PostgreSQL C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d-- No Yes No Yes no no
Relationships
See Also vector vectorscale
Alpha; PG18 packages; OpenBLAS required; no pgvector dependency; no in-place RC upgrade.

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT PIGSTY 0.1.0 18 17 16 15 14 pg_vectorsearch -
RPM PIGSTY 0.1.0 18 17 16 15 14 pg_vectorsearch_$v -
DEB PIGSTY 0.1.0 18 17 16 15 14 postgresql-$v-vectorsearch -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64 PIGSTY 0.1.0 N/A N/A N/A N/A
el8.aarch64 PIGSTY 0.1.0 N/A N/A N/A N/A
el9.x86_64 PIGSTY 0.1.0 N/A N/A N/A N/A
el9.aarch64 PIGSTY 0.1.0 N/A N/A N/A N/A
el10.x86_64 PIGSTY 0.1.0 N/A N/A N/A N/A
el10.aarch64 PIGSTY 0.1.0 N/A N/A N/A N/A
d12.x86_64 PIGSTY 0.1.0 N/A N/A N/A N/A
d12.aarch64 PIGSTY 0.1.0 N/A N/A N/A N/A
d13.x86_64 PIGSTY 0.1.0 N/A N/A N/A N/A
d13.aarch64 PIGSTY 0.1.0 N/A N/A N/A N/A
u22.x86_64 PIGSTY 0.1.0 N/A N/A N/A N/A
u22.aarch64 PIGSTY 0.1.0 N/A N/A N/A N/A
u24.x86_64 PIGSTY 0.1.0 N/A N/A N/A N/A
u24.aarch64 PIGSTY 0.1.0 N/A N/A N/A N/A
u26.x86_64 PIGSTY 0.1.0 N/A N/A N/A N/A
u26.aarch64 PIGSTY 0.1.0 N/A N/A N/A N/A
Package Version OS ORG SIZE File URL
pg_vectorsearch_18 0.1.0 el8.x86_64 pigsty 533.8 KiB pg_vectorsearch_18-0.1.0-1PGSTY.el8.x86_64.rpm
pg_vectorsearch_18 0.1.0 el8.aarch64 pigsty 453.7 KiB pg_vectorsearch_18-0.1.0-1PGSTY.el8.aarch64.rpm
pg_vectorsearch_18 0.1.0 el9.x86_64 pigsty 528.7 KiB pg_vectorsearch_18-0.1.0-1PGSTY.el9.x86_64.rpm
pg_vectorsearch_18 0.1.0 el9.aarch64 pigsty 458.6 KiB pg_vectorsearch_18-0.1.0-1PGSTY.el9.aarch64.rpm
pg_vectorsearch_18 0.1.0 el10.x86_64 pigsty 533.0 KiB pg_vectorsearch_18-0.1.0-1PGSTY.el10.x86_64.rpm
pg_vectorsearch_18 0.1.0 el10.aarch64 pigsty 465.4 KiB pg_vectorsearch_18-0.1.0-1PGSTY.el10.aarch64.rpm
postgresql-18-vectorsearch 0.1.0 d12.x86_64 pigsty 498.2 KiB postgresql-18-vectorsearch_0.1.0-1PGSTY~bookworm_amd64.deb
postgresql-18-vectorsearch 0.1.0 d12.aarch64 pigsty 426.1 KiB postgresql-18-vectorsearch_0.1.0-1PGSTY~bookworm_arm64.deb
postgresql-18-vectorsearch 0.1.0 d13.x86_64 pigsty 497.1 KiB postgresql-18-vectorsearch_0.1.0-1PGSTY~trixie_amd64.deb
postgresql-18-vectorsearch 0.1.0 d13.aarch64 pigsty 428.7 KiB postgresql-18-vectorsearch_0.1.0-1PGSTY~trixie_arm64.deb
postgresql-18-vectorsearch 0.1.0 u22.x86_64 pigsty 529.6 KiB postgresql-18-vectorsearch_0.1.0-1PGSTY~jammy_amd64.deb
postgresql-18-vectorsearch 0.1.0 u22.aarch64 pigsty 468.2 KiB postgresql-18-vectorsearch_0.1.0-1PGSTY~jammy_arm64.deb
postgresql-18-vectorsearch 0.1.0 u24.x86_64 pigsty 522.2 KiB postgresql-18-vectorsearch_0.1.0-1PGSTY~noble_amd64.deb
postgresql-18-vectorsearch 0.1.0 u24.aarch64 pigsty 455.5 KiB postgresql-18-vectorsearch_0.1.0-1PGSTY~noble_arm64.deb
postgresql-18-vectorsearch 0.1.0 u26.x86_64 pigsty 521.5 KiB postgresql-18-vectorsearch_0.1.0-1PGSTY~resolute_amd64.deb
postgresql-18-vectorsearch 0.1.0 u26.aarch64 pigsty 456.4 KiB postgresql-18-vectorsearch_0.1.0-1PGSTY~resolute_arm64.deb

Source

pig build pkg pg_vectorsearch;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

pig install pg_vectorsearch;		# install via package name, for the active PG version

pig install pg_vectorsearch -v 18;   # install for PG 18

Create this extension with:

CREATE EXTENSION pg_vectorsearch;

Usage

Sources:

pg_vectorsearch 0.1.0 is an alpha extension for approximate nearest-neighbor search with the PRISM index. It supports PostgreSQL 18 and 19, native vec32 / vec16 types and optional pgvector interoperability. It is intended for testing, with evolving behavior and maintenance requirements.

Core Workflow

CREATE EXTENSION pg_vectorsearch;
CREATE TABLE vectorsearch_items (
    id serial PRIMARY KEY,
    embedding vec32(3) STORAGE PLAIN
);
INSERT INTO vectorsearch_items (embedding)
SELECT ARRAY[i::real, (i % 7)::real, (i % 5)::real]::vec32
FROM generate_series(1, 1000) AS i;
CREATE INDEX vectorsearch_items_prism ON vectorsearch_items
USING prism (embedding vec32_l2_ops);
SET prism.nprobe = 40;
SELECT id FROM vectorsearch_items
ORDER BY embedding <-> '[3,1,2]' LIMIT 5;

Operational Boundaries

Install as a superuser; no preload is required and the extension is not relocatable. The prism access method has vec32_l2_ops, vec32_ip_ops, vec32_cosine_ops and corresponding vec16 operator classes; <->, <#> and <=> express L2, negative inner product and cosine distance. prism.nprobe trades recall for query work; zero selects automatic tuning, not exact recall.

Load representative data before building the index. Indexed dimensions are limited to 1968; expression and unlogged indexes are unsupported. Keep prism.leaf_refine_threshold at zero. Filtering can return fewer rows than LIMIT, and candidate buffers bounded by work_mem can truncate large or unbounded results. Measure against an exact baseline.

Inspect prism_index_settings and follow the maintenance guide for churn. prism_rebalance supports only flat RaBitQ centroid-page indexes with centroid_fastscan off, not the default multilevel format. DELETE leaves tombstones, and retired pages are reclaimed only by REINDEX. There is no in-place upgrade from the earlier release candidates.