Skip to content

Releases: qdrant/qdrant

v1.15.4

27 Aug 11:24
v1.15.4
20db14f
Compare
Choose a tag to compare

Change log

Improvements

  • #7005 - Reduce Docker image size by 10-40%
  • #7073 - Adjust metrics histogram buckets, show empty buckets and remove small ones
  • #7111 - Include SBOM in Docker image
  • #7119 - Sign Docker images with cosign
  • #7110 - Actively migrate away from old shard key format on disk to a more robust format
  • #7120 - Measure segment size on disk more reliably for improved available disk space checks

Bug fixes

  • #7133 - Fix not loading some full text index types correctly, temporarily resulting in an empty index
  • #7109 - Fix incorrectly reusing old deleted points in proxy segments
  • #7106 - Preserve segment ID mapping when proxying all segments for a snapshot, potentially mixing up segments

v1.15.3

14 Aug 16:30
v1.15.3
a7d21f1
Compare
Choose a tag to compare

Change log

Improvements

  • #7002 - Optimize dot product calculation on AVX systems
  • #7049 - In Nix package, use rustup for Rust version management

Bug fixes

  • #7056 - Fix local BM25 not working as expected due to default parameter differences

v1.15.2

11 Aug 18:04
v1.15.2
5ee3044
Compare
Choose a tag to compare

Change log

Improvements

  • #6891 - Implement BM25 inference in Qdrant locally
  • #6926 - Improve performance of mutable map index, used for full text, integers and more
  • #6993 - Make log buffer size adjustable when logging to a file

Bug fixes

  • #6954 - Fix consistency problem in null index storage by deferring writes until flush
  • #6977 - Fix consistency problem in boolean index storage by deferring writes until flush
  • #6994 - Fix consistency problem for deleted vectors by deferring writes until flush
  • #6966 - Fix flush logic in memory mapped bit flags structure, improving data consistency
  • #6975 - Delete versionless points before WAL replay, fix incorrect use of corrupt points
  • #6952 - Fix date time error in custom score boosting formula when having multiple nodes
  • #6998 - In score boosting formula validation error, show each index type only once
  • #6959 - Fix range bounds not being inclusive for linear decay function
  • #6958 - Fix default storage path and missing web UI assets in Debian package

Web UI

v1.15.1

24 Jul 10:18
af7ab5b
Compare
Choose a tag to compare

Changelog

Improvements

  • #6931 - gRPC HealthCheck method now works without authentication, making it consistent with REST methods.
  • #6923 - Use populate storage components with MADV_SEQUENTIAL for better IO performance on indexing

Bug Fixes

  • #6932 - Fix point shard routing broken in 1.15 (Points created in 1.15.0 in multi-shard collections might not behave properly on updates!)
  • #6903 - Fix compile error in MUSL builds
  • #6910 - Fix panic in /metrics on empty collection data
  • #6916 - Fix UUID index storage, resulted in missing filter results.

v1.15.0

18 Jul 13:08
137b6c1
Compare
Choose a tag to compare

Change log

Features 📜

Improvements 🪨

  • milestone/16 - Migrate away from RocksDB
  • milestone/27 - HNSW Healing on optimization
  • #6479 - Speedup additional links construction by measuring sub-graph connectivity
  • #6563, #6601 - Inference usage now reported in API response
  • #6611 - Added major and minor tags for Docker builds
  • #6685 - Speed up mutable posting list for upsertions
  • #6729 - Reuse quantized vectors during HNSW index building
  • #6713 - Optimize Gridstore insertions
  • #6750 - Use sequential reads when iterating over Gridstore
  • #6757 - Enable pod role based auth for S3 snapshots
  • #6725 - Improve read request handling during snapshot recovery
  • #6785 - Avoid re-optimizations when loading a mmap-backed immutable text index
  • #6778, #6817 - Properly handle inconsistencies in consensus during custom shards creation
  • #6779 - Avoid IO during evaluating HNSW index for re-optimization
  • #6796 - Use sequential reads for building quantized vectors
  • #6794 - Avoid double condition check during filtering
  • #6804 - Optimize has_id condition
  • #6844 - Adjust default values for better performance

Bug fixes 🫙

  • #6593 - Use ID tracker to estimate internal points range
  • #6614 - Improve Gridstore wipe/clear functionality
  • #6632 - Fix default replication factor
  • #6640 - Fix significant memory usage in Distance Matrix API on high sample size
  • #6739 - Fix IDF computation with deleted points
  • #6755 - Prevent shards from getting stuck in Initializing state
  • #6759 - Properly propagate inference errors
  • #6787 - Add flag to break optimization loop on panic
  • #6862 - Avoid blocking async runtime when loading local shard
  • #6800 - Fix bug that causes all replicas to die if node restarted during resharding
  • #6882 - Fix broken is_empty filter on new points

Web-UI 🎨

Deprecations 🚧

  • init_from parameter of the collection creation API is deprecated and going to be removed in v1.16

    • Reason: init_from creates false expectation of data consistency and reliability of this operation.
    • Alternative: prefer usage of migration tool or snapshots, read more in the tutorial
  • Payload based filters in JWT going to be removed in v1.16

    • Reason: Payload based filters are inconsistent for read/write operations. Many update operations are not implemented due to security risks and complexity. Lack of real-life usage.
    • Alternative: prefer collection-based access control.
  • mmap_threshold parameter of the collection optimizer is deprecated and going to be removed in v1.16

    • Reason: starting from v1.12, all vector storages exclusively use memory maps, explicit usage of mmap_threshold is obsolete
    • Alternative: control memory cache behaviour of Qdrant storages with on_disk: true/false parameter
  • Lock API is deprecated and going to be removed in v1.16

    • Reason: lack of real-life usage
    • Alternative: JWT tokens can be configured to provide read-only access to Qdrant
  • #6760 - Removed max_optimization_threads from config

v1.14.1

23 May 13:09
v1.14.1
530430f
Compare
Choose a tag to compare

Change log

Improvements

  • #6458 - Speed up WAL-delta shard transfer significantly via batching and more careful synchronization
  • #6462 - Improve GPU indexing speed for payload-related HNSW links, reuse GPU resources
  • #6444, #6495, #6503, #6587 - Greatly improve payload index load time by replacing RocksDB with mmaps as persistence layer
  • #6446 - Make GridStore flush slightly faster, update gaps in batch
  • #6510 - Optimize GridStore reads, tell the kernel we use random reads
  • #6502 - Better IO/CPU resource scheduling for optimizers
  • #6487 - Batch IO when merging segments in optimizer, improve indexing speed
  • #6513 - Buffer IO while reading files
  • #6501 - Speed up HNSW construction by improving heuristics computation
  • #6504 - Improve performance of isEmpty and !isNull conditions with a specialized index
  • #6536 - Limit S3 upload parallelism, prevent network errors on high CPU machines
  • #6548 - Add config option to limit number of collections

Bug fixes

  • #6403 - Fix potential inconsistency during index creation, make it atomic
  • #6478 - Address performance degradation for large batch queries with a lot of segments
  • #6445 - Fix not freeing all GridStore blocks if there are many updates
  • #6363 - Fix strict mode unindexed_filtering_retrieve not being enforced in group_by queries
  • #6498 - Fix strict mode search_allow_exact preventing full-scan in segments without main HNSW graph
  • #6505 - Abort shard transfers related to peer being force removed
  • #6533 - Always overwrite existing payload on upsert, fix REST vs gRPC discrepancy
  • #6549 - Correctly cancel on optimization failure, keep collection consistent on red status error
  • #6560 - Use HTTP 400 instead of 403 for strict mode errors, prevent web-ui from constantly asking new API key
  • #6582 - Register payload indices in consensus on snapshot recovery

v1.14.0

22 Apr 16:34
Compare
Choose a tag to compare

Change log

Features 🍁

Improvements 🌳

  • #6325 - Incremental HNSW building. Segment optimized will partially re-use existing HNSW graph on merging segments.
  • #6323, #6396 - Improve eviction strategy for unused disk cache
  • #6303 - Minor optimizations for memory allocations
  • #6385 - Minor internal optimizations
  • #6357 - Rethink behavior of offset parameter in case of a query with prefetch. Now offset is only applied to the prefetch result and is not propagated into prefetch query.
  • #6326 - Parallelize large segment search batches
  • #6390 - Better organized telemetry details levels generate less overhead by excluding segment-level details

Bug Fixes 🌵

  • #6289 - Scroll lock: make sure no segments are modified between scroll and retrieve
  • #6297, #6293 - Prevent crash on failed shard recovery. Instead, qdrant will load dummy shard, which can be recovered via API
  • #6383 - Fix delayed flush wrapper. Before this fix, payload indexes might temporary loose unflushed updates after flush operation is started and before it is finished.
  • #6364 - Abort resharding if any Resharding replica is to be marked dead

Web-ui 🌾

v1.13.6

31 Mar 23:28
4db98ec
Compare
Choose a tag to compare

Change log

Improvements

  • #6279 - In query API, read vectors/payloads once at shard level instead of in every segment, greatly improve search performance when there's lots of segments
  • #6276 - In query API, don't send huge vectors/payloads over internal network, defer reads to greatly improve search performance
  • #6260 - Improve performance of resharding transfers, make them faster on slow disks or with high memory pressure

Bug fixes

  • #6259 - Fix point estimation in resharding transfers, showing a more reliable ETA
  • #6233 - Fix order_by not always including all values for a point if there are multiple

v1.13.5

21 Mar 15:48
v1.13.5
e282ed9
Compare
Choose a tag to compare

Change log

Improvements

  • #6015 - Split CPU budget into CPU and IO to better saturate resources during optimization
  • #6088 - Enhance payload indices to handle IsEmpty and IsNull conditions much more efficiently
  • #6022, #6023 - Optimize ID tracker in immutable segments by compressing point mappings and versions
  • #6056 - Apply undersampling at shard level, significantly improve query performance on large deployments with large search limit
  • #6040 - Trigger optimizers more reliably on changes, prevent optimizers potentially getting stuck
  • #6085 - Significantly improve performance of point delete propagation during resharding on large deployments
  • #6021 - Configure memory barriers in GPU HNSW building to prevent potential race conditions
  • #6074 - Use approximate point count at start of shard transfer to make them start quicker
  • #6165 - Show log message if hardware reporting is enabled

Bug fixes

  • #6212 - Fix user-defined sharding not being applied in consensus snapshots, potentially corrupting cluster
  • #6209 - Fix malformed user-defined sharding data in consensus snapshots if using numeric shard keys, potentially corrupting cluster
  • #6014 - Fix cluster metadata not being in consensus snapshots, potentially causing cluster state desync
  • #6210 - Fix resharding state not being applied with consensus snapshots, potentially causing cluster state desync
  • #6202 - Fix snapshot restore error when numeric user-defined shard keys are used
  • #6086 - Fix potential panic while propagating point deletions during resharding
  • #6032, #6069 - Don't load or restore segments from hidden files, prevent breakage on hidden files in storage by other tools
  • #6037 - Fix search panic after HNSW creation with GPU when on NVIDIA
  • #6029 - Fix write rate limit not being properly set in strict mode
  • #6118 - Do not rate limit reads for shard transfers in strict mode, it's internal
  • #6121 - Do not rate limit shard cleanup operation in strict mode, it's internal
  • #6152 - Properly rate limit batch point updates
  • #6038 - Keep existing shard configuration if snapshot restore failed to prevent panic on startup
  • #6010 - Use configured CA certificate for internal snapshot transfers
  • #6108, #6115, #6160 - Fix opt-in anonymization of various telemetry fields
  • #6065 - Don't show warning if bootstrap URI is not provided

v1.13.4

17 Feb 12:53
v1.13.4
7abc684
Compare
Choose a tag to compare

Change log

Improvements

  • #5967 - Set maximum number of points in a collection with strict mode

Bug fixes

  • b2782ff - Fix HNSW index not respecting on-disk flag, using the inverse setting
  • #5991 - Do not deactivate replica or abort transfer if target is missing point, it may not be transferred yet
  • #5987 - Fix potential deadlock in consensus logic, which could get a node stuck