Skip to content

Releases: tensorchord/VectorChord

0.5.0

15 Aug 07:11
Compare
Choose a tag to compare

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

20 Jun 04:51
Compare
Choose a tag to compare

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

29 May 23:46
Compare
Choose a tag to compare

VectorChord 0.4.2 Release Notes

  • fix compilation on aarch64 macos
  • add support for pgxnclient: you can install VectorChord with pgxnclient install vchord==0.4.2 now

Full Changelog: 0.4.1...0.4.2

0.4.1

24 May 09:54
Compare
Choose a tag to compare

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

23 May 18:18
Compare
Choose a tag to compare

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.
  • 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.

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

11 Apr 08:11
Compare
Choose a tag to compare

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

Full Changelog: 0.2.2...0.3.0

0.2.2

18 Mar 12:31
63e2549
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.2.1...0.2.2

0.2.1

19 Feb 13:05
0849b18
Compare
Choose a tag to compare

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

0.2.0

27 Jan 05:47
7472faf
Compare
Choose a tag to compare

VectorChord 0.2 Release Notes

We are thrilled to announce the release of VectorChord 0.2, advancing vector search capabilities within PostgreSQL.

🚀 New Features

Optimized Storage Layout

  • Long Cross-Page Vector Support: Redesigned internal storage allows vectors to span multiple 8KB PostgreSQL pages, enabling support for vectors with over 2000 dimensions, up to 16000 dim.
  • Enhanced Storage Efficiency: Achieves higher storage density by minimizing wasted space, reducing index size by up to 50% compared to version 0.1.

Additional Data Types

  • Float16 Support: Introduces Float16 data type, allowing users to halve the storage space required with a slight decrease in recall. Note that Float16 does not reduce the size of quantized vectors, maintaining 1 bit per dimension for original vector representation.

Architecture Enhancements

  • ARM Architecture Support: Rewritten distance calculations and Fast Scan implementations using the Scalable Vector Extension (SVE) instruction set for optimal performance on ARM-based systems.
  • AWS Graviton4 Compatibility: Leverage the latest i8g platform based on Graviton4 processors for improved performance at the same cost as i4i models.

⚡ Performance Improvements

  • Reduced Index Size: Up to 50% reduction in index size compared to version 0.1.

🔧 Getting Started

  • Comprehensive getting started guides will be available soon.

📝 Summary

VectorChord 0.2 introduces support for high-dimensional vectors, Float16 data type, ARM architecture optimizations, and a more compact storage layout. These enhancements collectively improve storage efficiency and query performance, providing a superior vector retrieval experience within PostgreSQL.

What's Changed

New Contributors

Full Changelog: 0.1.0...0.2.0

0.1.1-alpha.1

18 Dec 14:32
f88b1ac
Compare
Choose a tag to compare
0.1.1-alpha.1 Pre-release
Pre-release

Highlights

  • Support fp16 vec
  • Support vector longer than 2000 dim

What's Changed

New Contributors

Full Changelog: 0.1.0...0.1.1-alpha.1