client/v3.0.0
milvus-io/milvusclient/v3.0.0Sep 18, 2026by congqixia
Upgrading?
AI Summary
This is the stable release for Milvus 3.0, introducing a new Go module path and significant architectural changes. The release decouples the client from server-side packages, adds collection snapshot management, and expands search capabilities with aggregation, function scoring, and external collection support.
Key Highlights
- Migrates the Go module to `github.com/milvus-io/milvus/client/v3`, decoupling the standalone client from server-side `pkg` modules.
- Adds collection snapshot management and asynchronous restore workflows, including external snapshot export and restore.
- Introduces advanced search features such as aggregation, search by primary-key IDs, query ordering, and search-time FunctionScore.
- Adds support for TEXT fields and nullable StructArray in the Go SDK.
Breaking Changes
- Module path updated from `github.com/milvus-io/milvus/client/v2` to `github.com/milvus-io/milvus/client/v3`.
- Proto types updated from `milvus-proto/go-api/v2` to `milvus-proto/go-api/v3`.
- Go version requirement is now Go 1.24.9 or later.
- Client telemetry is enabled by default; set `ClientConfig.TelemetryConfig.Enabled` to `false` to disable.
- `ExportSnapshot` return type changed from a snapshot path string to an export job ID (`int64`).
New Features
- Collection snapshots: APIs to create, drop, list, and describe collection-scoped snapshots with asynchronous restore capabilities.
- External snapshot export and restore: Durable asynchronous export jobs and state polling for snapshot bundles.
- External collections: Schema builders for external data sources with refresh capabilities via `RefreshExternalCollection`.
- Search aggregation: Bucket builders supporting multi-field keys, nested aggregations, top hits, and metric functions.
- Search by primary-key IDs: `NewSearchByIDsOption` and `AnnRequest.WithIDs` for using existing entities as vector-search inputs.
- Namespace-scoped operations: Added `WithNamespace` support to Search, Hybrid Search, Query, iterators, Insert, Upsert, and Delete.
- Query ordering: `QueryOption.WithOrderByFields` accepting expressions for sorting results.
- Search-time FunctionScore: `SearchOption.WithFunctionScore` carrying scoring Functions with `boost_mode` / `function_mode`.
- Weighted RRF reranking: `NewRRFReranker().WithWeights` for applying per-ANN-request reciprocal-rank coefficients.
- Membership filters: Client-side builders for Bloom Filter (MBF1) and Roaring Bitmap blobs.
- Client telemetry: Configurable collection of request counts, errors, latency metrics, and server heartbeats.
- Structured RPC errors: Public `RPCError`, `ErrorCode`, and `IsRetryableError` for error inspection.
- Nullable StructArray support: End-to-end NULL versus empty-array semantics for inserts, queries, and searches.
- TEXT fields: `FieldTypeText` and column-based insert options for variable-length strings.
- Drop collection fields: `DropCollectionField`, `AddFunctionField`, and `DropFunctionField` routed through `AlterCollectionSchema`.
- FileResource APIs: `AddFileResource`, `ListFileResources`, and `RemoveFileResource` for managing remote files.
- RBAC descriptions: Added user and role descriptions with updates via `AlterRole`.
- Import two-phase commit: REST wrappers for committing or aborting bulk-import jobs.
- Message salvage API: High-level `Client.DumpMessages` streaming wrapper for replication and recovery.
- MinHash: `FunctionTypeMinHash` support in the Go SDK function API.
- Index types: Added missing index types including HNSW SQ/PQ/PRQ, AISAQ, NGRAM, and FM.
- Request ID correlation: Opt-in `WithClientRequestID` to correlate requests with server logs.
Full Release Notes
# client/v3.0.0 > This is a stable release for Milvus 3.0. It is not guaranteed to be compatible with Milvus 2.6 servers. ### 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, including external snapshot export and restore. - 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. - Adds search-time FunctionScore (scoring functions with `boost_mode` / `function_mode`) and weighted RRF reranking. - Adds drop-field / schema-alteration support through `AlterCollectionSchema`. - Adds TEXT field support and nullable StructArray (scalar and vector) support in the Go SDK. - Adds client-built membership filter blobs (Bloom/SBBF and Roaring) for `membership_match` expressions. - Adds FileResource (remote file) management APIs. - Adds the missing index types (HNSW SQ/PQ/PRQ, AISAQ, NGRAM, FM) and preserves generic index types. ### 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 ``` - 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. - `ExportSnapshot` return type changed from a snapshot path string to a `int64` export job ID. Use the new `GetExportSnapshotState` to poll job progress. (`#52476`) - SDK version is now the GA SemVer `3.0.0` (was `3.0.0-beta`). ### 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 snapshot export and restore: `ExportSnapshot` now starts a durable asynchronous export job and returns its job ID, `GetExportSnapshotState` and `GetRestoreSnapshotState` expose job progress, and `RestoreExternalSnapshot` restores referenced or exported snapshot bundles. (#52476) - 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) - Search-time FunctionScore: Added `SearchOption.WithFunctionScore` and `HybridSearchOption.WithFunctionScore`, carrying scoring Functions together with score-option params (`boost_mode` / `function_mode`). `AnnRequest.WithFunctionReranker` / `HybridSearchOption.WithFunctionRerankers` accumulate scoring Functions per request. (#53392) - Weighted RRF reranking: Added `NewRRFReranker().WithWeights`, applying per-ANN-request reciprocal-rank coefficients while preserving classic RRF when weights are omitted. (#52818) - Membership filters: Added client-side builders for `membership_match` expression-template parameters: - `NewBloomFilterBlob(members, fpr)` builds a Split-Block Bloom Filter (MBF1) blob for `type=bloom`. - `NewRoaringBitmapBlob(members)` builds an exact portable Roaring64 bitmap for `type=roaring`. Blobs travel as native protobuf bytes template values (`WithTemplateParam`), letting large membership sets pass the proxy gRPC receive limit. New `client/membership/sbbf` and `client/membership/roaringfilter` packages power the builders. (#53019) - 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) - Nullable StructArray support: StructArray scalar and vector sub-fields now honor NULL versus empty-array semantics end-to-end for inserts, queries, and searches, including compact nullable insert payloads, row-dense query/search results, and restoration of nullable StructArray columns for zero-row results with sub-field selections. (#51813) - TEXT fields: Added `FieldTypeText` (DataType 25), `column.NewColumnText` / `NewNullableColumnText`, and the column-based insert option `WithTextColumn`, for variable-length strings without a required `max_length`. (#52450) - Drop collection fields: Added `DropCollectionField` (by name or by ID), `AddFunctionField`, and `DropFunctionField`, routed through `AlterCollectionSchema`; legacy `AddCollectionField` remains as a compatibility fallback. (#51770) - FileResource APIs: Added `AddFileResource`, `ListFileResources`, and `RemoveFileResource` for managing remote files registered with Milvus. (#51470) - 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 aborting bulk-import jobs through `CommitImport` and `AbortImport`. (#50177) - Message salvage API: Added the high-level `Client.DumpMessages` streaming wrapper for replication and recovery workflows. (#50343, #50574) - MinHash: Added `FunctionTypeMinHash` support to the Go SDK function API. (#45322) - Index types: Added the missing vector/scalar index models — HNSW SQ/PQ/PRQ (`NewHNSWSQIndex` / `NewHNSWPQIndex` / `NewHNSWPRQIndex` and matching ANN params), `NewAISAQIndex`, `NewNgramIndex`, and `NewFMIndex`. `WithExtraIndexParams` merges raw build params while refusing to override `index_type`/`metric_type`, so `Params()` and `IndexType()` never disagree. (#53392) - Request ID correlation: Added opt-in `WithClientRequestID` / `NewClientRequestID` to correlate a request with server logs and traces. (#53392) ### Improvements and Bug Fixes - Default gRPC keepalive, reconnect, and receive-size options are now always applied before user-provided `DialOptions`. (#49186) - Row-based Insert and Upsert builders now preserve row-based processing when chaining partition, namespace, partial-update, and Array-operation options. - Client-local error, retry, crypto, concurrency, property, and type helpers replace the dependency on Milvus server packages. - Updated the v3 protobuf, gRPC, protobuf runtime, and supporting Go dependencies. - Streaming RPCs (e.g. `DumpMessages`) now apply client metadata through a new `MetadataStreamInterceptor`, fixing streaming gRPCs that previously bypassed authentication on the external proxy port. (#52608) - Client telemetry hardening: trustworthy windows/quantiles, fractional sampling that never rounds a positive rate to off, idempotent command cursor, panic-safe command handlers, bounded history, config-reply detail, and opt-in `client_request_id` correlation. (#53392) - `merr` now exposes `ErrServiceUnimplemented`, `ErrParameterMissing`, and the `WrapErrParameterInvalidMsg` / `WrapErrParameterInvalidErr` / `WrapErrParameterMissingMsg` helpers. (#51770) - `BloomFilterBlob` and `RoaringBitmapBlob` are distinct Go types so the builders cannot be mixed up; wrong-domain blobs are rejected by the proxy rather than silently matching nothing. (#53019)
Related Repositories
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs
The world’s fastest framework for building websites.
:cherry_blossom: A command-line fuzzy finder