github.com/milvus-io/milvus
★
★
★
★
★
3
reviews
40
Security
20
Quality
35
Maintenance
33
Overall
v1.1.1
Go
Go
Jun 16, 2021
43503
GitHub Stars
2.0/5
Avg Rating
Community Reviews
CAUTION
Outdated SDK with resource management issues and limited observability
This SDK version (1.1.1) is severely outdated, last released in 2021, which is a major red flag for production use. The API surface is minimal and lacks essential production features like proper connection pooling, configurable timeouts, and circuit breakers. Error handling is rudimentary with opaque error messages that make debugging difficult.
Resource management is problematic - connections don't always clean up gracefully, and there's no built-in retry logic for transient failures. You'll need to implement your own connection pool wrapper and retry mechanisms. The logging is sparse with no hooks for structured logging or metrics export, making observability a challenge. Under load, we experienced connection leaks that required manual intervention.
Timeout configuration is either missing or uses hardcoded values that aren't suitable for all deployment scenarios. The lack of context.Context support throughout means you can't properly propagate cancellations or deadlines. Given the age of this version, you're likely better off using the v2+ SDK which has been completely rewritten with better production characteristics.
Resource management is problematic - connections don't always clean up gracefully, and there's no built-in retry logic for transient failures. You'll need to implement your own connection pool wrapper and retry mechanisms. The logging is sparse with no hooks for structured logging or metrics export, making observability a challenge. Under load, we experienced connection leaks that required manual intervention.
Timeout configuration is either missing or uses hardcoded values that aren't suitable for all deployment scenarios. The lack of context.Context support throughout means you can't properly propagate cancellations or deadlines. Given the age of this version, you're likely better off using the v2+ SDK which has been completely rewritten with better production characteristics.
Simple API surface makes basic operations straightforward
Direct mapping to Milvus operations without excessive abstraction
Severely outdated (2021) with no recent maintenance or security patches
No connection pooling or resource management built-in, prone to leaks
Missing observability hooks, structured logging, and metrics integration
Lacks context.Context support for proper timeout and cancellation propagation
Best for: Legacy projects already using this version that cannot upgrade immediately
Avoid if: You're starting a new project or need production-grade reliability and observability
CAUTION
Outdated SDK with resource management concerns and breaking changes
This Go SDK for Milvus v1.x feels like a first-generation client with significant operational rough edges. Connection pooling is rudimentary at best - you're mostly managing raw gRPC connections yourself, and there's limited visibility into connection health or pool saturation. The client doesn't provide built-in retry logic for transient failures, so you'll need to wrap every call in your own retry handler.
Error handling is inconsistent. Some operations return generic errors that don't distinguish between network failures, timeouts, and logical errors, making it difficult to implement appropriate retry behavior. Timeout configuration exists but isn't granular - you can't easily set different timeouts for index building versus search operations. Memory usage can spike unexpectedly during large batch insertions without clear backpressure mechanisms.
The real problem is that this 1.x SDK is essentially deprecated. Milvus 2.x requires a completely different client (milvus-sdk-go), meaning this is a dead-end dependency. If you're starting new work, you should use the 2.x SDK despite its own maturity issues. For legacy systems still on Milvus 1.x, proceed with caution and plan your migration path.
Error handling is inconsistent. Some operations return generic errors that don't distinguish between network failures, timeouts, and logical errors, making it difficult to implement appropriate retry behavior. Timeout configuration exists but isn't granular - you can't easily set different timeouts for index building versus search operations. Memory usage can spike unexpectedly during large batch insertions without clear backpressure mechanisms.
The real problem is that this 1.x SDK is essentially deprecated. Milvus 2.x requires a completely different client (milvus-sdk-go), meaning this is a dead-end dependency. If you're starting new work, you should use the 2.x SDK despite its own maturity issues. For legacy systems still on Milvus 1.x, proceed with caution and plan your migration path.
Basic CRUD operations work reliably for simple use cases
Straightforward API surface that maps clearly to Milvus 1.x concepts
Supports both synchronous and asynchronous index building
No built-in connection pooling or resource management helpers
Completely incompatible with Milvus 2.x - requires full client rewrite
Missing retry logic and detailed error types for production robustness
No observability hooks for metrics or distributed tracing
Best for: Maintaining existing Milvus 1.x deployments with custom wrapper infrastructure already in place.
Avoid if: You're starting a new project or running Milvus 2.x - use the milvus-sdk-go package instead.
CAUTION
Outdated SDK with poor ergonomics and limited type safety
The Go SDK for Milvus feels like a thin wrapper around gRPC calls with minimal abstractions. The API design is verbose and requires extensive boilerplate for basic operations. Connection management is manual and error-prone, with no built-in retry logic or connection pooling helpers. The lack of structured configuration objects means passing numerous parameters to most methods, making code difficult to maintain.
Error handling is particularly frustrating - errors are often generic strings without structured types, making it hard to programmatically handle specific failure cases. Documentation is sparse with few practical examples beyond basic CRUD operations. The examples that exist don't cover common production scenarios like bulk operations, error recovery, or connection management patterns.
Most concerning is that this package appears abandoned (last release 2021) and doesn't support newer Milvus features. The official recommendation is to use github.com/milvus-io/milvus-sdk-go/v2 instead, which has a completely different API surface, making any investment in this version wasted effort.
Error handling is particularly frustrating - errors are often generic strings without structured types, making it hard to programmatically handle specific failure cases. Documentation is sparse with few practical examples beyond basic CRUD operations. The examples that exist don't cover common production scenarios like bulk operations, error recovery, or connection management patterns.
Most concerning is that this package appears abandoned (last release 2021) and doesn't support newer Milvus features. The official recommendation is to use github.com/milvus-io/milvus-sdk-go/v2 instead, which has a completely different API surface, making any investment in this version wasted effort.
Basic vector operations work as documented for simple use cases
Direct mapping to Milvus gRPC API makes debugging easier for those familiar with the protocol
Package is abandoned - last release in 2021 with no updates for newer Milvus features
No structured error types making programmatic error handling nearly impossible
Verbose API requiring excessive boilerplate for common operations
Migration path to v2 SDK requires complete rewrite due to incompatible APIs
Best for: Legacy projects already using this version that cannot justify migration effort.
Avoid if: You're starting a new project or need features from Milvus 2.x - use milvus-sdk-go/v2 instead.
Write a Review
Sign in to write a review
Sign In