Releases: tensorchord/VectorChord
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_table
orvchordrq.prefilter
is 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.arch
set. (#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 truth
Note: 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.2
now
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
fadvise
to 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_dim
GUC 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_table
is 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
0.2.2
What's Changed
- Support linux/arm64 for vchord-cnpg docker image by @xieydd in #184
- refactor: split quantized data vectors to two tapes by @usamoi in #196
- chore: add ghcr image by @cutecutecat in #200
- chore: update readme and scripts with url by @cutecutecat in #198
- fix: lint by ruff by @cutecutecat in #201
- fix: wrong operators for halfvec by @cutecutecat in #202
- doc: add new options by @usamoi in #207
- fix: do not leak memory in heap fetch and fix reading tuples in prewarm by @usamoi in #205
- fix: recycle pages in maintainance by @usamoi in #204
- chore: update v0.2.2 schema script by @usamoi in #210
- fix: correct logic of marking free pages by @usamoi in #211
- fix: remove heapify by @usamoi in #213
- fix error in cnpg amd64 Dockerfile by @xieydd in #214
- ci: fix release docker build by @usamoi in #215
Full Changelog: 0.2.1...0.2.2
0.2.1
Major Improvement
We optimize the external centroid index building speed, about 30%. Now it takes about 30h to build index for 100M vectors with only 4 vcpu on i4i.xlarge.
What's Changed
- refactor: move algorithm to a crate by @usamoi in #172
- feat: pinning index in memory when building, second try by @usamoi in #181
- fix: use linked list of vectors to skip realloc by @usamoi in #182
- feat: use select algorithm to replace heap, if k in top-k is expected to be small by @usamoi in #183
- ci: install pg13 in docker image by @usamoi in #186
- ci: use less docker by @usamoi in #187
- feat: rerank by fetching vectors in heap table by @usamoi in #189
- ci: enable CI for pg13 by @usamoi in #185
- chore: update dependencies by @usamoi in #190
- refactor: remove meaningless target feature requirements by @usamoi in #192
- fix: test simd operations in emulator by @usamoi in #193
- feat: neon impl of u8::reduce_sum_of_x by @usamoi in #194
- chore: update 0.2.1 schema (upgrade) script by @usamoi in #195
Full Changelog: 0.2.0...0.2.1