v3.0.0
livekit/agentsv3.0.0Jul 29, 2026by congqixia
AI Summary
This major release introduces a lake-native architecture with External Collections, flexible schema management for online add/drop/backfill, a complete overhaul of the sparse vector index using SINDI, and new capabilities like StructArray support, faceted search, and long-text handling.
Key Highlights
- External Collection now supports more complete lakehouse workflows with `milvus-table` format.
- Flexible schema allows adding, backfilling, and dropping columns online without downtime.
- Sparse index overhaul with new algorithms: SINDI, Block-Max WAND, and Block-Max MaxScore.
- StructArray coverage with element-level search, nested filtering, and bitmap indexes.
- Function Chain reranking API and long TEXT field support with Vortex storage format.
New Features
- External Collection with additive schema evolution for lakehouse workflows.
- Online schema evolution for adding, backfilling, and dropping columns.
- Sparse vector index overhaul with SINDI and Block-Max WAND algorithms.
- StructArray support with null values and dynamic field addition.
- Faceted search on the search path.
- Function Chain API for composable reranking.
- TEXT long-text fields with LOB storage support.
- FAISS index passthrough support.
- Vortex and Lance format support for storage.
- Woodpecker standalone deployment as a microservice.
Full Release Notes
## 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 MaxScore on learned sparse embeddings. Once the new index version is enabled (see Compatibility and behavior notes), SINDI is the default for sparse IP search, and MaxScore is the default for BM25. #### StructArray coverage StructArray now supports null values, bitmap indexes, dynamic field addition on live collections, and partial update of struct fields through upsert, with REST and bulk-import coverage to match. Element-level search adds hybrid search across vector sub-fields with configurable per-entity collapse (max / sum / avg / top-k variants), plus range search and group-by within it. Nested filtering covers `element_filter` predicates, the `MATCH_ANY` / `MATCH_ALL` / `MATCH_LEAST` / `MATCH_MOST` / `MATCH_EXACT` quantifiers, positional sub-field access such as `tags[0][name]`, and `array_length()` on the struct column. For more information, refer to [StructArray](https://milvus.io/docs/array-of-structs.md) and [StructArray Operators](https://milvus.io/docs/struct-array-operators.md). #### Search Aggregation and faceted search Query Aggregation from the beta computes exact statistics over filtered data; 3.0.0 adds faceting on the search path. Specify a facet field at search time and Milvus returns the top facet values, each represented by its best-matching member in ANN ranking and annotated with aggregates such as COUNT and AVG — the faceted-search sidebar (brand, price range, attributes) in one request, instead of over-fetching and counting client-side. ### Function Chain reranking Reranking is now composable through the Function Chain API, which executes an ordered, typed pipeline as part of a single search request. A chain can combine early L0 rescoring on QueryNode with L2 post-reduction reranking on Proxy, supporting score transformation and combination, model-based reranking, sorting, and candidate trimming without client-side orchestration. This release also adds native XGBoost scoring for L0 reranking using UBJ models registered as FileResources, along with Hugging Face Inference Providers for server-managed text embedding and sentence-similarity reranking. #### TEXT long-text fields TEXT fields make long text first-class, with storage-side length limits removed: they support `text_match`, `phrase_match`, and BM25. Values under 64 KB stay inline; larger values go to partition-level LOB files in Vortex format, with the column storing only `(file_id, offset)` references. LOB files are shared across segments, so compaction moves references instead of rewriting text. For RAG this means retrieving vectors and source text from the same store in one IO — no external blob store to operate. #### FAISS index passthrough A new `FAISS` index type accepts arbitrary Faiss index-factory strings through the `faiss_index_name` parameter — `IVF64,Flat`, `HNSW16,Flat`, `OPQ16,IVF64,PQ16x4` — with search parameters passed through, so Faiss recipes reproduce directly on Milvus. #### Vortex and Lance format support The storage layer gains two open columnar formats: Vortex as the next-generation internal format — adaptive encodings (dictionary, RLE, bit-packing, float-specific compression), zero-copy decompression, optimized for mixed vector + scalar workloads — and Lance alongside Parquet for open-ecosystem interchange. Vortex is set to become the default internal format, with filter pushdown and a local variant on the roadmap. #### Woodpecker standalone deployment Woodpecker, the WAL at the core of the streaming write path, can now be deployed as an independent service instead of embedded in other nodes — independent scaling, fault isolation, and observability, like any other microservice. This matters most for large clusters and high-write workloads. ### Core 3.0 features recall The features below were introduced in [3.0-beta](https://milvus.io/docs/release_notes.md#v30-beta) and are part of 3.0.0; see the beta notes for the full write-ups. - **External Collection** — query lakehouse data (Parquet, Lance, Iceberg, Vortex) in place: zero-copy, read-only, synced through incremental refresh. - **Snapshot** — point-in-time read-only collection views by segment reference, with near-zero marginal storage. - **Storage V3 (Loon)** — manifest-based columnar storage on object storage; the foundation for Snapshot and External Collection. - **Query / Search ORDER BY** — server-side multi-field sorting with per-field ASC / DESC. - **Query Aggregation** — COUNT / SUM / AVG / MIN / MAX with group-by, evaluated server-side. - **EmbList + DiskANN** — on-disk multi-vector indexing for StructArray embedding lists, with acceleration paths such as Muvera and Lemur. - **MinHash function (doc-in, doc-out)** — server-side MinHash signatures plus `MINHASH_LSH` for near-duplicate detection. - **Nullable vectors** — NULL on all six vector types; search skips NULL rows, and AddField extends to vector fields. - **Entity TTL** — per-row expiration driven by a TIMESTAMPTZ field. - **FileResource** — cluster-managed dictionaries, synonym lists, and stop-word lists for analyzers, BM25, and Text Match. - **Force Merge** — operator-triggered segment compaction, in synchronous or asynchronous mode. ### Compatibility and behavior notes - **Storage V3 (Loon) is disabled by default.** Features that depend on it — such as Snapshot and TEXT fields — require enabling it manually via `common.storage.useLoonFFI`. Storage V3 will be enabled by default in a later release. - **2.6 → 3.0 compatibility and rollback are guaranteed** — a 3.0 deployment can be rolled back to 2.6. However, once you enable or use features that change the serialized data format (for example Storage V3), rollback is no longer possible. - **New index versions are opt-in for now.** Newly introduced index algorithms require manually raising the target index version (`dataCoord.targetVecIndexVersion` to 10, `dataCoord.targetScalarIndexVersion` to 4) before they take effect; a later release will enable them by default. - **GPU images move to CUDA 12.9** and no longer preserve Ubuntu 20.04 GPU compatibility.