PyMilvus v3.0.1 Release Notes
PyMilvus 3.0.1 is the recommended Python SDK release for Milvus 3.0.
Compatibility: PyMilvus 3.0.1 requires Python 3.9 or later. Python 3.8
is no longer supported.
What's Changed
New APIs and capabilities
- Add
DataType.TEXThandling across schema validation, result decoding, and BulkWriter paths (#3473). - Add
get_replicate_info()toMilvusClientandAsyncMilvusClient(#3516). - Add sync and async
dump_messages()support for data-salvage workflows (#3575). - Add role and user descriptions, including
alter_role()and role-description output fromdescribe_role()(#3608). - Add search aggregation and correctly forward
group_by_fields(#3647). - Add FunctionChain APIs, forward every specified stage during search, and add the XGBoost expression helper (#3652, #3662, #3685).
Schema evolution and function fields
- Add
alter_collection_schema()and support dynamically adding struct fields (#3504, #3569). - Route collection-schema mutations through
AlterCollectionSchema, retain a legacyAddCollectionFieldfallback only for servers returningUNIMPLEMENTED, and keep drop-function RPC behavior compatible (#3572, #3706). - Support external field mappings and add-field fallback for external collections (#3584,
#3728). - Add
drop_function_field(), support MinHash function fields, and require bound index parameters when adding a function field
(#3600, #3630, #3672). - Keep primary-key, partition-key, and clustering-key metadata synchronized when fields are added (#3667).
Iterators, search results, and type handling
- Move query, Search Iterator V1, and Search Iterator V2 implementations to the client layer while preserving ORM compatibility and aligning ORM deprecation warnings (#3707, #3709, #3714, #3718).
- Preserve external filtering when creating search iterators (#3730).
- Add shared field-data and nested-value decoders, remove the dead V1 row extractor, and avoid quadratic nullable-scalar result decoding (#3552, #3555, #3562, #3605, #3713, #3725).
- Consolidate logical type metadata across search, insert, array, row, and vector paths to remove inconsistent type-specific behavior
(#3474, #3481, #3499, #3539, #3548, #3550, #3557, #3613). - Accept float inputs for FP16 and BF16 vectors (#3546).
Connection recovery and error handling
- Make sync and async reconnect swap channels atomically, protect active RPCs, and cover retired-channel reclamation (#3565, #3567, #3583).
- Preserve configured connection timeouts during recovery (#3615).
- Map only connection-setup RPC failures to
CONNECT_FAILEDand expose error classification throughMilvusException
(#3590, #3618).
Struct, array, and BulkWriter fixes
- Preserve nullable vectors in CSV BulkWriter output, support struct-vector fields, and skip payloads for null struct rows and null struct-vector subfields (#3485, #3508, #3588, #3637).
- Resolve binary-vector search inside struct arrays, preserve struct-array fields reconstructed from schema dictionaries, and support partial updates for struct-array fields (#3520, #3657, #3674).
- Materialize array query results as standard Python lists (#3655).
- Improve Volume uploads with safer per-upload options, lower default concurrency, byte-level progress, and request-local concurrent-upload state (#3627).
- Preserve remote upload prefixes on Windows (#3665).
Validation and correctness fixes
- Reject oversized or non-positive compaction
target_sizevalues (#3496, #3644). - Reject booleans as sparse-vector values or indices and improve validation errors (#3626, #3663).
- Reject empty binary-vector lists with a parameter error instead of leaking an
IndexError(#3698). - Allow null values in an
auto_idprimary-key DataFrame column during insert (#3678). - Correctly unpack async schema results before collection optimization (#3683).
Compatibility, build, and test tooling
- Drop Python 3.8 support; PyMilvus now requires Python 3.9 or later (#3700).
- Migrate development and CI workflows to
uv, use Hatchling-backed version resolution, and retain the intended release-branch RC version semantics (#3529, #3534, #3634). - Isolate protobuf-generation dependencies and pin the final Milvus 3.0 proto, regenerating the Python bindings (#3692, #3731).
- Classify maintained test suites and update async, struct-field, and BulkWriter examples (#3595, #3599, #3640).
Full Changelog: v3.0.0...v3.0.1