Change8

v1.19.0

📦 qdrantView on GitHub →
7 features🐛 30 fixes1 deprecations🔧 68 symbols

Summary

This release introduces TurboQuant 4-bit vector storage, unified memory usage strategies for collection components, and prefix matching in filters. It also includes numerous performance improvements and bug fixes across various Qdrant functionalities.

✨ New Features

  • TurboQuant 4-bit as a datatype of primary vector storage, allowing for storage of 4-bit quantized vectors to spare disk space on original vectors.
  • Unification of memory usage strategy for collection components using `"memory": "cold" / "cached" / "pinned"` for more fine-grained control over memory usage and performance.
  • Support for `"match": {"prefix": "..."}` in `filter` to match keywords by prefix, requiring enablement in the keyword index.
  • Per-query IDF corpus for sparse vector search.
  • Slice filtering condition for sliced scroll / deterministic sampling.
  • Global quota API for managing resource limits.
  • Routing token for deterministic read routes to ensure read affinity.

🐛 Bug Fixes

  • Fixes for resharding abort logic consistency.
  • Corrected reading of deferred source points in copy-on-write moves.
  • Prevented data loss when a payload index drop races the background segment flush.
  • Fixed abort resharding live-lock.
  • Buffered multi-dense offsets store to prevent reload corruption.
  • Fixed empty `min_should` with non-zero `min_count` matching everything.
  • Fixed optimizer data race, deferring source segment destruction until durable.
  • Fixed scalar L2 quantized score shift.
  • Fixed snapshot WAL clocks data race.
  • Avoided allocator abort on huge limit in random search/sample/scroll.
  • Fixed Point Group Search query with large limits or group sizes causing panics.
  • Fixed reinitialization failing with "removed all voters" on a removed peer.
  • Fixed optimizer recreation dropping sibling shard restarts on error.
  • Unblocked optimizer after deleting a named vector.
  • Fixed cancelled snapshot recovery dirty marker being left behind.
  • Fixed `/readyz` of reinitialized peer waiting on a foreign consensus.
  • Preserved empty result shape for zero-limit batches.
  • Fixed drive letter parsing in Windows snapshot mappings.
  • Fixed `/readyz` false positive on a freshly bootstrapped peer.
  • Fixed payload index inconsistency after restart: flush-before-build.
  • Stamped payload storage version on append-only clone paths.
  • Fixed use-after-free in u8-quantized vector reads on owning storages.
  • Returned error for missing point IDs in Query API recommend.
  • Reset `first_voter` and pruned address book on first-peer `--reinit`.
  • Advanced newest clocks for WAL-replay tail on load.
  • Counted trailing deleted offset on mmap sparse reload.
  • Clamped WAL replay target to the truncated prefix on shard load.
  • Fixed resharding, on queries filter shards on all shard selectors.
  • Fixed WAL data race, flushing after copy with `Segment::copy_to_path`.
  • Cleaned up stale shard transfers when applying consensus.

Affected Symbols

qdrant/qdrant/pull/9669qdrant/qdrant/pull/9684qdrant/qdrant/pull/9950qdrant/qdrant/pull/9683qdrant/qdrant/pull/9661qdrant/qdrant/pull/9899qdrant/qdrant/pull/10035qdrant/qdrant/pull/9338qdrant/qdrant/pull/9113qdrant/qdrant/pull/9409qdrant/qdrant/pull/9448qdrant/qdrant/pull/9500qdrant/qdrant/pull/9332qdrant/qdrant/pull/9376qdrant/qdrant/pull/9457qdrant/qdrant/pull/9431qdrant/qdrant/pull/9662qdrant/qdrant/pull/9663qdrant/qdrant/pull/9678qdrant/qdrant/pull/9732qdrant/qdrant/pull/9726qdrant/qdrant/pull/9733qdrant/qdrant/pull/9644qdrant/qdrant/pull/9749qdrant/qdrant/pull/9778qdrant/qdrant/pull/9784qdrant/qdrant/pull/9660qdrant/qdrant/pull/9835qdrant/qdrant/pull/9811qdrant/qdrant/pull/9847qdrant/qdrant/pull/9871qdrant/qdrant/pull/9740qdrant/qdrant/pull/9845qdrant/qdrant/pull/9984qdrant/qdrant/pull/10026qdrant/qdrant/pull/9891qdrant/qdrant/pull/9721qdrant/qdrant/pull/9395qdrant/qdrant/pull/9377qdrant/qdrant/pull/9424qdrant/qdrant/pull/7849qdrant/qdrant/pull/9501qdrant/qdrant/pull/9401qdrant/qdrant/pull/9536qdrant/qdrant/pull/9518qdrant/qdrant/pull/9537qdrant/qdrant/pull/9604qdrant/qdrant/pull/9637qdrant/qdrant/pull/9610qdrant/qdrant/pull/9654qdrant/qdrant/pull/9671qdrant/qdrant/pull/9641qdrant/qdrant/pull/9686qdrant/qdrant/pull/9688qdrant/qdrant/pull/9677qdrant/qdrant/pull/9723qdrant/qdrant/pull/9774qdrant/qdrant/pull/9767qdrant/qdrant/pull/9806qdrant/qdrant/pull/9801qdrant/qdrant/pull/9638qdrant/qdrant/pull/9785qdrant/qdrant/pull/9759qdrant/qdrant/pull/9660qdrant/qdrant/pull/9851qdrant/qdrant/pull/9882qdrant/qdrant/pull/9868qdrant/qdrant/pull/9928

⚡ Deprecations

  • The "none" hack for disabling the BM25 stemmer is deprecated. Use the new option to explicitly disable the BM25 stemmer instead.