# Qdrant changelog > A vector database and similarity search engine. - Vendor: Qdrant - Category: AI - Official site: https://qdrant.tech - Tracked by: What's New (https://whatsnew.fyi/product/qdrant) - Harvested from: GitHub (qdrant/qdrant) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v1.19.0 - Date: 2026-08-05 - Version: v1.19.0 - Original notes: https://github.com/qdrant/qdrant/releases/tag/v1.19.0 - Permalink: https://whatsnew.fyi/product/qdrant/releases/v1.19.0 - **added** — TurboQuant 4-bit as a datatype of primary vector storage to store only 4-bit quantized vectors and spare disk space on original vectors - **added** — Unify definition of memory usage strategy for collection components using "memory": "cold" / "cached" / "pinned" to define memory behavior for each individual collection component - **added** — Allow "match": {"prefix": "..."} in filter to match keywords by prefix when enabled in keyword index - **added** — Per-query IDF corpus for sparse vector search - **added** — Slice filtering condition for sliced scroll and deterministic sampling - **added** — Global quota API - **added** — Add routing token for deterministic read routes - **changed** — Use batched reads in vector and payload storage - **changed** — Utilize io_uring for payload storage - **changed** — Lower default update queue length from 1M to 200 - **changed** — Enable single file mmap vector storage by default for immutable segments - **changed** — Add option to explicitly disable BM25 stemmer and deprecate "none" hack - **changed** — Respond HTTP 405 on cluster endpoints when in standalone mode - **changed** — Restart consensus thread on failure instead of stopping permanently - **changed** — Support snapshot recovery of streamable segments without nested files/ dir - **changed** — Speed up TurboQuant Hadamard rotation by approximately 3x - **changed** — Use jemalloc 5.3.1 to support page sizes larger than 4KB on aarch64 systems - **fixed** — Fixes for resharding abort logic consistency - **fixed** — Fix data loss when a payload index drop races the background segment flush - **fixed** — Fix abort resharding live-lock - **fixed** — Fix empty min_should with non-zero min_count matching everything #### Change log ##### Features :point_up: * https://github.com/qdrant/qdrant/milestone/50 - TurboQuant 4-bit as a datatype of primary vector storage. Only store 4-bit quantized vectors and spare disk space on original vectors. [[docs](https://qdrant.tech/documentation/manage-data/vectors/#turbo4)] * https://github.com/qdrant/qdrant/pull/9669, https://github.com/qdrant/qdrant/pull/9684, https://github.com/qdrant/qdrant/pull/9950 - Unify definition of memory usage strategy for collection components. Use `"memory": "cold" / "cached" / "pinned"` to define memory behavior for each individual collection component. Allows for more fine-grained control over memory usage and performance. [[docs](https://qdrant.tech/documentation/ops-configuration/memory-tiers/)] * https://github.com/qdrant/qdrant/pull/9683 - Allow `"match": {"prefix": "..."}` in `filter` to match keywords by prefix, must be enabled in keyword index. [[docs](https://qdrant.tech/documentation/search/filtering/#prefix-match)] * https://github.com/qdrant/qdrant/pull/9661 - Per-query IDF corpus for sparse vector search [[docs](https://qdrant.tech/documentation/search/text-search/full-text-search/#per-tenant-idf-statistics)] * https://github.com/qdrant/qdrant/pull/9899 - Slice filtering condition: sliced scroll / deterministic sampling [[docs](https://qdrant.tech/documentation/search/filtering/#slice)] * https://github.com/qdrant/qdrant/pull/10035 - Global quota API [[docs](https://qdrant.tech/documentation/ops-configuration/quotas/)] * https://github.com/qdrant/qdrant/pull/9338 - Add routing token for deterministic read routes [[docs](https://qdrant.tech/documentation/scaling/consistency-guarantees/#read-affinity)] ##### Improvements :point_left: * https://github.com/qdrant/qdrant/pull/9113 - Use batched reads in vector and payload storage * https://github.com/qdrant/qdrant/pull/9409 - Utilize `io_uring` for payload storage * https://github.com/qdrant/qdrant/pull/9448 - Lower default update queue length, reduce from 1M to 200 * https://github.com/qdrant/qdrant/pull/9500 - Use Entry API to avoid redundant map double-lookups, improving performance * https://github.com/qdrant/qdrant/pull/9332 - Enable single file mmap vector storage by default for immutable segments * https://github.com/qdrant/qdrant/pull/9376 - Add option to explicitly disable BM25 stemmer; deprecate "none" hack * https://github.com/qdrant/qdrant/pull/9457 - Performance improvements for facets * https://github.com/qdrant/qdrant/pull/9431 - Respond HTTP 405 on cluster endpoints when in standalone mode * https://github.com/qdrant/qdrant/pull/9662 - Restart consensus thread on failure instead of stopping permanently * https://github.com/qdrant/qdrant/pull/9663 - Trace-log 'Missing request message' internal gRPC errors * https://github.com/qdrant/qdrant/pull/9678 - Resolve filter-based update operations to point IDs before writing in WAL * https://github.com/qdrant/qdrant/pull/9732 - Support snapshot recovery of streamable segments without nested `files/` dir * https://github.com/qdrant/qdrant/pull/9726 - Reduce memory usage for slow requests logging * https://github.com/qdrant/qdrant/pull/9733 - Add time in gRPC responses * https://github.com/qdrant/qdrant/pull/9644 - Set S3 user-agent on snapshot uploads * https://github.com/qdrant/qdrant/pull/9749 - Lazy roaring flags bitmap and bool index counts * https://github.com/qdrant/qdrant/pull/9778 - Dedup sub-hashes with AHashSet in immutable index, improving performance * https://github.com/qdrant/qdrant/pull/9784 - Mark point deleted once instead of per value in immutable index, improving performance * https://github.com/qdrant/qdrant/pull/9660 - Speed up TurboQuant Hadamard rotation by ~3x * https://github.com/qdrant/qdrant/pull/9835 - Single inverse rotation in TurboQuant symmetric L1 scoring * https://github.com/qdrant/qdrant/pull/9811 - Align scalar f16 metrics precision with SIMD thresholds * https://github.com/qdrant/qdr _[Truncated at 4000 characters — full notes: https://github.com/qdrant/qdrant/releases/tag/v1.19.0]_ ### v1.18.3 - Date: 2026-07-17 - Version: v1.18.3 - Original notes: https://github.com/qdrant/qdrant/releases/tag/v1.18.3 - Permalink: https://whatsnew.fyi/product/qdrant/releases/v1.18.3 - **fixed** — Fix query errors when using shard keys while resharding #### Change log ##### Bug Fixes * https://github.com/qdrant/qdrant/pull/9882 - Fix query errors when using shard keys while resharding ### v1.18.2 - Date: 2026-06-04 - Version: v1.18.2 - Original notes: https://github.com/qdrant/qdrant/releases/tag/v1.18.2 - Permalink: https://whatsnew.fyi/product/qdrant/releases/v1.18.2 - **changed** — Log slow operations during shard WAL recovery - **changed** — Clear cache of ID tracker after building a segment - **changed** — Don't rebuild payload index if changing on_disk flag - **fixed** — Fix potential infinite loop in optimizer when using multi vectors with prevent_unoptimized - **fixed** — Clean up unfinished segment optimizations on cancellation, don't load them on restart - **fixed** — Fix MatchAny with an empty list being rejected on integer index - **fixed** — Add timeout to shard snapshot streaming endpoint, drop connections not actively read from - **fixed** — Fix abort transfer with resharding not being idempotent - **fixed** — Fix reporting old progress in new snapshot transfers - **fixed** — Fix WAL lock error on Android platforms - **security** — Fix REST auth whitelist bypass on specially crafted paths, resolve route before authorizing - **security** — Fix out of bound heap read with malicious snapshot by rejecting incorrect length #### Change log ##### Improvements * https://github.com/qdrant/qdrant/pull/9282 - Log slow operations during shard WAL recovery * https://github.com/qdrant/qdrant/pull/9137 - Clear cache of ID tracker after building a segment * https://github.com/qdrant/qdrant/pull/9138 - Don't rebuild payload index if changing `on_disk` flag ##### Bug Fixes * https://github.com/qdrant/qdrant/pull/9285 - Fix potential infinite loop in optimizer when using multi vectors with `prevent_unoptimized` * https://github.com/qdrant/qdrant/pull/9217 - Clean up unfinished segment optimizations on cancellation, don't load them on restart * https://github.com/qdrant/qdrant/pull/9260 - Fix MatchAny with an empty list being rejected on integer index * https://github.com/qdrant/qdrant/pull/9239 - Add timeout to shard snapshot streaming endpoint, drop connections not actively read from * https://github.com/qdrant/qdrant/pull/9215 - Fix abort transfer with resharding not being idempotent * https://github.com/qdrant/qdrant/pull/9237 - Fix reporting old progress in new snapshot transfers * https://github.com/qdrant/qdrant/pull/9226 - Fix WAL lock error on Android platforms ##### Security * https://github.com/qdrant/qdrant/pull/9254 - Fix REST auth whitelist bypass on specially crafted paths, resolve route before authorizing * https://github.com/qdrant/qdrant/pull/9268 - Fix out of bound heap read with malicious snapshot by rejecting incorrect length ### v1.18.1 - Date: 2026-05-22 - Version: v1.18.1 - Original notes: https://github.com/qdrant/qdrant/releases/tag/v1.18.1 - Permalink: https://whatsnew.fyi/product/qdrant/releases/v1.18.1 - **changed** — Refactor quantized multi-vector scorers for io_uring support - **changed** — Validate vector dimensions before WAL write for async upserts - **fixed** — Notify pending consensus ops on snapshot apply - **fixed** — Fix indexed integer range filter with float values - **fixed** — Fix {match: {except: []}} returning zero results with payload index - **fixed** — Fix empty vector panic - **fixed** — Fix TurboQuant heap memory under-reporting - **fixed** — Do not use unnecessary sequential mmaps - **fixed** — Fix resharding cleanup data race with update queue - **fixed** — Use cluster default shard transfer method for fallback - **fixed** — Recreate workers/optimizers async to not block consensus - **fixed** — Restart optimizer on conflicting vector schema - **fixed** — Do not remove shard for snapshot transfer receiver - **fixed** — Fix snapshot transfer cancellation on external malformed requests - **fixed** — Fix deleted mask race on optimization and snapshot creation - **security** — Authorize request before accepting snapshot file upload #### Change log ##### Improvements * https://github.com/qdrant/qdrant/pull/8988 - Refactor quantized multi-vector scorers for io_uring support * https://github.com/qdrant/qdrant/pull/9058 - Validate vector dimensions before WAL write for async upserts ##### Bug Fixes * https://github.com/qdrant/qdrant/pull/8990 - Notify pending consensus ops on snapshot apply * https://github.com/qdrant/qdrant/pull/9054 - Fix indexed integer range filter with float values * https://github.com/qdrant/qdrant/pull/9055 - Fix `{match: {except: []}}` returning zero results with payload index * https://github.com/qdrant/qdrant/pull/9070 - Fix empty vector panic * https://github.com/qdrant/qdrant/pull/9099 - Fix TurboQuant heap memory under-reporting * https://github.com/qdrant/qdrant/pull/9107 - Do not use unnecessary sequential mmaps * https://github.com/qdrant/qdrant/pull/9014 - Fix resharding cleanup data race with update queue * https://github.com/qdrant/qdrant/pull/9120 - Use cluster default shard transfer method for fallback * https://github.com/qdrant/qdrant/pull/9121 - Recreate workers/optimizers async to not block consensus * https://github.com/qdrant/qdrant/pull/9110 - Restart optimizer on conflicting vector schema * https://github.com/qdrant/qdrant/pull/9122 - Do not remove shard for snapshot transfer receiver * https://github.com/qdrant/qdrant/pull/9125 - Fix snapshot transfer cancellation on external malformed requests * https://github.com/qdrant/qdrant/pull/9116 - Fix deleted mask race on optimization and snapshot creation ##### Security * https://github.com/qdrant/qdrant/pull/9031 - Authorize request before we accept snapshot file upload ### v1.18.0 - Date: 2026-05-11 - Version: v1.18.0 - Original notes: https://github.com/qdrant/qdrant/releases/tag/v1.18.0 - Permalink: https://whatsnew.fyi/product/qdrant/releases/v1.18.0 - **added** — Add TurboQuant quantization variant for 8x vector compression without recall penalty - **added** — Add API to create and delete named vectors in existing collections - **added** — Add deep memory reporting showing memory usage breakdown for storage components - **added** — Add low memory mode to force open everything on disk and minimize out of memory crashes on startup - **added** — Add strict mode parameter to reject updates when memory usage is high via max_resident_memory_percent - **changed** — Use dynamic CPU pool for search workers to improve search performance with high IO wait - **changed** — Use operation size based batching in shard transfers to achieve higher throughput - **changed** — Reduce memory usage of immutable geo index by 7x - **removed** — Fully remove RocksDB support - **changed** — Don't stall update queue when waiting for deferred points - **changed** — Use default timeout of 60 seconds for update requests and clean up long running update requests - **changed** — Clear optimizer errors when collection update triggers optimizer recreation to allow recovery without restart - **changed** — Use snapshot based shard transfers for faster recovery when WAL delta cannot be resolved - **changed** — Clear shard data on receiver first during snapshot transfer to prevent out of disk crashes - **changed** — Clean temporary directories before loading collections to prevent out of disk crashes on recovery - **changed** — Don't hold shard holder lock during search to prevent blocking other operations - **changed** — Record API method path in audit log events - **changed** — Report tracing ID in audit log events - **changed** — Report audit log configuration and data size in telemetry and metrics - **changed** — Optimize cosine normalization on ARM CPUs using SIMD - **fixed** — Fix stop words always being lowercased over gRPC even if disabled - **fixed** — Fix datetime parsing for YYYY-MM-DDTHH:MM format - **fixed** — Fix IsEmpty condition on freshly rebuilt null index - **fixed** — Fix nested MatchTextAny not using full-text index - **fixed** — Fix geo circle hash bound checks - **fixed** — Fix phrase matching crossing string-array element boundaries - **fixed** — Fix hard panic when there are multiple validation errors - **fixed** — Disallow sparse vectors with an empty name - **fixed** — Fix GPU not being used for HNSW without main graph - **fixed** — Fix infinite loop in HNSW sub graph building - **fixed** — Fix panic when snapshot path contains non-UTF-8 characters - **fixed** — Fix hard panic on corrupt collection alias file by returning error instead - **fixed** — Fix disk IO not always being measured in map index - **fixed** — Fix chunk capacity reservation to allocate more efficiently - **fixed** — Fix payload index flushers absorbing cancellations as errors - **fixed** — Fix snapshot files not cleaned up on snapshot restore failure - **fixed** — Fix clearing page cache not being reliable by adding missing candidates - **fixed** — Fix map index listing modified file as immutable - **fixed** — Fix data race causing disk watcher not to be woken up and causing timeouts - **fixed** — Make resharding operations idempotent to fix cluster state corruption on crash - **fixed** — Fix slow request logging for read operations with shard level errors - **fixed** — Don't allocate async search workers we don't use to reduce thread count - **fixed** — Don't write to old shards on resharding down after write hashring commit to fix missing shard errors - **fixed** — Fix edge sparse vector search panic on score post processing - **fixed** — Fix various Raft consensus correctness bugs #### Change log ##### Features 🏎️ * [milestone!48](https://github.com/qdrant/qdrant/milestone/48) - Add TurboQuant quantization variant, 8x vector compression without the recall tax * https://github.com/qdrant/qdrant/pull/8605 - Add API to create and delete named vectors in existing collection * https://github.com/qdrant/qdrant/pull/8606 - Deep memory reporting, show memory usage breakdown for storage components * https://github.com/qdrant/qdrant/pull/8714 - Add low memory mode, force open everything on disk to minimize out of memory crash on startup * https://github.com/qdrant/qdrant/pull/8715 - Add strict mode parameter to reject updates when memory usage is high (`max_resident_memory_percent`) ##### Improvements 📏 * , - Use dynamic CPU pool for search workers, improve search performance when there's high IO wait * , - Use operation size based batching in shard transfers to achieve higher throughput * https://github.com/qdrant/qdrant/pull/8673 - Reduce memory usage of immutable geo index by 7x * https://github.com/qdrant/qdrant/pull/8529 - Fully remove RocksDB support, simplifying storage handling * https://github.com/qdrant/qdrant/pull/8768 - Don't stall update queue when waiting for deferred points * https://github.com/qdrant/qdrant/pull/8944 - Use default timeout of 60 seconds to update requests, clean up long running update requests * https://github.com/qdrant/qdrant/pull/8767 - When collection update triggers optimizer recreation, clear any optimizer errors to allow recovery without restart * https://github.com/qdrant/qdrant/pull/8784 - Use snapshot based shard transfers for much faster recovery if WAL delta cannot be resolved * https://github.com/qdrant/qdrant/pull/8782 - On snapshot transfer, first clear shard data on receiver to prevent out of disk crash * https://github.com/qdrant/qdrant/pull/8689 - Clean temporary directories before loading collections, may prevent out of disk crash on recovery * https://github.com/qdrant/qdrant/pull/8830 - Don't hold shard holder lock during search to prevent blocking various other operations * , - Record API method path in audit log events * https://github.com/qdrant/qdrant/pull/8402 - Report tracing ID in audit log events * https://github.com/qdrant/qdrant/pull/8636 - Report audit log configuration and data size in telemetry and metrics * https://github.com/qdrant/qdrant/pull/8640 - Optimize cosine normalization on ARM CPUs (SIMD) * https://github.com/qdrant/qdrant/pull/8571 - Skip audit logging on telemetry endpoints * https://github.com/qdrant/qdrant/pull/8693 - Make HNSW sub graph building deterministic * , , - Report various structures in deterministic order * https://github.com/qdrant/qdrant/pull/8932 - Link to agentic skills in startup message ##### Bug Fixes 🪺 * https://github.com/qdrant/qdrant/pull/8728 - Fix stop words always being lowercased over gRPC even if disabled * https://github.com/qdrant/qdrant/pull/8719 - Fix datetime parsing for `YYYY-MM-DDTHH:MM` format * https://github.com/qdrant/qdrant/pull/8734 - Fix IsEmpty condition on freshly rebuilt null index * https://github.com/qdrant/qdrant/pull/8939 - Fix nested MatchTextAny not using full-text index * https://github.com/qdrant/qdrant/pull/8646 - Fix geo circle hash bound checks * https://github.com/qdrant/qdrant/pull/8938 - Fix phrase matching crossing string-array element boundaries * https://github.com/qdrant/qdrant/pull/8762 - Fix hard panic when there are multiple validation errors * https://github.com/qdrant/qdrant/pull/8194 - Disallow sparse vectors with an empty n _[Truncated at 4000 characters — full notes: https://github.com/qdrant/qdrant/releases/tag/v1.18.0]_ ### v1.17.1 - Date: 2026-03-27 - Version: v1.17.1 - Original notes: https://github.com/qdrant/qdrant/releases/tag/v1.17.1 - Permalink: https://whatsnew.fyi/product/qdrant/releases/v1.17.1 - **added** — Defer point updates and efficiently apply and optimize points with prevent_unoptimized=true - **changed** — Make Gridstore flushes non-blocking to reduce search tail latencies - **changed** — Improve performance of filtered search in case of singular payload value - **added** — Add request tracing ID into audit log - **changed** — Propagate WAL errors instead of panicking during loading of shards - **changed** — Allow peer to bootstrap with used URI if empty - **fixed** — Fix raw Vulkan name pointer type in GPU - **fixed** — Fix creation of uninitialized shard key with replication factor > 1 in tiered multi-tenancy workflow - **fixed** — Prevent min_should panic on large amount of conditions - **fixed** — Fix restore of cluster snapshots which creates unnecessary replicas in Partial state - **fixed** — Fix Server disconnected without sending a response error while performing concurrent ingestion - **security** — Force snapshot recovery from snapshot directory only - **fixed** — Fix lock for collection-level operations during shard transfer - **fixed** — Do not fail on collection-level operations with dummy shard - **fixed** — Fix WAL reading issue introduced in 1.17.0 - **fixed** — Fix panic in WAL replay - **fixed** — Fix WAL delta transfer by rejecting truncated recovery points before equal-pruning - **fixed** — Fix incorrect warning in geo-index - **fixed** — Prevent locking shard holder for a long time in slow stream records transfers - **fixed** — Fix panic in optimizer logging #### Change log ##### Improvements * [milestone#46](https://github.com/qdrant/qdrant/milestone/46?closed=1) - Defer point updates, efficiently apply and optimize points with `prevent_unoptimized=true` * https://github.com/qdrant/qdrant/pull/8188 - Make Gridstore flushes non-blocking to reduce search tail latencies * https://github.com/qdrant/qdrant/pull/8235 - Improve performance of filtered search in case of singular payload value * https://github.com/qdrant/qdrant/pull/8402 - Add request tracing ID into audit log * https://github.com/qdrant/qdrant/pull/8460 - Propagate WAL errors instead of panicking during loading of shards * https://github.com/qdrant/qdrant/pull/8301 - Allow peer to bootstrap with used URI if empty ##### Bug fixes * https://github.com/qdrant/qdrant/pull/8177 - GPU: fix raw Vulkan name pointer type * https://github.com/qdrant/qdrant/pull/8193 - Fix creation of uninitialized shard key with replication factor > 1, fixing tiered multi-tenancy workflow * https://github.com/qdrant/qdrant/pull/8217 - Prevent `min_should` panic on large amount of conditions * https://github.com/qdrant/qdrant/pull/8179 - Fix for restore of cluster snapshots which creates unnecessary replicas in Partial state * https://github.com/qdrant/qdrant/pull/8220 - Fix Server disconnected without sending a response error while performing concurrent ingestion using * https://github.com/qdrant/qdrant/pull/8341 - Security patch to force snapshot recovery from snapshot directory only * https://github.com/qdrant/qdrant/pull/8373 - Fix lock for collection-level operations during shard transfer * https://github.com/qdrant/qdrant/pull/8438 - Do not fail on collection-level operations with dummy shard * https://github.com/qdrant/qdrant/pull/8455 - Fix WAL reading issue introduced in 1.17.0 * https://github.com/qdrant/qdrant/pull/8454 - Fix another panic in WAL replay * https://github.com/qdrant/qdrant/pull/8475 - Fix for WAL delta transfer: reject truncated recovery points before equal-pruning * https://github.com/qdrant/qdrant/pull/8514 - Fix incorrect warning in geo-index * https://github.com/qdrant/qdrant/pull/8374 - Prevent locking shard holder for a long time in slow stream records transfers * https://github.com/qdrant/qdrant/pull/8480 - Fix panic in optimizer logging * https://github.com/qdrant/qdrant/pull/8449 - Fix panic in chunked vector storage ##### Preview This features are not officially released yet, but available in the build: * https://github.com/qdrant/qdrant/pull/8214 - Per-collection metrics in Prometheus * https://github.com/qdrant/qdrant/pull/8498 - API for reading audit log entries * https://github.com/qdrant/qdrant/pull/8469 - Maximum batch size config in strict mode ##### Edge * Rust Crate for Qdrant Edge v0.6.0 - https://crates.io/crates/qdrant-edge * Python Package for Qdrant Edge v0.6.0 - https://pypi.org/project/qdrant-edge-py/ ### v1.17.0 - Date: 2026-02-20 - Version: v1.17.0 - Original notes: https://github.com/qdrant/qdrant/releases/tag/v1.17.0 - Permalink: https://whatsnew.fyi/product/qdrant/releases/v1.17.0 - **added** — Relevance Feedback feature for search results - **added** — API for detailed report on optimization progress and stages - **added** — API for aggregated telemetry of the whole cluster - **added** — Unlimited update queue to gracefully smooth update spikes - **added** — Audit Access Logging - **added** — Weighted RRF for hybrid queries - **added** — Config option to control update throughput and prevent unoptimized searches - **added** — Configurable read fan-out delay for dealing with tail latency in distributed clusters - **added** — For upserts, add `update_mode` parameter to either `upsert`, `update` or `insert` - **added** — Secondary API key configuration for zero downtime key rotation in distributed clusters - **added** — Dedicated HTTP port for `/metrics` endpoint for internal monitoring - **added** — API to list shard keys - **added** — Ability to disable extra HNSW links construction for specific payload indices - **changed** — Improve timeout handling on read operations - **changed** — Improve timeout handling in update operations, prevent shard failures in case of timed out updates after WAL - **changed** — Recover snapshot without creating intermediate files, greatly improves recovery time and disk usage - **changed** — Recover snapshots directly into target file system to avoid expensive file movements - **changed** — Disable old shard key format deprecated in 1.15.0 - **fixed** — Fix flush ordering to follow segment dependencies, prevents dataloss by CoW on flush interruption - **fixed** — Fix data race in stream records transfer potentially missing ongoing updates #### Change log ##### Features 🏋️ * [milestone#38](https://github.com/qdrant/qdrant/milestone/38?closed=1) - Relevance Feedback ([docs](https://qdrant.tech/documentation/concepts/search-relevance/#relevance-feedback)) * [milestone#44](https://github.com/qdrant/qdrant/milestone/44?closed=1) - API for detailed report on optimization progress and stages ([docs](https://qdrant.tech/documentation/concepts/optimizer/#optimization-monitoring)) * [milestone#40](https://github.com/qdrant/qdrant/milestone/40?closed=1) - API for aggregated telemetry of the whole cluster ([docs](https://qdrant.tech/documentation/guides/monitoring/#cluster-wide-telemetry)) * [milestone#43](https://github.com/qdrant/qdrant/milestone/43?closed=1) - Unlimited update queue to gracefully smooth update spikes ([docs](https://qdrant.tech/documentation/guides/low-latency-search/)) * https://github.com/qdrant/qdrant/pull/8071 - Add Audit Access Logging ([docs](https://qdrant.tech/documentation/guides/security/#audit-logging)) * https://github.com/qdrant/qdrant/pull/8063 - Add Weighted RRF ([docs](https://qdrant.tech/documentation/concepts/hybrid-queries/#reciprocal-rank-fusion-rrf)) * https://github.com/qdrant/qdrant/pull/7643 - Add config option to control update throughput and prevent unoptimized searches ([docs](https://qdrant.tech/documentation/guides/low-latency-search/)) * https://github.com/qdrant/qdrant/pull/7929 - Add configurable read fan-out delay for dealing with tail latency in distributed clusters ([docs](https://qdrant.tech/documentation/guides/low-latency-search/#use-delayed-fan-outs)) * https://github.com/qdrant/qdrant/pull/7963 - For upserts, add `update_mode` parameter to either `upsert`, `update` or `insert` ([docs](https://qdrant.tech/documentation/concepts/points/#update-mode)) * https://github.com/qdrant/qdrant/pull/7835 - Add secondary API key configuration for zero downtime key rotation in distributed clusters * https://github.com/qdrant/qdrant/pull/7838 - Add dedicated HTTP port for `/metrics` endpoint for internal monitoring * https://github.com/qdrant/qdrant/pull/7615 - Add API to list shard keys ([docs](https://qdrant.tech/documentation/guides/distributed_deployment/#user-defined-sharding)) ##### Improvements 🤸 * https://github.com/qdrant/qdrant/pull/7802 - Improve timeout handling on read operations * https://github.com/qdrant/qdrant/pull/7750 - Improve timeout handling in update operations, prevent shard failures in case of timed out updates after WAL * https://github.com/qdrant/qdrant/pull/8025 - Recover snapshot without creating intermediate files, greatly improves recovery time and disk usage * https://github.com/qdrant/qdrant/pull/8059 - Recover snapshots directly into target file system to avoid expensive file movements * https://github.com/qdrant/qdrant/pull/7883 - Flush after snapshot unpack with `syncfs` to persist a large number of files much more efficiently * https://github.com/qdrant/qdrant/pull/8072 - Don't lock shard holder structure during creation of a snapshot, previously blocking shard level operations * https://github.com/qdrant/qdrant/pull/8166 - Add timeout to snapshot downloads, abort if connection gets stuck for more than a minute * https://github.com/qdrant/qdrant/pull/8007, https://github.com/qdrant/qdrant/pull/8056 - Improve segments locking approach to minimize lock contention * https://github.com/qdrant/qdrant/pull/8105 - Limit number of parallel updates on a shard to 64 to prevent order tracking overhead * https://github.com/qdrant/qdrant/pull/8169 - Reduce locking in Gridstore to lower search tail latencies * https://github.com/qdrant/qdrant/pull/8164 - Actively free cache memory for closed WAL segments to reduce memory pressure * https://github.com/qdrant/qdrant/pull/7952 - Disable in-place payload updates on unindexed fields, improve immutability guarantees of indexed segments improving partial snapshots * https://github.com/qdrant/qdrant/pull/7887 - Add ability to d _[Truncated at 4000 characters — full notes: https://github.com/qdrant/qdrant/releases/tag/v1.17.0]_ ### v1.16.3 - Date: 2025-12-19 - Version: v1.16.3 - Original notes: https://github.com/qdrant/qdrant/releases/tag/v1.16.3 - Permalink: https://whatsnew.fyi/product/qdrant/releases/v1.16.3 - **changed** — Respect search and point retrieve timeout when trying to access segments - **changed** — Respect telemetry timeout when fetching shard statistics - **changed** — Log snapshot download duration and speed - **fixed** — Fix WAL delta transfer corrupting replica after a previous full transfer was aborted - **fixed** — Fix flush losing changes on transient disk IO errors, potentially corrupting data - **fixed** — Fix incorrectly aborting shard transfers when dropping unrelated shard - **fixed** — Fix flush error in Gridstore, potentially corrupting data when quickly alternating inserts/deletes - **fixed** — Fix flush data race in Gridstore, potentially corrupting data when storage is cleared in parallel - **fixed** — Fix handling of collection names with weird characters, breaking snapshot transfers for example - **fixed** — Fix snapshot metrics not always reporting when zero (snapshot_creation_running, snapshot_recovery_running, snapshot_created_total) - **fixed** — Fix incorrectly reporting optimization errors in telemetry on panic - **fixed** — Fix slow shutdown on SIGINT when optimizations are running - **fixed** — Fix Qdrant not building on Windows ARM64 - **changed** — Keep RocksDB support until 1.18.0 in development builds #### Change log ##### Improvements - https://github.com/qdrant/qdrant/pull/7755, https://github.com/qdrant/qdrant/pull/7588 - Respect search and point retrieve timeout when trying to access segments - https://github.com/qdrant/qdrant/pull/7685 - Respect telemetry timeout when fetching shard statistics - https://github.com/qdrant/qdrant/pull/7715 - Log snapshot download duration and speed ##### Bug fixes - https://github.com/qdrant/qdrant/pull/7787, https://github.com/qdrant/qdrant/pull/7791 - Fix WAL delta transfer corrupting replica after a previous full transfer was aborted - https://github.com/qdrant/qdrant/pull/7801, https://github.com/qdrant/qdrant/pull/7805 - Fix flush losing changes on transient disk IO errors, potentially corrupting data - https://github.com/qdrant/qdrant/pull/7792 - Fix incorrectly aborting shard transfers when dropping unrelated shard - https://github.com/qdrant/qdrant/pull/7741 - Fix flush error in Gridstore, potentially corrupting data when quickly alternating inserts/deletes - https://github.com/qdrant/qdrant/pull/7702 - Fix flush data race in Gridstore, potentially corrupting data when storage is cleared in parallel - https://github.com/qdrant/qdrant/pull/7759, https://github.com/qdrant/qdrant/pull/7782 - Fix handling of collection names with weird characters, breaking snapshot transfers for example - https://github.com/qdrant/qdrant/pull/7788 - Fix snapshot metrics not always reporting when zero (`snapshot_{creation,recovery}_running`, `snapshot_created_total`) - https://github.com/qdrant/qdrant/pull/7783 - Fix incorrectly reporting optimization errors in telemetry on panic - https://github.com/qdrant/qdrant/pull/7765 - Fix slow shutdown on SIGINT when optimizations are running - https://github.com/qdrant/qdrant/pull/7690 - Fix Qdrant not building on Windows ARM64 - https://github.com/qdrant/qdrant/pull/7683 - Keep RocksDB support until 1.18.0 in development builds ### v1.16.2 - Date: 2025-12-04 - Version: v1.16.2 - Original notes: https://github.com/qdrant/qdrant/releases/tag/v1.16.2 - Permalink: https://whatsnew.fyi/product/qdrant/releases/v1.16.2 - **changed** — Improve request timeout handling for telemetry and metrics - **added** — Add user agent to HTTP requests sent by Qdrant server - **fixed** — Fix critical WAL bug that could break consensus or cause data corruption on restart - **fixed** — Fix consensus crash when applying consensus snapshot with non-replicated collection - **fixed** — Fix panic during search on segments with empty HNSW graph - **fixed** — Fix shard resource cleanup when shard is replaced and prevent deadlock on small CPUs - **fixed** — Fix payload index storage still flushing after removal, preventing data corruption and IO errors on Windows - **fixed** — Fix Gridstore storage still flushing after wipe, preventing data corruption and IO errors - **fixed** — Fix Docker/WSL on Windows with bind mount corrupting storage - **fixed** — Fix `collections_vector_total` metric reporting -0.0 if there are no vectors - **changed** — Report `collection_indexed_only_excluded_points` metric if zero #### Change log ##### Improvements - https://github.com/qdrant/qdrant/pull/7607 - Improve request timeout handling for telemetry and metrics - https://github.com/qdrant/qdrant/pull/7623 - Add user agent to HTTP requests sent by Qdrant server ##### Bug fixes - https://github.com/qdrant/qdrant/pull/7674 - Fix critical WAL bug that could break consensus or cause data corruption on restart - https://github.com/qdrant/qdrant/pull/7684 - Fix consensus crash when applying consensus snapshot with non-replicated collection - https://github.com/qdrant/qdrant/pull/7620 - Fix panic during search on segments with empty HNSW graph - https://github.com/qdrant/qdrant/pull/7629, https://github.com/qdrant/qdrant/pull/7640, https://github.com/qdrant/qdrant/pull/7673 - Fix shard resource cleanup when shard is replaced, prevent deadlock on small CPUs - https://github.com/qdrant/qdrant/pull/7621, https://github.com/qdrant/qdrant/pull/7626 - Fix payload index storage still flushing after removal, fixing data corruption and IO errors on Windows - https://github.com/qdrant/qdrant/pull/7624, https://github.com/qdrant/qdrant/pull/7627 - Fix Gridstore storage still flushing after wipe, fixing data corruption and IO errors - https://github.com/qdrant/qdrant/pull/7614, https://github.com/qdrant/qdrant/pull/7618 - Fix Docker/WSL on Windows with bind mount corrupting storage - https://github.com/qdrant/qdrant/pull/7678 - Fix `collections_vector_total` metric reporting -0.0 if there are no vectors - https://github.com/qdrant/qdrant/pull/7649 - Also report `collection_indexed_only_excluded_points` metric if zero ### v1.16.1 - Date: 2025-11-25 - Version: v1.16.1 - Original notes: https://github.com/qdrant/qdrant/releases/tag/v1.16.1 - Permalink: https://whatsnew.fyi/product/qdrant/releases/v1.16.1 - **changed** — Make batch queries up to 3 times faster on full scans by reading each point only once - **changed** — Actively migrate vector, payload and payload index storage from RocksDB into Gridstore on startup for better and more predictable performance - **added** — Add 60s internal timeout for telemetry/metrics endpoints to prevent long hanging tasks - **added** — Add validation to restart shard transfer operation - **changed** — Defer Gridstore flushing to make flushing behavior consistent with all other storage components - **changed** — Improve consensus WAL compaction logging to aid debugging - **added** — Make timeout for inference requests user configurable - **fixed** — Fix panic at startup on old clusters with user defined sharding, if not updated to Qdrant 1.15.5 first - **fixed** — Fix breaking Raft by killing node at specific time during consensus snapshot, preventing potential crash loop - **fixed** — Fix corrupting WAL with broken flush edge case after WAL is cleared or truncated - **fixed** — Fix incorrect rescoring default on mutable segments when using binary quantization - **fixed** — Spawn search/update tasks on the correct runtime, significantly reduce number of general/actix threads - **fixed** — Fix data race in shard transfers, wait on transfer to start before initializing shards - **fixed** — Fix incorrect log message when failing to read lock segment for some time #### Change log ##### Improvements - https://github.com/qdrant/qdrant/pull/7514, https://github.com/qdrant/qdrant/pull/7572 - Make batch queries up to 3 times faster on full scans by reading each point only once - https://github.com/qdrant/qdrant/pull/7551 - Actively migrate vector, payload and payload index storage from RocksDB into Gridstore on startup for better and more predictable performance - https://github.com/qdrant/qdrant/pull/7579 - Add 60s internal timeout for telemetry/metrics endpoints to prevent long hanging tasks - https://github.com/qdrant/qdrant/pull/7557 - Add validation to restart shard transfer operation - https://github.com/qdrant/qdrant/pull/7446 - Defer Gridstore flushing to make flushing behavior consistent with all other storage components - https://github.com/qdrant/qdrant/pull/7580 - Improve consensus WAL compaction logging to aid debugging - https://github.com/qdrant/qdrant/pull/7598 - Make timeout for inference requests user configurable ##### Bug fixes - https://github.com/qdrant/qdrant/pull/7564 - Fix panic at startup on old clusters with user defined sharding, if not updated to Qdrant 1.15.5 first - https://github.com/qdrant/qdrant/pull/7577 - Fix breaking Raft by killing node at specific time during consensus snapshot, preventing potential crash loop - https://github.com/qdrant/qdrant/pull/7587 - Fix corrupting WAL with broken flush edge case after WAL is cleared or truncated - https://github.com/qdrant/qdrant/pull/7570 - Fix incorrect rescoring default on mutable segments when using binary quantization - https://github.com/qdrant/qdrant/pull/7569, https://github.com/qdrant/qdrant/pull/7575 - Spawn search/update tasks on the correct runtime, significantly reduce number of general/actix threads - https://github.com/qdrant/qdrant/pull/7558 - Fix data race in shard transfers, wait on transfer to start before initializing shards - https://github.com/qdrant/qdrant/pull/7556 - Fix incorrect log message when failing to read lock segment for some time