pgvector vector store
PostgreSQL with the pgvector extension, selected via VECTOR_STORE_PROVIDER=pgvector. It is the reference vector store and the default.
Enable it
bash
VECTOR_STORE_PROVIDER=pgvectorpgvector reads no connection env vars of its own. It reuses the backend's existing Postgres database and sync psycopg2 connection, so there is nothing extra to configure.
Configuration
| Variable | Default | Description |
|---|---|---|
VECTOR_STORE_PROVIDER | pgvector | Leave as pgvector to use this store. |
Notes
- This is the reference implementation and the only store exercised against a real server. Every other provider is functionally partial and unit-tested against a mocked client.
- It natively covers the whole engine surface: hybrid BM25 keyword search (
ts_rank) and SQL-side bi-temporal filtering. - Tenancy is enforced in SQL: every row carries
org_id/project_id, and query methods scope by an optional(org_id, project_id)so one tenant can never read another's memories. - Tables are created on first use, with an HNSW ANN index for semantic search. On pgvector versions older than 0.5 the HNSW index is skipped (a warning, not a failure), leaving searches as sequential scans.
reconcile_vector_dimsruns once at startup: on an embedder/dimension switch it NULLs stale vectors and widens the column, keeping rows and payload text for re-embedding on the next write.