GraphCanon updated 1mo · GitHub synced 1mo
Decision brief
pgvecto.rs extends PostgreSQL for efficient vector searches using Rust.
Good fit when
- Need integration with PostgreSQL for vector searches
- Require hybrid search capabilities alongside traditional SQL queries
Avoid when
- Preferring a database system without PostgreSQL dependencies
- Looking for a standalone solution, as pgvecto.rs is a PostgreSQL extension
Observed Jul 12, 2026 · Source: enrich:decision_facts
Verify the decision
Maintenance and security
Full trust report- Maintenance
- Dormant (510d since push)
- As of 1mo
- Provenance
- Not a fork · Organization account
- As of 1mo
- Security (OSV)
- No lockfile
- As of 1mo
Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.
Backing
Company context for TensorChord. Display-only - separate from trust and ranking.
- Company
- TensorChord·GitHub org profile·1mo
- Commercial model
- Pure OSS·GitHub org profile (public repos)·1mo
Install
cargo add pgvecto.rs crates.ioHow it fits your stack(7)
Typed graph edges - alternatives, integrations, successors, and dependencies. Ranked by relationship type, not raw GitHub stars.
Alternative
Related
Relationship graph
Optional deeper exploration of typed edges and category neighbours.
Similar tools
Same-category neighbours not already linked as typed edges.
Evidence and technical details
Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.
Overview
pgvecto.rs is a project that enhances PostgreSQL to perform scalable, low-latency vector searches, supporting hybrid search capabilities.
Capability facts
- Languages
- rust
Source: github.language · Jul 22, 2026
Categories
Graph entities
Tags
README
Quick start
For new users, we recommend using the Docker image to get started quickly.
docker run \
--name pgvecto-rs-demo \
-e POSTGRES_PASSWORD=mysecretpassword \
-p 5432:5432 \
-d ghcr.io/tensorchord/pgvecto-rs:pg17-v0.4.0
Then you can connect to the database using the psql command line tool. The default username is postgres, and the default password is mysecretpassword.
psql -h localhost -p 5432 -U postgres
Run the following SQL to ensure the extension is enabled.
DROP EXTENSION IF EXISTS vectors;
CREATE EXTENSION vectors;
pgvecto.rs introduces a new data type vector(n) denoting an n-dimensional vector. The n within the brackets signifies the dimensions of the vector.
You could create a table with the following SQL.
-- create table with a vector column
CREATE TABLE items (
id bigserial PRIMARY KEY,
embedding vector(3) NOT NULL -- 3 dimensions
);
[!TIP]
vector(n)is a valid data type only if $1 \leq n \leq 65535$. Due to limits of PostgreSQL, it's possible to create a value of typevector(3)of $5$ dimensions andvectoris also a valid data type. However, you cannot still put $0$ scalar or more than $65535$ scalars to a vector. If you usevectorfor a column or there is some values mismatched with dimension denoted by the column, you won't able to create an index on it.
You can then populate the table with vector data as follows.
-- insert values
INSERT INTO items (embedding)
VALUES ('[1,2,3]'), ('[4,5,6]');
-- or insert values using a casting from array to vector
INSERT INTO items (embedding)
VALUES (ARRAY[1, 2, 3]::real[]), (ARRAY[4, 5, 6]::real[]);
We support three operators to calculate the distance between two vectors.
<->: squared Euclidean distance, defined as $\Sigma (x_i - y_i) ^ 2$.<#>: negative dot product, defined as $- \Sigma x_iy_i$.<=>: cosine distance, defined as $1 - \frac{\Sigma x_iy_i}{\sqrt{\Sigma x_i^2 \Sigma y_i^2}}$.
-- call the distance function through operators
-- squared Euclidean distance
SELECT '[1, 2, 3]'::vector <-> '[3, 2, 1]'::vector;
-- negative dot product
SELECT '[1, 2, 3]'::vector <#> '[3, 2, 1]'::vector;
-- cosine distance
SELECT '[1, 2, 3]'::vector <=> '[3, 2, 1]'::vector;
You can search for a vector simply like this.
-- query the similar embeddings
SELECT * FROM items ORDER BY embedding <-> '[3,2,1]' LIMIT 5;
For agents
This page has a .md twin and JSON over the API.