Releases: tensorchord/VectorChord
1.0.0
VectorChord 1.0 Release Notes
VectorChord 1.0 is here. This release delivers much faster PostgreSQL index builds with IVF + RaBitQ, quicker updates, broader architecture support, and a stack of new features since our first release. It’s a major milestone—production-ready and thoroughly tested.
Highlights
We have dramatically optimized index build speed, now capable of building a 100M-vector dataset in 20 minutes on a 16-vCPU machine while sharply cutting memory usage, making index construction in production far more convenient.
What's changed since 0.5
Performance & scalability
- Lock-contention optimizations in index building
- Faster table sampling in index building
- Hierarchical K-means
- Dimension reduction in K-means
- Parallel compacting in index building
- Prints estimated memory usage in index building
Fixes
- Don't use expensive Rayon fold/reduce
- Freespace recycle in vchordg
Full Changelog: 0.5.3...1.0.0
0.5.3
0.5.2
VectorChord 0.5.2 Release Notes
- Add built-in query simpling, for recall evaluation with online queries, see also Query sampling. (#321, #334, #337, #338)
- Fix MVCC violation if either
build.rerank_in_tableorvchordrq.prefilteris enabled. (#336) - Fix incorrect order of
vchordrq.probes. (#342)
The vchord-postgres image includes pgvector 0.8.1 now. You could update the extension schema by running the following SQL:
ALTER EXTENSION pgvector UPDATE;
ALTER EXTENSION vchord UPDATE;0.5.1
VectorChord 0.5.1 Release Notes
- A little performance improvement. (#314)
- Fix compilation on x86_64 nix with
gcc.archset. (#316) - Fix compilation and tests, and add initial simd support, on s390x and powerpc64le, see also s390x. (#318, #323, #324, #326, #325, #327, #328, #329, #330)
Full Changelog: 0.5.0...0.5.1
0.5.0
VectorChord v0.5.0
Two big upgrades, focused and pragmatic.
1) Experimental DiskANN (with RaBitQ) — vchordg (preview)
A new disk-backed graph index that keeps memory low while giving you a DiskANN-style option inside VectorChord.
- When it shines: can be faster than IVF+RaBitQ (
vchordrq) on some embeddings (e.g., OpenAI/Cohere) — but not always. - Caveats: slow build, and insert/delete are weaker than IVF. Dataset-dependent: benchmark before switching.
- Try it:
CREATE INDEX ON items USING vchordg (embedding vector_l2_ops) WITH (options = $$ m = 64 ef_construction = 128 $$); SET vchordg.ef_search = 128;
- Memory knob: bits = 1 halves index memory vs default bits = 2 (better recall/QPS).
We’re shipping this to give you a one-stop vector search toolbox at VectorChord. Feel free to share any thoughts and questions about it!
2) Recall measurement for IVF+RaBitQ — vchordrq_evaluate_query_recall
Approximate ≠ exact. Now you can quantify how close your results are with vchordrq_evaluate_query_recall. It accepts a query that returns row identifiers (e.g., ctid) and returns a recall score.
SET vchordrq.probes = '100';
SET vchordrq.epsilon = 1.0;
SELECT vchordrq_evaluate_query_recall(query => $$
SELECT ctid FROM items
ORDER BY embedding <-> '[3,1,2]'
LIMIT 10
$$); -- add ", exact_search => true" for table-scan ground truthNote: recall evaluation targets vchordrq in 0.5 (not vchordg yet).
Other fixes
We fixed some performance regression problems in this release. User can enjoy better performances with it!
Talk to us
Thanks for building with us. If you have any question or thoughts, open an issue, join our discord or start a Discussion. Your notes guide what we fix first. If VectorChord helped you, drop us a ⭐ on GitHub and hit Watch → Releases.
0.4.3
VectorChord 0.4.3 Release Notes
- use mimalloc on aarch64-linux
- fix compilation with gcc on x86_64
- fix compilation with clang on Windows
- prompt the user to rebuild the index after the upgrade
Full Changelog: 0.4.2...0.4.3
0.4.2
VectorChord 0.4.2 Release Notes
- fix compilation on aarch64 macos
- add support for
pgxnclient: you can install VectorChord withpgxnclient install vchord==0.4.2now
Full Changelog: 0.4.1...0.4.2
0.4.1
VectorChord 0.4.1 Release Notes
- Fix potential precision issue if the dimension of vectors is
1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768.
Full Changelog: 0.4.0...0.4.1
0.4.0
VectorChord 0.4 Release Notes
Major Improvements
-
Streaming I/O & Page Prefetch
- Complete rewrite of page layout to enable pipelined computation with streaming I/O.
- On PostgreSQL 17, uses
fadviseto prefetch buffers into the OS page cache, eliminating per-buffer read waits and fully leveraging disk throughput. - In upcoming PostgreSQL 18, direct support for io_uring will further streamline asynchronous I/O.
- Benchmarks: 2–3× lower latency on cold queries (no buffer or page cache), translating to significantly improved tail latency in production.
-
Prefilter Acceleration
- Introduces true prefilter support for vector + filter queries.
- Previous postfilter approach ranked full result sets and then applied filters—inefficient when selectivity is low (e.g., 1% filter rate).
- Applies SQL filters before full precision vector distance computations, avoiding unnecessary work.
- Benchmarks: Up to 3× faster end-to-end search on highly selective filters without any additional tuning.
Other Improvements
-
Optimized Residual Quantization
- Collaboration with RaBitQ author Jianyang: refactored distance term
$|⟨o, q–c⟩|$ into$⟨o, q⟩ – ⟨o, c⟩$ , so the query vector is quantized only once. - Result: ~20% QPS improvement over 0.3.
- Recommendation: Enable residual quantization for L2 workloads.
- Collaboration with RaBitQ author Jianyang: refactored distance term
-
Fast Walsh-Hadamard Transform for Rotation
- Collaboration with RaBitQ author Jianyang: replaced manual
vchordrq.prewarm_dimGUC with an on-the-fly Fast Walsh-Hadamard Transform. - Removes the need to configure a prewarmed dimension list and yields marginal speed gains during setup.
- Collaboration with RaBitQ author Jianyang: replaced manual
Thank you for using VectorChord! As always, we welcome feedback and contributions on GitHub.
Full Changelog: 0.3.0...0.4.0
0.3.0
Features
Native support for the maxsim operator and efficient indexing inspired by XTR-WARP project. This makes it possible to build ColBERT- or ColPaLI-style multi-vector retrieval applications seamlessly within PostgreSQL.
Improvements
- More KMeans parameters can be configured
- Better progress report for internal KMeans build
What's Changed
- feat: check quals to skip rerank if
rerank_in_tableis enabled by @usamoi in #206 - feat: maxsim operator and indexing on maxsim operator by @usamoi in #197
- chore: update dependencies by @usamoi in #216
- feat: use mimalloc by @usamoi in #217
- feat: emit INFO when performing kmeans by @usamoi in #219
- feat: encode kmeans progress to phase name by @usamoi in #220
- readme: move docs to docs repo by @usamoi in #222
- chore: change default lists and probes to empty by @usamoi in #223
- feat: allows skipping rerank by @usamoi in #225
- delete cnpg image by @xieydd in #224
- refactor: remove allows_skipping_rerank by @usamoi in #226
- fix: apply epsilon for default search by @usamoi in #228
- chore: remove patch of crate half by @usamoi in #231
- fix: release env vars by @cutecutecat in #232
- chore: update 0.3.0 schema script by @usamoi in #230
Full Changelog: 0.2.2...0.3.0