How supervc-stack/vectorchord works
VectorChord is a PostgreSQL extension for storing and searching vectors through RaBitQ-compressed and graph-based indexes. The principal workflow is a SQL client creating vector data and an index, then issuing an ordered similarity query whose selected index scans return matching rows. The README also documents accelerated index construction, multi-vector retrieval, filters, reranking, prefetching, and prewarming. The excerpts establish extension initialization, PostgreSQL page access, and parts of both search engines; several other links reflect documented capabilities and module boundaries rather than inspected call sites.
Main entry points: build.rs RaBitQ build · search.rs RaBitQ search · dispatch.rs RaBitQ dispatch · storage.rs PostgreSQL pages
Components 21
PostgreSQL interface
- Extension init
src/lib.rs - Vector types
src/datatype/mod.rs - Query recorder
src/recorder/mod.rs - Recorder storage
src/recorder/worker.rs
Index lifecycle
- Index registration
src/index/mod.rs - RaBitQ access method
src/index/vchordrq/am/mod.rs - Graph access method
src/index/vchordg/am/mod.rs - RaBitQ dispatch
src/index/vchordrq/dispatch.rs - Graph dispatch
src/index/vchordg/dispatch.rs - RaBitQ build
src/index/vchordrq/build.rs - Graph build
- PostgreSQL pages
src/index/storage.rs - Scan and filtering
src/index/vchordrq/scanners/mod.rs - Scan results
src/index/vchordrq/scanners/default.rs
Search engines
- RaBitQ search
crates/vchordrq/src/search.rs - Graph search
crates/vchordg/src/search.rs - Autonomous reranking
crates/vchordrq/src/rerank.rs
Vector compute
- Hierarchical K-means
crates/k_means/src/hierarchical.rs - RaBitQ encoding
crates/rabitq/src/lib.rs - Vector operations
crates/vector/src/lib.rs
Other components
- SQL client
Connections 26
- SQL client → Extension init: uses SQL
- Extension init → Index registration: initializes
- Extension init → Query recorder: initializes
- SQL client → Vector types: writes vectors
- SQL client → RaBitQ access method: creates and scans
- SQL client → Graph access method: creates and scans
- RaBitQ access method → RaBitQ dispatch: dispatches
- Graph access method → Graph dispatch: dispatches
- RaBitQ dispatch → RaBitQ build: builds index
- Graph dispatch → Graph build: builds index
- RaBitQ dispatch → RaBitQ search: searches
- Graph dispatch → Graph search: searches
- RaBitQ build → PostgreSQL pages: writes pages
- Graph build → PostgreSQL pages: writes pages
- RaBitQ search → PostgreSQL pages: reads pages
- Graph search → PostgreSQL pages: reads pages
- RaBitQ access method → Scan and filtering: sets up scans
- Scan and filtering → RaBitQ dispatch: dispatches search
- Scan and filtering → Scan results: emits rows
- RaBitQ search → Autonomous reranking: reranks candidates
- RaBitQ build → Hierarchical K-means: clusters vectors
- RaBitQ build → RaBitQ encoding: encodes vectors
- Graph build → Vector operations: processes vectors
- RaBitQ search → Vector operations: scores vectors
- Graph search → Vector operations: scores vectors
- Query recorder → Recorder storage: records samples