Releases: qdrant/qdrant
Releases · qdrant/qdrant
v1.15.4
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
v1.15.3
v1.15.2
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
- qdrant/qdrant-web-ui#299 - Show shard distribution of collection in cluster as replica/node matrix
v1.15.1
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
Change log
Features 📜
- milestone/25 - Phrase Matching in Full-Text index [Docs]
- milestone/28 - Stop words support in Full-Text index [Docs]
- milestone/29 - New multilingual tokenizer enabled by default [Docs]
- milestone/32 - Snowball Stemmer in Full-Text index, [Docs]
- milestone/30 - Asymmetric binary quantization [Docs]
- milestone/31 - 2-bit and 1.5-bit Binary Quantization encoding [Docs]
- milestone/26 - Maximum Marginal Relevance [Docs]
- #6682 - Verify file system compatibility on process start
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 🎨
- https://github.com/qdrant/qdrant-web-ui/releases/tag/v0.1.41 - New "Create Collection" form, Simplify JWT form, other fixes
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
- Reason:
-
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
- Reason: starting from v1.12, all vector storages exclusively use memory maps, explicit usage of
-
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
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 ingroup_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
Change log
Features 🍁
- https://github.com/qdrant/qdrant/milestone/23 - Allow server-side score boosting with user-defined formula. See [Docs]
- #6256 - New
sum_scores
recommendation strategy. Useful for implementing relevance feedback. See [Docs]
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 withprefetch
. 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 🌾
- qdrant/qdrant-web-ui#272 - Full query auto-completion
v1.13.6
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
v1.13.5
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
Change log
Improvements
- #5967 - Set maximum number of points in a collection with strict mode