milvus-2.6.16
Release note is coming...
milvus-3.0.0-beta
Release note is coming soon...
client/v2.6.4
- Completes Go SDK (
client/v2) struct-array support, especially vector sub-fields and EmbeddingList/MAX_SIM search. - Fixes custom gRPC
DialOptionsso they no longer drop the SDK's default keepalive, backoff, and max receive message-size settings.
-
Struct-array vector sub-field columns: Added vector-array column types for struct-array vector sub-fields:
ColumnFloatVectorArray,ColumnFloat16VectorArray,ColumnBFloat16VectorArray,ColumnBinaryVectorArray, andColumnInt8VectorArray. These supportArrayOfVectorsub-fields inside struct arrays. (#49164) -
EmbeddingList search vector types: Added
entity.FloatVectorArray,entity.Float16VectorArray,entity.BFloat16VectorArray,entity.BinaryVectorArray, andentity.Int8VectorArray, dispatching them to the matchingPlaceholderType_EmbList*values. This enables MAX_SIM / EmbeddingList search against struct-array vector sub-fields such asclips[clip_emb]. (#49164) -
Struct-array insert/upsert helper: Added
WithStructArrayColumn(name, structSchema, rows)to column-based insert/upsert options. The helper accepts[]map[string]anyrow data and infers scalar/vector sub-column types from the provided struct schema. (#49164) -
gRPC authority configuration: Added
ClientConfig.WithGrpcAuthority(authority)for proxy-based routing through the gRPC:authorityheader. (#49186)
-
Default gRPC dial options are preserved:
Client.dialOptions()now always appliesDefaultGrpcOptsbefore user-providedDialOptions, retaining SDK defaults for keepalive, backoff, and max receive message size while still allowing caller overrides. (#49186, issue #48828) -
Struct-array schema validation: Added
Schema.Validate()andStructSchema.Validate()and wired validation intoCreateCollection. Invalid struct-array sub-fields are rejected before the RPC, including nested array/struct fields, sparse vector sub-fields, duplicate sub-field names, and top-level-only flags such as primary key, partition key, clustering key, nullable, default value, dynamic, and autoID. (#49164, issue #49163) -
Struct-array schema round trip:
Schema.ReadProto()now restoresStructArrayFields, andProtoMessage()preservesmax_capacityby propagating the parent setting to sub-fields when needed.Array/ArrayOfVectorwrappers from the server are unwrapped back to user-facing scalar/vector sub-field types. (#49164) -
Struct-array write correctness:
columnStructArraynow enforces equal lengths across sub-fields, appends a row atomically with rollback on partial sub-field failure, and serializes top-level struct-array field data asDataType_ArrayOfStruct. (#49164) -
Vector-array response decoding: Query/search result decoding now handles
DataType_ArrayOfVector, validates nil vector rows, validates payload lengths against dimension/width, rejects invalid binary vector dimensions, and preserves vector-array sub-field data in Go column types. (#49164) -
Builder error handling:
WithStructArrayColumnstores construction errors and returns them fromInsertRequest/UpsertRequestinstead of panicking during chained builder calls. (#49164)
- @zhuwenxing
- @liliu-z
- @milanchovatiya-boop
milvus-2.6.15
Release note is coming soon...
milvus-2.6.14
Release date: April 7, 2026
| Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version |
|---|---|---|---|---|
| 2.6.14 | 2.6.11 | 2.6.13 | 2.6.17 | 2.6.1 |
We are excited to announce the release of Milvus v2.6.14! This release focuses on stability and performance, delivering faster MixCoord recovery, optimized search and query filter performance, and over 20 bug fixes addressing crashes, OOM issues, and data correctness problems.
- Reduced MixCoord recovery time by parallelizing startup phases including sub-meta loading, index reload, and batch etcd operations (47849)
- Replaced proto.Clone with shallow copy for query request fanout to reduce memory allocations and improve query performance (48083)
- Upgraded Go to 1.25.8 to address CVE-2025-68121 (CRITICAL), CVE-2026-27142 (HIGH), and CVE-2026-25679 (HIGH) (48287)
- Switched import retry strategy from allowlist to denylist, improving resilience against transient errors during data import (48319)
- Made thread pool max threads size configurable via
common.threadCoreCoefficient.maxThreadsSizewith dynamic update support (48385) - Refactored import workflow to align with DDL/DCL pattern by routing through DataCoord RPC instead of cross-service broadcast (48438)
- Added force promote support for primary-secondary disaster recovery failover via
UpdateReplicateConfigurationAPI (48452) - Added data salvage capability for force failover to recover unpersisted data from failed streaming nodes (48527)
- Improved query filter performance with type-aware bidirectional rewriting between
inand==expressions (48545) - Optimized bool IN/NOT IN expressions with proper nullable field handling (48621)
- Aligned error mapping across all cloud storage providers (Azure, GCP, MinIO) for consistent retry and error handling behavior (48693)
- Optimized unfiltered search on sealed segments with MVCC fast path, hardware popcnt, and redundant bitset operation elimination (48699)
- Fixed an issue where the task scheduler could only assign one task per node per scheduling cycle, potentially slowing down index building and compaction (48262)
- Fixed potential server crash during JSON index cleanup caused by a race condition between background threads and file deletion (48369, 48409)
- Fixed server panic caused by concurrent map access in HTTP proxy when processing requests with timeout middleware enabled (48394)
- Fixed OOM on QueryNodes when loading large segments with variable-size fields (ARRAY, JSON, large VARCHAR) by switching to memory-aware batch splitting (48404, 48435)
- Fixed incorrect version string reported by Milvus when both root and Go submodule git tags exist on the same commit (48421)
- Fixed an issue where transient storage errors during data flush and binlog import were not retried, causing unnecessary operation failures (48436)
- Fixed a crash when using unsupported field types (JSON, Bool, Array, etc.) as clustering keys via the AddCollectionField API (48437)
- Fixed potential crashes during index building when encountering IO errors in the Tantivy text index engine (48454)
- Fixed an issue where QueryNodes failed to load indexes during rolling upgrades due to target vector index version exceeding the node's supported maximum (48478)
- Fixed a potential crash caused by dangling pointers in index loading during async warmup or cache re-population (48496)
- Fixed streaming node listing to correctly include frozen nodes in REST API while excluding them from scheduling decisions (48514)
- Fixed an issue where data import failed or produced incorrect results when collections contained function output fields (48516)
- Fixed loading failure for segments with default-valued GEOMETRY fields (48556, 48575)
- Fixed an issue where all segments appeared unindexed after dropping and recreating indexes, causing stale pre-compaction segments to be loaded (48559)
- Fixed streaming balancer hanging indefinitely due to stale session entries persisting after etcd watch reconnection (48568)
- Fixed compaction unexpectedly producing v2 format segments when compaction parameters were missing from the request (48571, 48596)
- Fixed GROUP BY queries returning more results than the specified
group_sizewhen used with nullable fields (48585) - Fixed an issue where range queries on INVERTED indexes returned incorrect results when values involved negative zero (-0.0) (48625)
- Fixed potential heap corruption caused by dual jemalloc instances from Arrow's built-in allocator conflicting with the system allocator (48657)
- Fixed an issue where LoadBalance could produce misleading errors when streaming node IDs collided with the specified query node IDs (48664, 48679)
- Fixed an issue where search could still fail due to unavailable segments when
partialResultRequiredDataRatiowas set to 0.0 (48702)
client/v2.6.3
-
TruncateCollection API: Added
TruncateCollectionmethod to the Go SDK client, allowing users to quickly remove all data from a collection without dropping and recreating it. UseNewTruncateCollectionOption(collectionName)to invoke. (#48361, #47308) -
GetReplicateConfiguration API: Added
GetReplicateConfigurationAPI for viewing replication topology (with tokens redacted) andforce_promotefield toUpdateReplicateConfigurationRequest. Supports strong consistency viaWithFreshReadoption. (#47543) -
Nullable Pointer Fields in Row-Based API: Go pointer struct fields (
*string,*int32, etc.) can now represent nullable columns in the row-based data path. Anilpointer maps to a NULL value in Milvus; a non-nil pointer dereferences to the actual value. This applies toParseSchema,AnyToColumns,SetField,fillData, andfillPKEntry. (#48464) -
Per-Cluster TLS Config for CDC: Added
BuildTLSConfighelper andTLSConfigfield toClientConfigfor mTLS support. CDCNewMilvusClientcan now read per-cluster TLS config by target cluster ID viaGetClusterTLSConfig(clusterID). (#48023)
- Timestamptz field type alignment: Fixed
FieldTypeTimestamptzvalue from 15 to 26 to match the server. Changed Timestamptz data serialization fromint64(TimestamptzData) to ISO 8601 strings (RFC3339Nano format viaStringData) as expected by the server. AddedNewColumnTimestamptz(accepts[]time.Time),ColumnTimestampTzIsoString(direct ISO string input), and their nullable counterparts. (#47328)
-
OpenTelemetry upgrade to v1.40.0: Bumped
go.opentelemetry.io/oteland related packages from v1.34.0 to v1.40.0 to fix CWE-426 (Untrusted Search Path) vulnerability. Also bumps transitive dependencies includingauto/sdkv1.1.0→v1.2.1,go-logrv1.4.2→v1.4.3, andgolang.org/x/sysv0.38.0→v0.40.0. (#48059) -
Go version upgrade to 1.24.12: Upgraded Go from 1.24.11 to 1.24.12 for CVE fixes. (#47562)
-
Proto version bumps: Updated
milvus-proto/go-api/v2through v2.6.8 → v2.6.9 → v2.6.10 → v2.6.11 → v2.6.12 → v2.6.13 across this release cycle.
| Dependency | Previous | Current |
|---|---|---|
milvus-proto/go-api/v2 |
v2.6.7 | v2.6.13 |
go.opentelemetry.io/otel |
v1.34.0 | v1.40.0 |
go-logr |
v1.4.2 | v1.4.3 |
golang.org/x/sys |
v0.38.0 | v0.40.0 |
| Go | 1.24.11 | 1.24.12 |
milvus-2.6.13
Release date: March 23, 2026
| Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version |
|---|---|---|---|---|
| 2.6.13 | 2.6.10 | 2.6.11 | 2.6.16 | 2.6.1 |
Gemini embedding model support (#48223)
Added Google Gemini as a built-in text embedding function. Users can now use Gemini embedding models directly in Milvus by configuring a Gemini API key, including the recently released Gemini Embedding 2.
For detailed usage, refer to Google Gemini.
- Unified KV path/key conventions across etcd, tikv, and catalog layers with consistent path joining (#48133)
- Added query metrics for JSON-related filter expressions to improve observability of JSON field query performance (#48147)
- Reduced transient memory allocations in BM25Stats deserialization by eliminating temporary slices (#48178)
- Added TruncateCollection method to the Go SDK client for clearing all data in a collection without dropping it (#48361)
- Fixed an issue where search/query requests with strong consistency timed out during compaction due to tsafe advancement being blocked (#47987)
- Fixed an issue where partial upsert with dynamic fields failed with
the length of valid_data of field($meta) is wrongwhen the batch contained both existing and new rows (#48085) - Fixed TLS connection failures during internal proxy-to-proxy request forwarding (#48226)
- Fixed query failures when using IN combined with != filter expressions that form tautologies (#48261)
- Fixed high system load caused by mass concurrent client disconnections during HTTP request handling (#48270)
- Fixed an issue where queries could become unavailable during replica scale-up/down due to non-deterministic node-to-replica assignment (#48277)
- Fixed HTTP proxy crashes caused by concurrent write race condition in timeout middleware (#48296, #48317, #48356)
- Fixed potential query node crash caused by assertion failure in delete record snapshot handling (#48302)
- Fixed storage operation failures when using AK/SK authentication on Aliyun OSS (#48311)
- Fixed degraded search performance caused by permanent parameter cache failure leading to goroutine contention on proxy hot paths (#48313, #48326)
- Fixed QueryCoord deadlock during upgrades when hundreds of channels needed rebalancing by splitting the executor into separate channel and non-channel task pools (#48351)
- Fixed an issue where search requests could timeout for 14+ minutes after WAL ownership changes due to unbounded message replay during scanner catchup (#48391)
milvus-2.6.12
Release note is coming soon...
milvus-2.6.11
Release date: February 12, 2026
| Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version |
|---|---|---|---|---|
| 2.6.11 | 2.6.9 | 2.6.9 | 2.6.13 | 2.6.1 |
We are pleased to announce the release of Milvus 2.6.11! This update continues to enhance query performance and system stability with improvements to filtering execution, segment loading, and Storage V2 I/O pipelining. It also refines geo indexing, reduces memory usage in default-value chunks, and improves developer and build tooling through dependency and test-suite cleanups. This release further fixes several correctness issues across control-channel handling, index building, nullable-expression semantics, and WAL recovery workflows. We recommend all users on the 2.6 branch upgrade to this version for improved reliability and performance.
- Added a truncate API to remove collection data more efficiently (#47308)
- Used
PreparedGeometryto improve geo index refinement performance (#47389) - Switched the OpenSSL dependency to shared linking (#47664)
- Differentiated load priorities by scenario to improve scheduling behavior (#47594)
- Upgraded Go to 1.24.12 and updated
gpgvto address CVEs (#47562) - Reduced memory usage by enabling multi-cell
DefaultValueChunklayout (#47166) - load-diff based segment loading patches to improve load efficiency (#47545)
- Removed redundant bitset count operations during filter execution to reduce CPU overhead (#47546)
- Added semantic highlighting support for dynamic fields (#47464)
- Reduced unnecessary
PinWrappercopies insearchPksWithto improve query performance (#47531) - Normalized constant-folded boolean expressions to
AlwaysTrueExpr/AlwaysFalseExprduring rewriting for simpler plans (#47493) - Added RESTful
search_by_pksupport (#47318) - Optimized “latest delete snapshot” handling to reduce overhead (#47409)
- Added support for user-specified warmup settings (#47343)
- Added
LoadWithStrategyAsyncto enable true I/O pipelining in Storage V2 (#47427) - Optimized MixCoord's CPU and memory usage by avoiding redundant calculations in the balance checker (#47190)
- Added sparse filtering support in search (#47447)
- Reduced memory allocations and copies during data loading (#47088)
- Fixed an issue where collection metadata could contain an invalid database name (#47721)
- Ensured exclusive control-channel messages acquire a global lock in the lock interceptor (#47678)
- Fixed channel exclusive mode state loss and vchannel list handling issues (#47702)
- Fixed index building to use the correct global offset for
null_offset_inBuildIndexFromFieldData(#47708) - Improved v2.5/v2.6 compatibility handling in
SyncTargetVersion(QueryNode) (#47693) - Handled
broadcastToAllmessages on the control channel in recovery storage (#47640) - Added
warmupKeyto theCheckParamsfilter to makeCreateIndexidempotent (#47607) - Corrected the default
mmapvalue in code (#47490) - Populated
LevelZeroSegmentIDsinGetDataVChanPositions(#47597) - Corrected null handling on
NullExpr,ExistsExpr, and logical operators (#47519) - Removed
segment_loaderpre-reserve logic for warmup fields/indexes to avoid incorrect reservations (#47463) - Updated
log_*macros to use{}placeholders to avoid treating error messages as format strings (#47485) - Fixed bloom filter memory leak when a worker node crashes (#47451)
- Used actual data timestamps for imported segment positions (#47370)
- Rebuilt WAL messages on each append retry to avoid panics (#47480)
- Filled in the log and memory size fields in
TextIndexStatsmetadata (#47476) - Reduced the empty timetick filtering interval to improve timetick handling (#47471)
milvus-2.5.27
Release note is coming...