Release history
milvus releases
Milvus is a high-performance, cloud-native vector database built for scalable vector ANN search
All releases
16 shown
- Struct‑array vector sub‑field column types (ColumnFloatVectorArray, ColumnBinaryVectorArray, etc.)
- EmbeddingList search vector types for struct‑array fields with MAX_SIM support
- WithStructArrayColumn helper for insert/upsert and gRPC authority configuration via ClientConfig.WithGrpcAuthority
Full changelog
Highlights
- 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.
New Features
-
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)
Bug Fixes
-
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)
Contributors
- @zhuwenxing
- @liliu-z
- @milanchovatiya-boop
Release note is coming soon...
Changelog
Release note is coming soon...
- OpenTelemetry upgraded to v1.40.0 to fix CWE-426 (Untrusted Search Path) vulnerability
- Go runtime upgraded to 1.24.12 to address security CVEs
- TruncateCollection API enabling rapid data removal
- GetReplicateConfiguration API exposing replication topology
- Nullable Go pointer fields allow NULL values in row data
- Native support for Google Gemini text embedding models
- Consistent KV path and key handling across storage backends
- Go SDK now includes TruncateCollection for bulk collection cleanup
- Bumped OpenTelemetry to v1.40.0 to fix CWE-426 untrusted search path vulnerability
- GetReplicateConfiguration API for inspecting replication topology with redacted tokens
- Configurable TLS minimum version for object storage connections across all backends
- Automatic warmup for large tenant collections to reduce cold‑start query latency
- Upgraded Go to version 1.24.12 and updated gpgv to patch reported CVEs
- Truncate API for efficient collection data removal
- RESTful search_by_pk endpoint added
- LoadWithStrategyAsync enables true I/O pipelining in Storage V2
- Metrics endpoint now requires authentication when authorization is enabled, breaking existing clients that assumed unauthenticated access.
- CVE-2026-26190: authentication bypass on metrics port (CVSS 9.8) mitigated
- Metrics endpoint now requires authentication when authorization is enabled to prevent unauthorized access
- Go runtime upgraded to 1.24.12 fixing multiple CVEs
- Dependency packages updated to resolve several security issues
- Fixed critical security vulnerability CVE-2026-26190
- Added authentication to the metrics endpoint when authorization is enabled
- Automatic FP32-to-FP16/BF16 conversion for search reduces storage usage
- KMS key revocation stops WAL consumption to protect data integrity
- Load pool limits segment load concurrency for better resource control
- Added security controls to the /expr endpoint to prevent remote expression execution vulnerabilities
- gRPC metadata header added for client request time tracking
- Pulsar client upgraded to version 0.17.0 fixing send buffer race conditions
- Enforced storage V2 format usage and deprecated V1 writes
- Added security controls for the /expr endpoint to prevent unauthorized access
- Primary key search support
- Segment reopen on data or schema changes
- Storage version label metric for observability
- Added automatic retry for object storage rate limit errors
- Introduced configurable variable-length field size estimation
- Improved indexing slot allocation accuracy
- RootCoord default port changed to a non-ephemeral port
- Duplicate primary keys are now rejected in upsert batch requests
- Fixed data security vulnerability in storage handling
- Addressed concurrency bug that could expose data
- Search result highlighting for documents
- Concurrent execution of text index tasks for multiple fields
- Penalty policy for QueryNodes to handle resource exhaustion