# Milvus changelog > A vector database built for scalable similarity search. - Vendor: Zilliz - Category: AI - Official site: https://milvus.io - Tracked by: What's New (https://whatsnew.fyi/product/milvus) - Harvested from: GitHub (milvus-io/milvus) - 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 ### v2.6.22 — milvus-2.6.22 - Date: 2026-08-04 - Version: v2.6.22 - Original notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.22 - Permalink: https://whatsnew.fyi/product/milvus/releases/v2.6.22 - **changed** — Reduce redundant bulk-delete replay and timestamp-column pinning during delete application in QueryNode - **changed** — Improve MixCoord shutdown ordering by retaining its shared etcd session until all child coordinators stopped - **changed** — Reduce QueryNode distribution report payloads by sending incremental segment and channel updates to QueryCoord - **changed** — Improve DataNode and QueryNode efficiency by reusing precomputed BM25 function outputs while preserving BM25 statistics collection - **changed** — Enable storage-version compaction by default in DataCoord compaction - **changed** — Enable split and fusion optimization by default for GIS queries, reducing query latency by up to 9.31x - **fixed** — Fix incorrect GIS filtering and boost rescore results for queries using offset input, large segments, or growing segments - **fixed** — Fix incorrect JSON query results and integer precision loss in mixed-type IN, NOT IN, and combined filter expressions - **fixed** — Fix RESTful v2 Function DDL requests continuing to execute after parameter validation failed - **fixed** — Fix stats and compaction text-index builds failing to access encrypted storage because worker tasks lacked cipher context - **fixed** — Fix geometry queries on growing segments failing when visible rows spanned multiple chunks - **fixed** — Fix changed Proxy metric status labels causing existing dashboards and alerts to stop matching failed or rejected requests ##### v2.6.22 Release date: August 4, 2026 | Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version | | -------------- | ------------------ | ------------------- | ---------------- | -------------- | | 2.6.22 | 2.6.17 | 2.6.17 | 2.6.22 | 2.6.22 | We are excited to announce the release of Milvus v2.6.22! This release improves QueryNode efficiency, coordinator reliability, storage compaction, and GIS query performance. It also fixes GIS and JSON query accuracy issues, encrypted-storage access failures, and monitoring compatibility regressions. ###### Improvements - Reduced redundant bulk-delete replay and timestamp-column pinning during delete application in QueryNode ([#51754](https://github.com/milvus-io/milvus/pull/51754)) - Improved MixCoord shutdown ordering by retaining its shared etcd session until all child coordinators stopped ([#51771](https://github.com/milvus-io/milvus/pull/51771)) - Reduced QueryNode distribution report payloads by sending incremental segment and channel updates to QueryCoord ([#51881](https://github.com/milvus-io/milvus/pull/51881)) - Improved DataNode and QueryNode efficiency by reusing precomputed BM25 function outputs while preserving BM25 statistics collection ([#51927](https://github.com/milvus-io/milvus/pull/51927)) - Improved DataCoord compaction by enabling storage-version compaction by default ([#51946](https://github.com/milvus-io/milvus/pull/51946)) - Optimized GIS queries by enabling split and fusion optimization by default, reducing query latency by up to 9.31x in measured cases ([#52009](https://github.com/milvus-io/milvus/pull/52009)) ###### Bug fixes - Fixed incorrect GIS filtering and boost rescore results for queries using offset input, large segments, or growing segments ([#50751](https://github.com/milvus-io/milvus/pull/50751), [#51487](https://github.com/milvus-io/milvus/pull/51487)) - Fixed incorrect JSON query results and integer precision loss in mixed-type IN, NOT IN, and combined filter expressions ([#51556](https://github.com/milvus-io/milvus/pull/51556), [#51627](https://github.com/milvus-io/milvus/pull/51627)) - Fixed RESTful v2 Function DDL requests continuing to execute after parameter validation failed ([#51699](https://github.com/milvus-io/milvus/pull/51699)) - Fixed stats and compaction text-index builds failing to access encrypted storage because worker tasks lacked cipher context ([#51759](https://github.com/milvus-io/milvus/pull/51759)) - Fixed geometry queries on growing segments failing when visible rows spanned multiple chunks ([#51882](https://github.com/milvus-io/milvus/pull/51882)) - Fixed changed Proxy metric status labels causing existing dashboards and alerts to stop matching failed or rejected requests ([#51909](https://github.com/milvus-io/milvus/pull/51909)) ### v3.0.0 — milvus-3.0.0 - Date: 2026-07-29 - Version: v3.0.0 - Original notes: https://github.com/milvus-io/milvus/releases/tag/v3.0.0 - Permalink: https://whatsnew.fyi/product/milvus/releases/v3.0.0 - **added** — External Collection now supports external fields feeding function output fields such as BM25 sparse vectors, MinHash signatures, and text embeddings - **added** — Add milvus-table external format that treats Milvus Snapshot metadata and Storage V3 manifests as an external source - **added** — Support online schema evolution for external collections with additive schema evolution when external table gains new columns - **added** — Support adding, backfilling, and dropping columns while serving continues without full-collection rebuilds - **added** — Support external backfill for values computed outside Milvus and inner backfill for kernel-derived values like BM25 or MinHash functions - **changed** — Sparse vector index upgraded with new search algorithms including SINDI, Block-Max WAND, and Block-Max MaxScore - **added** — Sparse index now includes inverted-list compression, configurable quantization, and per-workload search-algorithm selection - **added** — StructArray now supports null values, bitmap indexes, dynamic field addition on live collections, and partial update of struct fields through upsert - **added** — Element-level search adds hybrid search across vector sub-fields with configurable per-entity collapse and range search within it - **added** — Nested filtering covers element_filter predicates, MATCH_ANY / MATCH_ALL / MATCH_LEAST / MATCH_MOST / MATCH_EXACT quantifiers, positional sub-field access, and array_length() function - **added** — Faceted search on the search path returns top facet values with best-matching members in ANN ranking and aggregates such as COUNT and AVG - **changed** — SINDI is now the default for sparse IP search and MaxScore is the default for BM25 after new index version is enabled ##### v3.0.0 Release date: July 29, 2026 | Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version | | -------------- | ------------------ | ------------------- | ---------------- | -------------- | | 3.0.0 | 3.0.1 | 3.0.3 | 3.0.5 | 3.0.0 | Milvus 3.0.0 is officially released! Building on the lake-native architecture introduced in [3.0-beta](https://milvus.io/docs/release_notes.md#v30-beta), this release completes what the beta started: External Collection covers more lakehouse workflows; schema supports online add / backfill / drop; the sparse index is rebuilt around SINDI; StructArray and faceted search round out the retrieval engine; FAISS passthrough, and TEXT extend index and modality choices; and Woodpecker runs as a standalone service. If you are new to the 3.0 line, the Core 3.0 features recall section below summarizes the capabilities introduced in 3.0-beta; the [3.0-beta release notes](https://milvus.io/docs/release_notes.md#v30-beta) have the full write-ups. ###### What's new in 3.0.0 (since 3.0-beta) ###### External Collection: more complete lakehouse workflows 3.0-beta introduced External Collection: reference lake files in place, build indexes, and search them without copying data into Milvus. This release extends it toward complete lakehouse retrieval workflows. External fields can now feed function output fields such as BM25 sparse vectors, MinHash signatures, and text embeddings, so text and model-derived retrieval fields are built inside Milvus without copying the source table. Refresh also supports additive schema evolution: when the external table gains new columns, Milvus patches the affected segments instead of rebuilding the collection. This release also adds a `milvus-table` external format that treats Milvus Snapshot metadata and Storage V3 manifests as an external source, so a collection snapshot can itself be served as an external table — batch and serving systems get a shared, manifest-backed view of the same data. For more information, refer to [Create an External Collection](https://milvus.io/docs/create-an-external-collection.md) and [Snapshots](https://milvus.io/docs/snapshots.md). ###### Flexible schema: add, backfill, and drop columns online Schemas do not stay static in production — embedding models get replaced, features iterate, fields get deprecated — and these used to mean full-collection rebuilds with downtime or double-writes. 3.0.0 closes the loop: columns can be added, filled, and dropped while serving continues. Backfill works in both directions. External backfill handles values computed outside Milvus: add a column, snapshot the collection as a consistent starting point, run the job offline, write the values back, and Milvus indexes the new column incrementally — an embedding-model upgrade across hundreds of millions of rows becomes a hot path with no downtime. Inner backfill covers kernel-derived values: attach a BM25 or MinHash function to an existing collection and its output field is computed over existing data automatically. For more information, refer to [Add Fields to an Existing Collection](https://milvus.io/docs/add-fields-to-an-existing-collection.md). ###### Sparse index overhaul: SINDI, Block-Max WAND, and Block-Max MaxScore Milvus 3.0 upgrades the sparse vector index across the board. It introduces new search algorithms — [SINDI](https://arxiv.org/abs/2509.08395), Block-Max WAND, and Block-Max MaxScore — along with inverted-list compression, configurable quantization, and per-workload search-algorithm selection. mmap loading, serialization, and BM25 scoring are also optimized, cutting index storage and loading overhead for large-scale sparse vector and full-text search. In internal benchmarks, the compressed BM25 index is roughly 3x smaller than the 2.6 sparse index at comparable recall, and SINDI reaches up to about 10x the QPS of _[Truncated at 4000 characters — full notes: https://github.com/milvus-io/milvus/releases/tag/v3.0.0]_ ### v2.6.21 — milvus-2.6.21 - Date: 2026-07-24 - Version: v2.6.21 - Original notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.21 - Permalink: https://whatsnew.fyi/product/milvus/releases/v2.6.21 - **changed** — Improved concurrent future registration scalability by sharding the active future manager and increasing its registration buffer - **changed** — Improved load balancing for import, compaction, index, and statistics tasks across DataNodes by selecting the least-loaded node during scheduling - **changed** — Reduced redundant grantee scans when listing policies containing legacy grants - **fixed** — Fixed an issue where single-field group_by_fields search parameters were silently ignored, allowing unsupported BinaryVector group-by searches to return ordinary top-k results - **fixed** — Fixed an issue where collections could be reported as load-ready before their delegators were able to serve queries - **fixed** — Fixed an issue where Milvus could continue using a stale message queue type after switching WAL backends - **fixed** — Fixed text index reconstruction failures for nullable VARCHAR fields when rebuilding from scalar index data - **fixed** — Fixed an issue where DataNode could crash and enter CrashLoopBackOff when sort compaction encountered a missing binlog object - **fixed** — Fixed an issue where QueryNode could crash while releasing segments if the target worker was unavailable - **fixed** — Fixed incorrect cosine normalization for INT8 vectors in GPU CAGRA searches by upgrading Knowhere to v2.6.18 ##### v2.6.21 Release date: July 28, 2026 | Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version | | -------------- | ------------------ | ------------------- | ---------------- | -------------- | | 2.6.21 | 2.6.17 | 2.6.17 | 2.6.22 | 2.6.21 | We are excited to announce the release of Milvus v2.6.21! This release improves task scheduling, concurrent future registration, and policy listing efficiency. It also strengthens query readiness, WAL switching, index reconstruction, compaction resilience, and GPU CAGRA search correctness. ###### Improvements - Improved concurrent future registration scalability by sharding the active future manager and increasing its registration buffer ([#50900](https://github.com/milvus-io/milvus/pull/50900)) - Improved load balancing for import, compaction, index, and statistics tasks across DataNodes by selecting the least-loaded node during scheduling ([#51101](https://github.com/milvus-io/milvus/pull/51101)) - Reduced redundant grantee scans when listing policies containing legacy grants ([#51422](https://github.com/milvus-io/milvus/pull/51422)) ###### Bug fixes - Fixed an issue where single-field `group_by_fields` search parameters were silently ignored, allowing unsupported BinaryVector group-by searches to return ordinary top-k results ([#51159](https://github.com/milvus-io/milvus/pull/51159)) - Fixed an issue where collections could be reported as load-ready before their delegators were able to serve queries ([#51298](https://github.com/milvus-io/milvus/pull/51298)) - Fixed an issue where Milvus could continue using a stale message queue type after switching WAL backends ([#51552](https://github.com/milvus-io/milvus/pull/51552)) - Fixed text index reconstruction failures for nullable VARCHAR fields when rebuilding from scalar index data ([#51630](https://github.com/milvus-io/milvus/pull/51630)) - Fixed an issue where DataNode could crash and enter CrashLoopBackOff when sort compaction encountered a missing binlog object ([#51685](https://github.com/milvus-io/milvus/pull/51685)) - Fixed an issue where QueryNode could crash while releasing segments if the target worker was unavailable ([#51701](https://github.com/milvus-io/milvus/pull/51701)) - Fixed incorrect cosine normalization for INT8 vectors in GPU CAGRA searches by upgrading Knowhere to v2.6.18 ([#51766](https://github.com/milvus-io/milvus/pull/51766)) ### client/v3.0.0-beta - Date: 2026-07-19 - Version: client/v3.0.0-beta - Original notes: https://github.com/milvus-io/milvus/releases/tag/client/v3.0.0-beta - Permalink: https://whatsnew.fyi/product/milvus/releases/client-v3.0.0-beta - Labels: Pre-release - **changed** — Migrate Go module from github.com/milvus-io/milvus/client/v2 to github.com/milvus-io/milvus/client/v3 - **changed** — Decouple standalone client from Milvus server-side pkg modules, substantially reducing server-only transitive dependencies - **added** — Add collection snapshot management including APIs to create, drop, list, and describe collection-scoped snapshots - **added** — Add asynchronous restore workflows for snapshots with APIs for querying and listing restore jobs - **added** — Add read-only external collections with manual refresh support through RefreshExternalCollection, GetRefreshExternalCollectionProgress, and ListRefreshExternalCollectionJobs - **added** — Add search aggregation with bucket aggregation builders supporting multi-field keys, nested aggregations, top hits, ordering, and avg, sum, count, min, and max metrics - **added** — Add search by primary-key IDs using NewSearchByIDsOption and AnnRequest.WithIDs for both Int64 and VarChar primary keys - **added** — Add namespace-scoped operations with WithNamespace support to Search, Hybrid Search, Query, iterators, Insert, Upsert, and Delete options - **added** — Add query ordering through QueryOption.WithOrderByFields accepting expressions such as price:desc and name:asc - **added** — Add client-side telemetry with configurable collection of request counts, errors, latency metrics including P99 latency, recent-error tracking, periodic server heartbeats, and server-pushed command handling - **added** — Add structured RPC errors with public RPCError, common error sentinels, ErrorCode, and IsRetryableError for inspection using errors.Is - **added** — Add dynamic StructArray fields through Client.AddCollectionStructField and NewAddCollectionStructFieldOption with validation and preservation of parent nullable and max_capacity metadata - **added** — Add RBAC descriptions including user and role descriptions with role-description updates through AlterRole and force-drop support for roles - **added** — Add import two-phase commit with REST wrappers through CommitImport and AbortImport - **added** — Add message salvage API with Client.DumpMessages streaming wrapper for replication and recovery workflows - **added** — Add FunctionTypeMinHash support to the Go SDK function API - **changed** — Apply default gRPC keepalive, reconnect, and receive-size options before user-provided DialOptions - **changed** — Preserve row-based processing in Insert and Upsert builders when chaining partition, namespace, partial-update, and Array-operation options - **changed** — Replace dependency on Milvus server packages with client-local error, retry, crypto, concurrency, property, and type helpers - **changed** — Update v3 protobuf, gRPC, protobuf runtime, and supporting Go dependencies #### client/v3.0.0-beta This is the first beta release of the Milvus Go SDK v3, targeting Milvus 3.0. It is compared against client/v2.6.5. > This is a beta release. APIs and protocol details may change before v3.0.0 GA. ### Highlights - Migrates the Go module to github.com/milvus-io/milvus/client/v3. - Decouples the standalone client from Milvus server-side pkg modules, substantially reducing server-only transitive dependencies. - Adds collection snapshot management and asynchronous restore workflows. - Adds read-only external collections with manual refresh support. - Adds search aggregation, search by primary-key IDs, query ordering, and namespace-scoped operations. - Adds client-side telemetry and structured RPC error inspection. ### Breaking Changes and Migration - Module path: Update all imports from: github.com/milvus-io/milvus/client/v2 to: github.com/milvus-io/milvus/client/v3 - Proto types: Applications directly using generated Milvus messages must migrate from milvus-proto/go-api/v2 to milvus-proto/go-api/v3. Although many high-level builders retain familiar APIs, v2 and v3 protobuf types are not interchangeable. - Installation: go get github.com/milvus-io/milvus/client/v3@v3.0.0-beta - Go version: The module’s go directive is Go 1.24.9. The client README recommends Go 1.24.12 or later. - Telemetry behavior: Client telemetry is enabled by default. Set ClientConfig.TelemetryConfig.Enabled to false to disable heartbeat and metrics reporting. ### New Features - Collection snapshots: Added APIs to create, drop, list, and describe collection-scoped snapshots. Snapshots can be restored asynchronously to new collections, with APIs for querying and listing restore jobs. Snapshot data can also be pinned and unpinned to control garbage collection. (#44361, #48143) - External collections: Added schema builders for external data sources and external-field mappings: - Schema.WithExternalSource - Schema.WithExternalSpec - Field.WithExternalField External collections can be searched and queried using standard client APIs and refreshed through RefreshExternalCollection, GetRefreshExternalCollectionProgress, and ListRefreshExternalCollectionJobs. (#46886, #47492, #49531) - Search aggregation: Added bucket aggregation builders supporting multi-field keys, nested aggregations, top hits, ordering, and avg, sum, count, min, and max metrics. Results are returned through ResultSet.AggregationBuckets. (#50448) - Search by primary-key IDs: Added NewSearchByIDsOption and AnnRequest.WithIDs for using existing entities as vector-search inputs. Int64 and VarChar primary keys are supported. (#47633) - Namespace-scoped operations: Added WithNamespace support to Search, Hybrid Search, Query, iterators, Insert, Upsert, and Delete options. (#50153) - Query ordering: Added QueryOption.WithOrderByFields, accepting expressions such as price:desc and name:asc. An explicit query limit is required when ordering is used. (#51173, #51220) - Client telemetry: Added configurable collection of request counts, errors, and latency metrics, including P99 latency, recent-error tracking, periodic server heartbeats, and server- pushed command handling. (#47523, #47542) - Structured RPC errors: Added public RPCError, common error sentinels, ErrorCode, and IsRetryableError. RPC errors with matching Milvus codes can now be inspected using errors.Is. - Dynamic StructArray fields: Added Client.AddCollectionStructField and NewAddCollectionStructFieldOption, including validation and preservation of parent nullable and max_capacity metadata. (#50276) - RBAC descriptions: Added user and role descriptions, role-description updates through AlterRole, and force-drop support for roles. (#50184, #50186, #47071) - Import two-phase commit: Added REST wrappers for committing or ab _[Truncated at 4000 characters — full notes: https://github.com/milvus-io/milvus/releases/tag/client/v3.0.0-beta]_ ### v2.6.20 — milvus-2.6.20 - Date: 2026-07-14 - Version: v2.6.20 - Original notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.20 - Permalink: https://whatsnew.fyi/product/milvus/releases/v2.6.20 - **added** — Add named C++ thread-pool activity metrics and Grafana monitoring - **changed** — Improve QueryCoord scheduling by decoupling task dispatch from distribution polling to allow independent scheduling intervals - **changed** — Improve QueryNode query batching by increasing the default NQ grouping limits for larger merged query batches - **changed** — Improve index-loading resilience by safely completing pending range reads after partial failures - **changed** — Optimize VARCHAR primary-key population when loading sealed segments - **changed** — Improve filter execution performance by skipping null-bitmap processing for all-valid results - **changed** — Improve channel balancing by enabling the channel-level score balancer by default and introducing a safer default threshold for channel-exclusive mode - **changed** — Improve streaming rebalancing to trigger immediately when the primary resource group configuration changed - **changed** — Upgrade Knowhere to v2.6.17 to prevent GPU_CAGRA operations from failing with bad_optional_access under the default ef configuration - **fixed** — Fix incorrect JSON path filter results for missing, null, or type-mismatched values - **fixed** — Fix an issue where Marisa string indexes could fail to upload or load when the local temporary directory was missing - **fixed** — Fix an issue where stale streaming writes could retry indefinitely after their target collection or partition was dropped - **fixed** — Fix an issue where cluster-level load configuration could override user-specified collection replica settings without force override enabled - **fixed** — Fix an issue where analyzer runtime settings and YAML updates were not applied to the Rust analyzer layer - **fixed** — Fix an issue where StorageV2 text index builds could use incorrect paths for existing segment insert logs - **fixed** — Fix an issue where DumpMessages omitted transaction data messages and produced incomplete exports - **fixed** — Fix an issue where ARRAY containment expressions could return incorrect results for float literals - **fixed** — Fix an issue where filters on missing nested JSON values, failed JSON casts, or out-of-range array elements could return incorrect results instead of UNKNOWN - **fixed** — Fix an issue where streaming recovery could omit physical channels recorded in collection metadata and leave required WAL topics unavailable after startup ##### v2.6.20 Release date: July 14, 2026 | Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version | | -------------- | ------------------ | ------------------- | ---------------- | -------------- | | 2.6.20 | 2.6.16 | 2.6.17 | 2.6.22 | 2.6.20 | We are excited to announce the release of Milvus v2.6.20! This release improves query scheduling and batching, index loading, filtering performance, streaming rebalancing, and observability. It also resolves correctness and reliability issues across JSON filtering, streaming recovery, text indexing, analyzer configuration, and GPU_CAGRA operations. ###### Improvements - Added named C++ thread-pool activity metrics and Grafana monitoring ([#50299](https://github.com/milvus-io/milvus/pull/50299)) - Improved QueryCoord scheduling by decoupling task dispatch from distribution polling to allow independent scheduling intervals ([#50774](https://github.com/milvus-io/milvus/pull/50774), [#50777](https://github.com/milvus-io/milvus/pull/50777)) - Improved QueryNode query batching by increasing the default NQ grouping limits for larger merged query batches ([#50859](https://github.com/milvus-io/milvus/pull/50859), [#50898](https://github.com/milvus-io/milvus/pull/50898)) - Improved index-loading resilience by safely completing pending range reads after partial failures ([#50937](https://github.com/milvus-io/milvus/pull/50937)) - Optimized VARCHAR primary-key population when loading sealed segments ([#51063](https://github.com/milvus-io/milvus/pull/51063)) - Improved filter execution performance by skipping null-bitmap processing for all-valid results ([#51067](https://github.com/milvus-io/milvus/pull/51067)) - Improved channel balancing by enabling the channel-level score balancer by default and introducing a safer default threshold for channel-exclusive mode ([#51132](https://github.com/milvus-io/milvus/pull/51132)) - Improved streaming rebalancing to trigger immediately when the primary resource group configuration changed ([#51147](https://github.com/milvus-io/milvus/pull/51147)) - Upgraded Knowhere to v2.6.17 to prevent GPU_CAGRA operations from failing with bad_optional_access under the default ef configuration ([#51209](https://github.com/milvus-io/milvus/pull/51209)) ###### Bug fixes - Fixed incorrect JSON path filter results for missing, null, or type-mismatched values ([#50722](https://github.com/milvus-io/milvus/pull/50722), [#50723](https://github.com/milvus-io/milvus/pull/50723)) - Fixed an issue where Marisa string indexes could fail to upload or load when the local temporary directory was missing ([#50772](https://github.com/milvus-io/milvus/pull/50772)) - Fixed an issue where stale streaming writes could retry indefinitely after their target collection or partition was dropped ([#50849](https://github.com/milvus-io/milvus/pull/50849), [#50895](https://github.com/milvus-io/milvus/pull/50895)) - Fixed an issue where cluster-level load configuration could override user-specified collection replica settings without force override enabled ([#50860](https://github.com/milvus-io/milvus/pull/50860)) - Fixed an issue where analyzer runtime settings and YAML updates were not applied to the Rust analyzer layer ([#50998](https://github.com/milvus-io/milvus/pull/50998)) - Fixed an issue where StorageV2 text index builds could use incorrect paths for existing segment insert logs ([#51002](https://github.com/milvus-io/milvus/pull/51002)) - Fixed an issue where DumpMessages omitted transaction data messages and produced incomplete exports ([#51102](https://github.com/milvus-io/milvus/pull/51102)) - Fixed an issue where ARRAY containment expressions could return incorrect results for float literals ([#51130](https://github.com/milvus-io/milvus/pull/51130)) - Fixed an issue where filters on missing nested JSON values, failed JSON casts, or out-of-range array elements coul _[Truncated at 4000 characters — full notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.20]_ ### v2.6.19 — milvus-2.6.19 - Date: 2026-06-26 - Version: v2.6.19 - Original notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.19 - Permalink: https://whatsnew.fyi/product/milvus/releases/v2.6.19 - **added** — Add configurable concurrency for function runner text tokenization - **changed** — Improve mix compaction by building text indexes inline to avoid slow QueryNode fallback index creation - **changed** — Upgrade GPU Docker images to CUDA 12.9.1 for Ubuntu 22.04 builds and runtime - **added** — Add a configuration option for maximum array capacity - **changed** — Improve S3 PutObject compatibility with OpenSSL FIPS mode by forcing CRC32C checksums - **added** — Add RBAC role description support across clients, APIs, and role metadata - **changed** — Improve error handling by standardizing on merr with system and input error classification - **changed** — Optimize null predicate evaluation for sealed chunked fields - **changed** — Improve JSON field handling by enabling JSON shredding by default - **changed** — Reduce search result serialization overhead by adding an optional zero-copy path for passing search results - **fixed** — Fix an issue where RBAC grantee identifiers could collide due to truncated ID hashes - **fixed** — Fix an issue where Kafka and RMQ WAL recovery could fail to restore checkpoints with negative sentinel message IDs - **fixed** — Fix an issue where scalar-index-backed expression queries could return incorrect results due to cursor misalignment - **fixed** — Fix an issue where CPU-adapted GPU CAGRA indexes could still require GPU resources during loading - **fixed** — Fix an issue where ST_WITHIN queries on nullable GEOMETRY fields could crash standalone during concurrent schema evolution - **fixed** — Fix an issue where AlterCollection could reject requests due to unchanged collection descriptions - **fixed** — Fix an issue where describe_user could return empty ghost role names after repeated grant and revoke operations - **fixed** — Fix an issue where DataCoord garbage collection could incorrectly delete text stats files that already stored full paths - **fixed** — Fix an issue where invalid StructArray vector dimensions or element counts could be accepted - **fixed** — Fix an issue where group-by search could return duplicate or mismatched group values when results had tied scores ##### v2.6.19 Release date: July 1, 2026 | Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version | | -------------- | ------------------ | ------------------- | ---------------- | -------------- | | 2.6.19 | 2.6.16 | 2.6.17 | 2.6.22 | 2.6.19 | We are excited to announce the release of Milvus v2.6.19! This release improves text indexing, JSON handling, GPU runtime compatibility, RBAC metadata, and search result serialization. It also fixes correctness and stability issues across WAL recovery, scalar expressions, nullable fields, ArrayOfVector, group-by search, and DataCoord GC. ###### Improvements - Added configurable concurrency for function runner text tokenization ([#50115](https://github.com/milvus-io/milvus/pull/50115)) - Improved mix compaction by building text indexes inline to avoid slow QueryNode fallback index creation ([#50160](https://github.com/milvus-io/milvus/pull/50160)) - Upgraded GPU Docker images to CUDA 12.9.1 for Ubuntu 22.04 builds and runtime ([#50250](https://github.com/milvus-io/milvus/pull/50250)) - Added a configuration option for maximum array capacity ([#50265](https://github.com/milvus-io/milvus/pull/50265)) - Improved S3 PutObject compatibility with OpenSSL FIPS mode by forcing CRC32C checksums ([#50360](https://github.com/milvus-io/milvus/pull/50360), [#50477](https://github.com/milvus-io/milvus/pull/50477)) - Added RBAC role description support across clients, APIs, and role metadata ([#50526](https://github.com/milvus-io/milvus/pull/50526), [#50535](https://github.com/milvus-io/milvus/pull/50535)) - Improved error handling by standardizing on merr with system and input error classification across Milvus ([#50545](https://github.com/milvus-io/milvus/pull/50545)) - Optimized null predicate evaluation for sealed chunked fields ([#50586](https://github.com/milvus-io/milvus/pull/50586)) - Improved JSON field handling by enabling JSON shredding by default ([#50706](https://github.com/milvus-io/milvus/pull/50706)) - Reduced search result serialization overhead by adding an optional zero-copy path for passing search results ([#50713](https://github.com/milvus-io/milvus/pull/50713), [#50756](https://github.com/milvus-io/milvus/pull/50756)) ###### Bug fixes - Fixed an issue where RBAC grantee identifiers could collide due to truncated ID hashes ([#50236](https://github.com/milvus-io/milvus/pull/50236)) - Fixed an issue where Kafka and RMQ WAL recovery could fail to restore checkpoints with negative sentinel message IDs ([#50242](https://github.com/milvus-io/milvus/pull/50242)) - Fixed an issue where scalar-index-backed expression queries could return incorrect results due to cursor misalignment ([#50266](https://github.com/milvus-io/milvus/pull/50266)) - Fixed an issue where CPU-adapted GPU CAGRA indexes could still require GPU resources during loading ([#50385](https://github.com/milvus-io/milvus/pull/50385)) - Fixed an issue where ST_WITHIN queries on nullable GEOMETRY fields could crash standalone during concurrent schema evolution ([#50437](https://github.com/milvus-io/milvus/pull/50437)) - Fixed an issue where AlterCollection could reject requests due to unchanged collection descriptions ([#50502](https://github.com/milvus-io/milvus/pull/50502), [#50539](https://github.com/milvus-io/milvus/pull/50539)) - Fixed an issue where describe_user could return empty ghost role names after repeated grant and revoke operations ([#50544](https://github.com/milvus-io/milvus/pull/50544)) - Fixed an issue where DataCoord garbage collection could incorrectly delete text stats files that already stored full paths ([#50599](https://github.com/milvus-io/milvus/pull/50599), [#50629](https://github.com/milvus-io/milvus/pull/50629)) - Fixed an issue where invalid StructArray vector dimensions or element counts could be accepted ([#50601](https://github.com/milvus-io/milvus/pull/50601)) - Fix _[Truncated at 4000 characters — full notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.19]_ ### v2.6.18 — milvus-2.6.18 - Date: 2026-06-05 - Version: v2.6.18 - Original notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.18 - Permalink: https://whatsnew.fyi/product/milvus/releases/v2.6.18 - **added** — Vector fields can now be declared nullable to insert entities with missing or not yet generated embeddings without placeholder values - **added** — Element-level search on Struct Array fields to retrieve the specific element that best matches a query instead of scoring the entire row - **added** — Support for importing Arrow FixedSizeList data from Parquet into non-nullable array and dense vector fields - **added** — HTTP/2 support for the proxy REST server, including h2c and ALPN-based TLS listeners - **changed** — Improved QueryNode read-task scheduling and recovery behavior under heavy load with deadline-aware admission, cleanup, grouping, and metrics - **changed** — Extended Arrow IO thread pool configuration to DataNode to improve compaction and import throughput - **changed** — Limited QueryNode delegator post-load concurrency to reduce CPU spikes during segment loading - **changed** — Optimized QueryCoord collection filtering in ChannelDistManager and reduced temporary allocations in distribution lookups - **changed** — Upgraded the Pulsar Go client to v0.19.0 and replaced pulsarctl admin usage with pulsaradmin - **changed** — Optimized ReplicaManager locking to reduce cross-collection contention in QueryCoord - **changed** — Improved REST timeout handling to safely discard late handler writes after request timeouts - **changed** — Optimized garbage collection for dropped segment index files and metadata - **fixed** — Fixed an issue where using unsupported field types as clustering keys could cause node panics - **fixed** — Fixed an issue where the stored_index_files_size metric included inactive index files - **fixed** — Fixed an issue where preempted writers could skip segment IDs by upgrading Woodpecker to v0.1.13-hotfix - **fixed** — Fixed an issue where requery requests were not pinned to the preferred replica - **fixed** — Fixed an issue where bulk imports could fail when file readers encountered a premature EOF - **fixed** — Fixed an issue where partial updates could drop dynamic field data after schema evolution - **fixed** — Fixed an issue where sealed segments could load incorrectly when non-nullable vector field data was missing - **fixed** — Fixed an issue where schema reopen could leave stale indexing references and cause indexing failures or crashes ##### v2.6.18 Release date: June 5, 2026 | Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version | | -------------- | ------------------ | ------------------- | ---------------- | -------------- | | 2.6.18 | 2.6.15 | 2.6.17 | 2.6.20 | 2.6.18 | We are excited to announce the release of Milvus v2.6.18! This release adds element-level search on Struct fields and nullable vector support, improves QueryNode and QueryCoord scheduling and stability under heavy load, and brings HTTP/2 to the Proxy REST server. It also fixes numerous correctness and stability issues across import, schema evolution, indexing, compaction, and metadata handling. ###### Features ###### Nullable vector Vector fields can now be declared nullable, so you can insert entities whose embedding is missing or not yet generated without filling in a placeholder. NULL vectors take no extra storage and are skipped automatically during search. For more information, refer to [Nullable Fields](nullable-and-default.md). ###### Element-level search on Struct fields You can now run vector search on Struct Array fields at the granularity of individual elements instead of the whole row, with each result reporting the matched element's offset within the array. This lets a query retrieve the specific element that best matches rather than scoring the row as a whole. For more information, refer to [Vector search in a StructArray field](array-of-structs.md#Vector-search-in-a-StructArray-field). ###### Improvements - Added support for importing Arrow FixedSizeList data from Parquet into non-nullable array and dense vector fields ([#49870](https://github.com/milvus-io/milvus/pull/49870)) - Improved QueryNode read-task scheduling and recovery behavior under heavy load with deadline-aware admission, cleanup, grouping, and metrics ([#49900](https://github.com/milvus-io/milvus/pull/49900), [#49926](https://github.com/milvus-io/milvus/pull/49926)) - Added HTTP/2 support for the proxy REST server, including h2c and ALPN-based TLS listeners ([#49964](https://github.com/milvus-io/milvus/pull/49964)) - Extended Arrow IO thread pool configuration to DataNode to improve compaction and import throughput ([#50100](https://github.com/milvus-io/milvus/pull/50100)) - Limited QueryNode delegator post-load concurrency to reduce CPU spikes during segment loading ([#49769](https://github.com/milvus-io/milvus/pull/49769)) - Optimized QueryCoord collection filtering in ChannelDistManager and reduced temporary allocations in distribution lookups ([#49927](https://github.com/milvus-io/milvus/pull/49927)) - Upgraded the Pulsar Go client to v0.19.0 and replaced pulsarctl admin usage with pulsaradmin ([#49948](https://github.com/milvus-io/milvus/pull/49948)) - Optimized ReplicaManager locking to reduce cross-collection contention in QueryCoord ([#49950](https://github.com/milvus-io/milvus/pull/49950), [#49956](https://github.com/milvus-io/milvus/pull/49956)) - Improved REST timeout handling to safely discard late handler writes after request timeouts ([#50006](https://github.com/milvus-io/milvus/pull/50006)) - Optimized garbage collection for dropped segment index files and metadata ([#50172](https://github.com/milvus-io/milvus/pull/50172)) ###### Bug fixes - Fixed an issue where using unsupported field types as clustering keys could cause node panics ([#48263](https://github.com/milvus-io/milvus/pull/48263)) - Fixed an issue where the stored_index_files_size metric included inactive index files ([#49380](https://github.com/milvus-io/milvus/pull/49380)) - Fixed an issue where preempted writers could skip segment IDs by upgrading Woodpecker to v0.1.13-hotfix ([#49670](https://github.com/milvus-io/milvus/pull/49670)) - Fixed an issue where requery requests were not pinned to the preferred replica ([#49830](https://github.com/milvus-io/milvus/pull/49830)) - Fixed an issue w _[Truncated at 4000 characters — full notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.18]_ ### client/v2.6.5 - Date: 2026-05-26 - Version: client/v2.6.5 - Original notes: https://github.com/milvus-io/milvus/releases/tag/client/v2.6.5 - Permalink: https://whatsnew.fyi/product/milvus/releases/client-v2.6.5 - **added** — Add Go SDK support for nullable vector columns across dense, binary, sparse, and int8 vector types - **added** — Add nullable column constructors for vector fields: NewNullableColumnFloatVector, NewNullableColumnBinaryVector, NewNullableColumnFloat16Vector, NewNullableColumnBFloat16Vector, NewNullableColumnInt8Vector, and NewNullableColumnSparseFloatVector - **added** — Add nullable vector response decoding in FieldDataColumn for FloatVector, BinaryVector, Float16Vector, BFloat16Vector, SparseFloatVector, and Int8Vector - **added** — Add upsert helpers WithArrayAppend(fieldName), WithArrayRemove(fieldName), and WithFieldPartialOp(fieldName, op) for Array field partial updates - **changed** — Update Go SDK version constant to 2.6.5 and milvus-proto/go-api/v2 to v2.6.17 - **fixed** — Validate that vector fields added to existing collections are nullable before sending AddCollectionField requests - **fixed** — Handle empty value sets in sparse vector column serialization by emitting dimension 0 to prevent panics in all-null nullable sparse vector columns - **added** — Add Column.ValidCount() support so nullable columns can report the number of non-null rows separately from total row count ###### Highlights - Adds Go SDK support for nullable vector columns across dense, binary, sparse, and int8 vector types. - Adds Array field partial update helpers for `ARRAY_APPEND` and `ARRAY_REMOVE` in upsert requests. - Validates that vector fields added to existing collections are nullable before sending `AddCollectionField` requests. - Bumps the Go SDK version constant to `2.6.5` and updates `milvus-proto/go-api/v2` to `v2.6.17`. ###### New Features - **Nullable vector columns**: Added nullable column constructors for vector fields: `NewNullableColumnFloatVector`, `NewNullableColumnBinaryVector`, `NewNullableColumnFloat16Vector`, `NewNullableColumnBFloat16Vector`, `NewNullableColumnInt8Vector`, and `NewNullableColumnSparseFloatVector`. These constructors accept compact non-null vector values plus `validData`, and validate that the values length matches the valid row count. (#49848) - **Nullable vector response decoding**: `FieldDataColumn` now decodes nullable vector field data using `ValidData` for `FloatVector`, `BinaryVector`, `Float16Vector`, `BFloat16Vector`, `SparseFloatVector`, and `Int8Vector`. Null rows are preserved in the returned column while compact wire-format vector payloads are expanded back to row-aligned columns. (#49848) - **Array partial update operations**: Added upsert helpers `WithArrayAppend(fieldName)`, `WithArrayRemove(fieldName)`, and `WithFieldPartialOp(fieldName, op)` for Array field partial updates. Non-`REPLACE` field ops are serialized into `UpsertRequest.FieldOps` and automatically enable `partial_update` for both column-based and row-based upserts. (#49328) ###### Bug Fixes - **AddCollectionField vector validation**: `AddCollectionField` now validates options before sending the RPC and rejects vector fields added to existing collections unless the field is marked `nullable=true`, preventing invalid schema changes from reaching the server. (#49848) - **All-null sparse vector handling**: Sparse vector column serialization now handles empty value sets by emitting dimension `0`, allowing all-null nullable sparse vector columns to round-trip without panics or invalid dimension calculations. (#49848) - **Nullable column row counts**: Added `Column.ValidCount()` support so nullable columns can report the number of non-null rows separately from total row count. Struct-array columns return their total length. (#49848) ###### Contributors - @marcelo-cjl - @weiliu1031 ### v2.6.17 — milvus-2.6.17 - Date: 2026-05-22 - Version: v2.6.17 - Original notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.17 - Permalink: https://whatsnew.fyi/product/milvus/releases/v2.6.17 - **added** — Add ARRAY_APPEND and ARRAY_REMOVE partial update operators for Array fields, exposed through both gRPC and REST upsert APIs - **changed** — Improve load/search isolation by using separate C++ executor pools and converting SegmentLoad and ReopenSegment to async futures with proper context cancellation - **fixed** — Fix an issue where filter expression templates could not be used with string field predicates - **fixed** — Fix an issue where stale segment distribution updates after delegator close could corrupt query routing - **fixed** — Fix an issue where releasing a collection could leave stale replica state due to premature metadata cleanup in QueryCoord - **fixed** — Fix an issue where transient shard errors caused replicas to be blacklisted, leading to unnecessary query failures and degraded availability - **fixed** — Fix missing GetReplicateConfiguration RPC forwarding in the proxy service - **fixed** — Fix a potential use-after-free crash when closing the packed writer multiple times or during compaction cleanup paths ##### v2.6.17 Release date: May 22, 2026 | Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version | | -------------- | ------------------ | ------------------- | ---------------- | -------------- | | 2.6.17 | 2.6.14 | 2.6.14 | 2.6.20 | 2.6.4 | We are excited to announce the release of Milvus v2.6.17! This release introduces Array field partial update operators, improves load/search isolation, and resolves several stability and query routing issues. ###### Improvements - Added [`ARRAY_APPEND` and `ARRAY_REMOVE` partial update operators](upsert-entities.md#Upsert-ARRAY-fields-with-partial-update-operators) for Array fields, exposed through both gRPC and REST upsert APIs ([#49328](https://github.com/milvus-io/milvus/pull/49328), [#49724](https://github.com/milvus-io/milvus/pull/49724)) - Improved load/search isolation by using separate C++ executor pools and converting SegmentLoad and ReopenSegment to async futures with proper context cancellation ([#49764](https://github.com/milvus-io/milvus/pull/49764)) ###### Bug fixes - Fixed an issue where filter expression templates could not be used with string field predicates ([#49703](https://github.com/milvus-io/milvus/pull/49703)) - Fixed an issue where stale segment distribution updates after delegator close could corrupt query routing ([#49727](https://github.com/milvus-io/milvus/pull/49727)) - Fixed an issue where releasing a collection could leave stale replica state due to premature metadata cleanup in QueryCoord ([#49730](https://github.com/milvus-io/milvus/pull/49730)) - Fixed an issue where transient shard errors caused replicas to be blacklisted, leading to unnecessary query failures and degraded availability ([#49740](https://github.com/milvus-io/milvus/pull/49740), [#49776](https://github.com/milvus-io/milvus/pull/49776)) - Fixed missing GetReplicateConfiguration RPC forwarding in the proxy service ([#49810](https://github.com/milvus-io/milvus/pull/49810)) - Fixed a potential use-after-free crash when closing the packed writer multiple times or during compaction cleanup paths ([#49816](https://github.com/milvus-io/milvus/pull/49816)) ### v2.6.16 — milvus-2.6.16 - Date: 2026-05-14 - Version: v2.6.16 - Original notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.16 - Permalink: https://whatsnew.fyi/product/milvus/releases/v2.6.16 - **changed** — Increased the default L0 compaction deltalog max count from 30 to 1000 to reduce compaction backlog under high-delete workloads - **added** — Introduced streaming node resource group isolation, allowing replicas to be assigned strictly within their configured resource groups - **added** — Added a new RESTful config inspection endpoint - **changed** — Rewrote sync manager's key lock dispatcher with per-key FIFO queues and semaphore backpressure for non-blocking submission and graceful shutdown - **added** — Added fast-fail retry capping and delegator stall detection so proxy queries failover to a healthy QueryNode immediately instead of burning the full backoff budget on a dead node - **changed** — Allowed simultaneous pchannel increase and cluster/topology changes in replication config validation - **changed** — Reduced proxy tail latency and memory pressure during traffic storms by fast-failing Enqueue before TSO/ID allocation and using a non-blocking edge-triggered task notifier - **added** — Added a $partial_update field to the proxy access log for Upsert requests, exposing both explicit and implicitly promoted partial-update flags - **changed** — Accelerated TermExpr IN evaluation with a SIMD (AVX2/AVX512) batch filter, significantly improving query performance for IN predicates - **changed** — Bumped Go SDK to v2.6.4 with full struct-array support (vector sub-fields, EmbeddingList search, schema validation), gRPC authority configuration, and preserved default gRPC dial options when custom DialOptions are provided - **security** — Upgraded lz4_flex to 0.11.6 in the Tantivy binding to remediate CVE-2026-32829 - **changed** — Bypassed Knowhere search-pool scheduling for vector iterators to reduce per-Next overhead in iterator-heavy group-by search paths - **added** — Exposed Arrow IO thread pool capacity as a refreshable paramtable knob to relieve HIGH-pool stalls under heavy storage v2 read load - **changed** — Parallelized text match index loading on QueryNode to speed up segment load for collections with text indexes - **changed** — Bumped milvus-storage to fix non-contiguous I/O issues when reading row groups - **changed** — Sealed growing segments under L0 compaction pressure to avoid prolonged write blocking - **fixed** — Fixed silent delete loss caused by L0 compaction missing target segments due to inherited incorrect positions from imported data, and corrected DmlPosition aggregation in mix/clustering compaction - **fixed** — Fixed an issue where collections with inverted indexes failed to load due to incorrect handling of sliced index files - **fixed** — Fixed an issue where queries on nullable array fields with bitmap indexes could return incorrect results due to missing null value persistence - **fixed** — Fixed an issue where queries using NOT over templated expressions (e.g. not (field in {vals})) returned wrong results or triggered QueryNode assertion failures ##### v2.6.16 Release date: May 14, 2026 | Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version | | -------------- | ------------------ | ------------------- | ---------------- | -------------- | | 2.6.16 | 2.6.13 | 2.6.14 | 2.6.19 | 2.6.4 | We are excited to announce the release of Milvus v2.6.16! This release delivers major stability and performance improvements across L0 compaction, streaming node resource isolation, and proxy query failover, along with critical fixes for delete consistency, replica scaling, and rolling upgrade scenarios. ###### Improvements - Increased the default L0 compaction deltalog max count from 30 to 1000 to reduce compaction backlog under high-delete workloads ([#47214](https://github.com/milvus-io/milvus/pull/47214), [#49122](https://github.com/milvus-io/milvus/pull/49122)) - Introduced streaming node resource group isolation, allowing replicas to be assigned strictly within their configured resource groups, plus a new RESTful config inspection endpoint ([#48632](https://github.com/milvus-io/milvus/pull/48632)) - Rewrote sync manager's key lock dispatcher with per-key FIFO queues and semaphore backpressure for non-blocking submission and graceful shutdown ([#49101](https://github.com/milvus-io/milvus/pull/49101)) - Added fast-fail retry capping and delegator stall detection so proxy queries failover to a healthy QueryNode immediately instead of burning the full backoff budget on a dead node ([#49103](https://github.com/milvus-io/milvus/pull/49103)) - Allowed simultaneous pchannel increase and cluster/topology changes in replication config validation ([#49214](https://github.com/milvus-io/milvus/pull/49214)) - Reduced proxy tail latency and memory pressure during traffic storms by fast-failing Enqueue before TSO/ID allocation and using a non-blocking edge-triggered task notifier ([#49259](https://github.com/milvus-io/milvus/pull/49259)) - Added a `$partial_update` field to the proxy access log for Upsert requests, exposing both explicit and implicitly promoted partial-update flags ([#49361](https://github.com/milvus-io/milvus/pull/49361)) - Accelerated `TermExpr IN` evaluation with a SIMD (AVX2/AVX512) batch filter, significantly improving query performance for `IN` predicates ([#49427](https://github.com/milvus-io/milvus/pull/49427)) - Bumped Go SDK to v2.6.4 with full struct-array support (vector sub-fields, EmbeddingList search, schema validation), gRPC authority configuration, and preserved default gRPC dial options when custom DialOptions are provided ([#49443](https://github.com/milvus-io/milvus/pull/49443)) - Upgraded lz4_flex to 0.11.6 in the Tantivy binding to remediate CVE-2026-32829 ([#49507](https://github.com/milvus-io/milvus/pull/49507)) - Bypassed Knowhere search-pool scheduling for vector iterators to reduce per-Next overhead in iterator-heavy group-by search paths ([#49547](https://github.com/milvus-io/milvus/pull/49547)) - Exposed Arrow IO thread pool capacity as a refreshable paramtable knob to relieve HIGH-pool stalls under heavy storage v2 read load ([#49554](https://github.com/milvus-io/milvus/pull/49554), [#49561](https://github.com/milvus-io/milvus/pull/49561)) - Parallelized text match index loading on QueryNode to speed up segment load for collections with text indexes ([#49608](https://github.com/milvus-io/milvus/pull/49608)) - Bumped milvus-storage to fix non-contiguous I/O issues when reading row groups ([#49613](https://github.com/milvus-io/milvus/pull/49613)) - Sealed growing segments under L0 compaction pressure to avoid prolonged write blocking ([#49688](https://github.com/milvus-io/milvus/pull/49688)) ###### Bug fixes - Fixed silent delete loss caused by L0 compaction missing target segments due to inherited incorrect positions from imported data, and corrected DmlPosition aggregation in mix/clustering compaction ([#47154](https://github _[Truncated at 4000 characters — full notes: https://github.com/milvus-io/milvus/releases/tag/v2.6.16]_