# Milvus: what changed from 2 to 3 - Product: Milvus (https://whatsnew.fyi/product/milvus) - Vendor: Zilliz - Range: changelog entries numbered after v2.6.23 up to and including v3.0.0, stable releases only - Entries below: 1 release (newest first) - Resolved: 2 is v2.6.23 and 3 is v3.0.0, the newest stable release of each major we track - Not shown: 1 release whose version could not be placed against this range - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 0 - Page: https://whatsnew.fyi/product/milvus/compare/2...3 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (12 changes, grouped by kind) ### Added #### v3.0.0 (2026-07-29) - External Collection now supports external fields feeding function output fields such as BM25 sparse vectors, MinHash signatures, and text embeddings - Add milvus-table external format that treats Milvus Snapshot metadata and Storage V3 manifests as an external source - Support online schema evolution for external collections with additive schema evolution when external table gains new columns - Support adding, backfilling, and dropping columns while serving continues without full-collection rebuilds - Support external backfill for values computed outside Milvus and inner backfill for kernel-derived values like BM25 or MinHash functions - Sparse index now includes inverted-list compression, configurable quantization, and per-workload search-algorithm selection - StructArray now supports null values, bitmap indexes, dynamic field addition on live collections, and partial update of struct fields through upsert - Element-level search adds hybrid search across vector sub-fields with configurable per-entity collapse and range search within it - Nested filtering covers element_filter predicates, MATCH_ANY / MATCH_ALL / MATCH_LEAST / MATCH_MOST / MATCH_EXACT quantifiers, positional sub-field access, and array_length() function - Faceted search on the search path returns top facet values with best-matching members in ANN ranking and aggregates such as COUNT and AVG ### Changed #### v3.0.0 (2026-07-29) - Sparse vector index upgraded with new search algorithms including SINDI, Block-Max WAND, and Block-Max MaxScore - SINDI is now the default for sparse IP search and MaxScore is the default for BM25 after new index version is enabled ## Release notes ### v3.0.0 — milvus-3.0.0 - Date: 2026-07-29 - Version: v3.0.0 - Original notes: https://github.com/milvus-io/milvus/releases/tag/v3.0.0 - Permalink: https://whatsnew.fyi/product/milvus/releases/v3.0.0 - **added** — External Collection now supports external fields feeding function output fields such as BM25 sparse vectors, MinHash signatures, and text embeddings - **added** — Add milvus-table external format that treats Milvus Snapshot metadata and Storage V3 manifests as an external source - **added** — Support online schema evolution for external collections with additive schema evolution when external table gains new columns - **added** — Support adding, backfilling, and dropping columns while serving continues without full-collection rebuilds - **added** — Support external backfill for values computed outside Milvus and inner backfill for kernel-derived values like BM25 or MinHash functions - **changed** — Sparse vector index upgraded with new search algorithms including SINDI, Block-Max WAND, and Block-Max MaxScore - **added** — Sparse index now includes inverted-list compression, configurable quantization, and per-workload search-algorithm selection - **added** — StructArray now supports null values, bitmap indexes, dynamic field addition on live collections, and partial update of struct fields through upsert - **added** — Element-level search adds hybrid search across vector sub-fields with configurable per-entity collapse and range search within it - **added** — Nested filtering covers element_filter predicates, MATCH_ANY / MATCH_ALL / MATCH_LEAST / MATCH_MOST / MATCH_EXACT quantifiers, positional sub-field access, and array_length() function - **added** — Faceted search on the search path returns top facet values with best-matching members in ANN ranking and aggregates such as COUNT and AVG - **changed** — SINDI is now the default for sparse IP search and MaxScore is the default for BM25 after new index version is enabled ##### v3.0.0 Release date: July 29, 2026 | Milvus Version | Python SDK Version | Node.js SDK Version | Java SDK Version | Go SDK Version | | -------------- | ------------------ | ------------------- | ---------------- | -------------- | | 3.0.0 | 3.0.1 | 3.0.3 | 3.0.5 | 3.0.0 | Milvus 3.0.0 is officially released! Building on the lake-native architecture introduced in [3.0-beta](https://milvus.io/docs/release_notes.md#v30-beta), this release completes what the beta started: External Collection covers more lakehouse workflows; schema supports online add / backfill / drop; the sparse index is rebuilt around SINDI; StructArray and faceted search round out the retrieval engine; FAISS passthrough, and TEXT extend index and modality choices; and Woodpecker runs as a standalone service. If you are new to the 3.0 line, the Core 3.0 features recall section below summarizes the capabilities introduced in 3.0-beta; the [3.0-beta release notes](https://milvus.io/docs/release_notes.md#v30-beta) have the full write-ups. ###### What's new in 3.0.0 (since 3.0-beta) ###### External Collection: more complete lakehouse workflows 3.0-beta introduced External Collection: reference lake files in place, build indexes, and search them without copying data into Milvus. This release extends it toward complete lakehouse retrieval workflows. External fields can now feed function output fields such as BM25 sparse vectors, MinHash signatures, and text embeddings, so text and model-derived retrieval fields are built inside Milvus without copying the source table. Refresh also supports additive schema evolution: when the external table gains new columns, Milvus patches the affected segments instead of rebuilding the collection. This release also adds a `milvus-table` external format that treats Milvus Snapshot metadata and Storage V3 manifests as an external source, so a collection snapshot can itself be served as an external table — batch and serving systems get a shared, manifest-backed view of the same data. For more information, refer to [Create an External Collection](https://milvus.io/docs/create-an-external-collection.md) and [Snapshots](https://milvus.io/docs/snapshots.md). ###### Flexible schema: add, backfill, and drop columns online Schemas do not stay static in production — embedding models get replaced, features iterate, fields get deprecated — and these used to mean full-collection rebuilds with downtime or double-writes. 3.0.0 closes the loop: columns can be added, filled, and dropped while serving continues. Backfill works in both directions. External backfill handles values computed outside Milvus: add a column, snapshot the collection as a consistent starting point, run the job offline, write the values back, and Milvus indexes the new column incrementally — an embedding-model upgrade across hundreds of millions of rows becomes a hot path with no downtime. Inner backfill covers kernel-derived values: attach a BM25 or MinHash function to an existing collection and its output field is computed over existing data automatically. For more information, refer to [Add Fields to an Existing Collection](https://milvus.io/docs/add-fields-to-an-existing-collection.md). ###### Sparse index overhaul: SINDI, Block-Max WAND, and Block-Max MaxScore Milvus 3.0 upgrades the sparse vector index across the board. It introduces new search algorithms — [SINDI](https://arxiv.org/abs/2509.08395), Block-Max WAND, and Block-Max MaxScore — along with inverted-list compression, configurable quantization, and per-workload search-algorithm selection. mmap loading, serialization, and BM25 scoring are also optimized, cutting index storage and loading overhead for large-scale sparse vector and full-text search. In internal benchmarks, the compressed BM25 index is roughly 3x smaller than the 2.6 sparse index at comparable recall, and SINDI reaches up to about 10x the QPS of _[Truncated at 4000 characters — full notes: https://github.com/milvus-io/milvus/releases/tag/v3.0.0]_