milvus-io/milvus
 Watch   
 Star   
 Fork   
6 days ago
milvus

milvus-2.6.16

Release note is coming...

10 days ago
milvus

milvus-3.0.0-beta

Release note is coming soon...

10 days ago
milvus

client/v2.6.4

Highlights

  • Completes Go SDK (client/v2) struct-array support, especially vector sub-fields and EmbeddingList/MAX_SIM search.
  • Fixes custom gRPC DialOptions so they no longer drop the SDK's default keepalive, backoff, and max receive message-size settings.

New Features

  • Struct-array vector sub-field columns: Added vector-array column types for struct-array vector sub-fields: ColumnFloatVectorArray, ColumnFloat16VectorArray, ColumnBFloat16VectorArray, ColumnBinaryVectorArray, and ColumnInt8VectorArray. These support ArrayOfVector sub-fields inside struct arrays. (#49164)

  • EmbeddingList search vector types: Added entity.FloatVectorArray, entity.Float16VectorArray, entity.BFloat16VectorArray, entity.BinaryVectorArray, and entity.Int8VectorArray, dispatching them to the matching PlaceholderType_EmbList* values. This enables MAX_SIM / EmbeddingList search against struct-array vector sub-fields such as clips[clip_emb]. (#49164)

  • Struct-array insert/upsert helper: Added WithStructArrayColumn(name, structSchema, rows) to column-based insert/upsert options. The helper accepts []map[string]any row 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 :authority header. (#49186)

Bug Fixes

  • Default gRPC dial options are preserved: Client.dialOptions() now always applies DefaultGrpcOpts before user-provided DialOptions, 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() and StructSchema.Validate() and wired validation into CreateCollection. 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 restores StructArrayFields, and ProtoMessage() preserves max_capacity by propagating the parent setting to sub-fields when needed. Array / ArrayOfVector wrappers from the server are unwrapped back to user-facing scalar/vector sub-field types. (#49164)

  • Struct-array write correctness: columnStructArray now 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 as DataType_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: WithStructArrayColumn stores construction errors and returns them from InsertRequest / UpsertRequest instead of panicking during chained builder calls. (#49164)

Contributors

  • @zhuwenxing
  • @liliu-z
  • @milanchovatiya-boop
2026-04-16 14:23:41
milvus

milvus-2.6.15

Release note is coming soon...

2026-04-03 19:53:36
milvus

milvus-2.6.14

v2.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.

Improvements

  • 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.maxThreadsSize with 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 UpdateReplicateConfiguration API (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 in and == 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)

Bug fixes

  • 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_size when 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 partialResultRequiredDataRatio was set to 0.0 (48702)
2026-03-24 14:19:30
milvus

client/v2.6.3

New Features

  • TruncateCollection API: Added TruncateCollection method to the Go SDK client, allowing users to quickly remove all data from a collection without dropping and recreating it. Use NewTruncateCollectionOption(collectionName) to invoke. (#48361, #47308)

  • GetReplicateConfiguration API: Added GetReplicateConfiguration API for viewing replication topology (with tokens redacted) and force_promote field to UpdateReplicateConfigurationRequest. Supports strong consistency via WithFreshRead option. (#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. A nil pointer maps to a NULL value in Milvus; a non-nil pointer dereferences to the actual value. This applies to ParseSchema, AnyToColumns, SetField, fillData, and fillPKEntry. (#48464)

  • Per-Cluster TLS Config for CDC: Added BuildTLSConfig helper and TLSConfig field to ClientConfig for mTLS support. CDC NewMilvusClient can now read per-cluster TLS config by target cluster ID via GetClusterTLSConfig(clusterID). (#48023)

Bug Fixes

  • Timestamptz field type alignment: Fixed FieldTypeTimestamptz value from 15 to 26 to match the server. Changed Timestamptz data serialization from int64 (TimestamptzData) to ISO 8601 strings (RFC3339Nano format via StringData) as expected by the server. Added NewColumnTimestamptz (accepts []time.Time), ColumnTimestampTzIsoString (direct ISO string input), and their nullable counterparts. (#47328)

Improvements

  • OpenTelemetry upgrade to v1.40.0: Bumped go.opentelemetry.io/otel and related packages from v1.34.0 to v1.40.0 to fix CWE-426 (Untrusted Search Path) vulnerability. Also bumps transitive dependencies including auto/sdk v1.1.0→v1.2.1, go-logr v1.4.2→v1.4.3, and golang.org/x/sys v0.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/v2 through v2.6.8 → v2.6.9 → v2.6.10 → v2.6.11 → v2.6.12 → v2.6.13 across this release cycle.

Dependencies

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
2026-03-20 16:37:28
milvus

milvus-2.6.13

v2.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

Features

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.

Improvements

  • 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)

Bug fixes

  • 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 wrong when 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)
2026-03-10 17:25:23
milvus

milvus-2.6.12

Release note is coming soon...

2026-02-11 17:38:43
milvus

milvus-2.6.11

v2.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.

Features

  • Added a truncate API to remove collection data more efficiently (#47308)

Improvements

  • Used PreparedGeometry to 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 gpgv to address CVEs (#47562)
  • Reduced memory usage by enabling multi-cell DefaultValueChunk layout (#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 PinWrapper copies in searchPksWith to improve query performance (#47531)
  • Normalized constant-folded boolean expressions to AlwaysTrueExpr/AlwaysFalseExpr during rewriting for simpler plans (#47493)
  • Added RESTful search_by_pk support (#47318)
  • Optimized “latest delete snapshot” handling to reduce overhead (#47409)
  • Added support for user-specified warmup settings (#47343)
  • Added LoadWithStrategyAsync to 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)

Bug fixes

  • 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_ in BuildIndexFromFieldData (#47708)
  • Improved v2.5/v2.6 compatibility handling in SyncTargetVersion (QueryNode) (#47693)
  • Handled broadcastToAll messages on the control channel in recovery storage (#47640)
  • Added warmupKey to the CheckParams filter to make CreateIndex idempotent (#47607)
  • Corrected the default mmap value in code (#47490)
  • Populated LevelZeroSegmentIDs in GetDataVChanPositions (#47597)
  • Corrected null handling on NullExpr, ExistsExpr, and logical operators (#47519)
  • Removed segment_loader pre-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 TextIndexStats metadata (#47476)
  • Reduced the empty timetick filtering interval to improve timetick handling (#47471)
2026-02-09 20:11:53
milvus

milvus-2.5.27

Release note is coming...