# What changed in pymilvus

> 37 changes in pymilvus 2 to 3 from its official release notes, upgrade guides and advisories: 3 breaking, 1 security, 15 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/pypi/pymilvus/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## pymilvus 3

### Breaking changes

- Empty binary-vector lists now raise a parameter error instead of leaking an IndexError. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Rejects oversized or non-positive target_size values. (2.6.17, 3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1), [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v2.6.17)
- Adding a function field now requires bound index parameters. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)

### Security

- Uploads use safer per-upload options, lower default concurrency, byte-level progress, and request-local concurrent-upload state. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)

### New APIs and options

- Adds builders for Bloom filters and Roaring bitmaps for membership filtering. (3.0.2) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.2)
- Adds APIs for observing the compaction lifecycle. (3.0.2) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.2)
- Adds scalable upload policies for Volume. (3.0.2) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.2)
- Adds a method for altering collection schemas. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Adds role and user descriptions, including this role-alteration method. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Adds TEXT handling across schema validation, result decoding, and BulkWriter paths. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Adds a method for dropping function fields. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Adds synchronous and asynchronous support for data-salvage workflows. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Adds support for external field mappings and an add-field fallback for external collections. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Adds FunctionChain APIs and forwards every specified stage during search. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Adds this method to MilvusClient and AsyncMilvusClient. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Adds support for MinHash function fields. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Supports dynamically adding struct fields. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Adds an expression helper for XGBoost. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)

### Performance

- Avoids quadratic decoding for nullable-scalar results. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)

### Behavior and default changes

- Array query results are materialized as standard Python lists. (2.6.17, 3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1), [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v2.6.17)
- Null values are allowed in this column during insert. (2.6.17, 3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1), [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v2.6.17)
- Role descriptions are now included in the method's output. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Float inputs are now accepted for FP16 and BF16 vectors. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Exposes error classification; only connection-setup RPC failures are mapped to CONNECT_FAILED. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Query and Search Iterator V1 and V2 implementations move to the client layer, with ORM compatibility preserved and ORM deprecation warnings aligned. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)

### Fixes and other changes

- Configured connection timeouts are preserved during recovery. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Sync and async reconnects swap channels atomically, protect active RPCs, and cover retired-channel reclamation. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Adds search aggregation and correctly forwards the group_by_fields parameter. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- External filtering is preserved when creating search iterators. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Booleans are rejected as sparse-vector values or indices, with improved validation errors. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)
- Supports partial updates and preserves struct-array fields reconstructed from schema dictionaries. (2.6.17, 3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1), [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v2.6.17)
- BulkWriter supports struct-vector fields and skips payloads for null struct rows and null struct-vector subfields. (3.0.1) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v3.0.1)

## pymilvus 2

### New APIs and options

- Supports an inclusive start option when dumping messages. (2.6.17) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v2.6.17)

### Fixes and other changes

- Supports struct vector fields; remote upload path prefixes are preserved on Windows. (2.6.17) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v2.6.17)
- Async schema results are unpacked before collection optimization runs. (2.6.17) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v2.6.17)
- Primary-key, partition-key, and clustering-key metadata stays synchronized when fields are added to a schema. (2.6.17) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v2.6.17)
- Boolean values used as sparse-vector indices are rejected. (2.6.17) — [release notes](https://github.com/milvus-io/pymilvus/releases/tag/v2.6.17)
