pgvector
pgvector Postgres extension. Covers vector types, distance operators, indexing (HNSW/IVFFlat), and client library usage. Use when storing vectors in PostgreSQL, running nearest-neighbor searches, or configuring HNSW/IVFFlat indexes. Keywords: pgvector, PostgreSQL, vector search, HNSW, IVFFlat.
Works with
---
name: pgvector
description: pgvector Postgres extension. Covers vector types, distance operators, indexing (HNSW/IVFFlat), and client library usage. Use when storing vectors in PostgreSQL, running nearest-neighbor searches, or configuring HNSW/IVFFlat indexes. Keywords: pgvector, PostgreSQL, vector search, HNSW, IVFFlat.
license: MIT
---
# pgvector
PostgreSQL extension for storing vectors and running exact/approximate nearest-neighbor search in SQL.
## Quick Navigation
- Installation: `references/installation.md`
- Core concepts and SQL recipes: `references/core.md`
- Indexing (HNSW / IVFFlat) and tuning: `references/indexing.md`
- Filtering, iterative scans, and performance: `references/performance-and-filtering.md`
- Types and functions reference (vector/halfvec/bit/sparsevec): `references/types-and-functions.md`
- Troubleshooting: `references/troubleshooting.md`
- Client libraries (priority):
- Python: `references/python.md`
- Go: `references/go.md`
- Node (JS/TS): `references/node.md`
- Java: `references/java.md`
- Swift: `references/swift.md`
## When to Use
- You need vector similarity search inside Postgres (keep vectors with relational data).
- You want SQL-native ANN indexes (HNSW or IVFFlat) with tunable recall/speed.
- You want consistent patterns to store/query embeddings across multiple application languages.
## Quick Start (already installed)
Prerequisite: pgvector is installed on the Postgres server. See: `references/installation.md`.
Enable per database and run a first query:
```sql
CREATE EXTENSION vector;
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
```
### Choosing distance operators
- L2 (Euclidean): use `<->`
- Inner product: use `<#>` (note: returns negative inner product)
- Cosine distance: use `<=>`
- L1: use `<+>`
- Binary vectors: Hamming `<~>` / Jaccard `<%>`
### Indexing rules of thumb
- Exact search: no pgvector index; may use parallel scan on large tables.
- ANN search:
- Prefer HNSW for better speed/recall, higher build time/memory.
- Use IVFFlat when you need faster builds/lower memory.
- Create one index per distance function/operator class you plan to use.
## Critical Prohibitions / Gotchas
- Approximate indexes can change results (recall vs speed).
- Index usage typically requires `ORDER BY <distance-op> ... LIMIT ...`.
- `<#>` returns negative inner product; multiply by `-1` to get the actual value.
- `NULL` vectors are not indexed; for cosine distance, zero vectors are not indexed.
## Links
- Docs / repo: https://github.com/pgvector/pgvector
- Client libs:
- Python: https://github.com/pgvector/pgvector-python
- Go: https://github.com/pgvector/pgvector-go
- Node: https://github.com/pgvector/pgvector-node
- Java: https://github.com/pgvector/pgvector-java
- Swift: https://github.com/pgvector/pgvector-swift
- Releases/tags: https://github.com/pgvector/pgvector/tagsMore Database skills
supabase-postgres-best-practices
supabase/agent-skills
Postgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill BEFORE writing or changing anything that lives in a Postgres database: creating or altering tables and columns (including choosing column types), schema design, migrations and declarative schema files, RLS policies and the tests that verify them, indexes, triggers, database functions, queues and scheduled jobs (pg_cron, pgmq), vector/semantic search (pgvector), and restoring dumps (pg_restore) or importing data. Also load it when diagnosing slow queries, high CPU, timeouts, EXPLAIN plans, connection exhaustion, locking, bloat, or rows visible to the wrong user or tenant. This is not just a performance guide — schema, migration, security, and SQL authoring tasks need these rules too, even for a one-column change or a single query.
prisma-database-setup
prisma/skills
Guides for configuring Prisma with different database providers (PostgreSQL, MySQL, SQLite, MongoDB, etc.). Use when setting up a new project, changing databases, or troubleshooting connection issues. Triggers on "configure postgres", "connect to mysql", "setup mongodb", "sqlite setup".
prisma-postgres
prisma/skills
Prisma Postgres setup and operations guidance across Console, create-db CLI, Management API, and Management API SDK. Use when creating Prisma Postgres databases, working in Prisma Console, provisioning with create-db/create-pg/create-postgres, or integrating programmatic provisioning with service tokens or OAuth.

