Skip to content

Releases: milvus-io/milvus

milvus-2.6.1

01 Sep 06:05
4376876

Choose a tag to compare

v2.6.1

Release date: September 3, 2025

Milvus Version Python SDK Version Node.js SDK Version Java SDK Version Go SDK Version
2.6.1 2.6.1 2.6.0 2.6.3 2.6.1

We are excited to announce the release of Milvus 2.6.1! This version builds upon the major architectural advancements of previous releases, delivering critical enhancements focused on production stability, performance, and operational robustness. This release addresses key community feedback and strengthens the system for large-scale deployments. We strongly encourage all users to upgrade to benefit from a more stable, performant, and reliable system.

Improvements

  • Supports POSIX-compatible file systems for remote storage (#43944)
  • Introduces model-based rerankers (#43270)
  • Optimizes the performance of comparison expressions on primary key fields (#43154)
  • Collects doc_id from posting list directly to accelerate text match (#43899)
  • Optimizes query performance by converting multiple != conditions into a single NOT IN clause (#43690)
  • Enhances resource management for the caching layer during segment loading (#43846)
  • Improves memory estimation for interim indexes during data loading (#44104)
  • Makes the build ratio for interim indexes configurable (#43939)
  • Adds a configurable write rate limit to the disk writer (#43912)
  • SegCore parameters can now be updated dynamically without restarting the Milvus service (#43231)
  • Adds unified gRPC latency metrics for better observability (#44089)
  • Includes client request timestamps in gRPC headers to simplify debugging (#44059)
  • Supports trace log level for segcore (#44003)
  • Adds a configurable switch to adjust consistency guarantees for higher availability (#43874)
  • Implements a robust rewatch mechanism to handle etcd connection failures (#43829)
  • Improves the internal node health check logic (#43768)
  • Optimizes metadata access when listing collections (#43902)
  • Upgrades the Pulsar client to v0.15.1 official version and adds more logging (#43913)
  • Upgrades aws-sdk from 1.9.234 to 1.11.352 (#43916)
  • Supports dynamic interval updates for ticker components (#43865)
  • Improves auto-detection of ARM SVE instruction sets for bitset operations (#43833)
  • Improves the error message when a text or phrase match fails (#43366)
  • Improves the error message for vector dimension mismatches (#43835)
  • Improves error reporting for append timeouts when the object store is unavailable (#43926)

Bug fixes

  • Fixes a potential Out-Of-Memory (OOM) issue during Parquet file imports (#43756)
  • Fixes an issue where standby nodes could not recover if their lease expired (#44112)
  • Handles compaction retry state correctly (#44119)
  • Fixes a potential deadlock between continuous read requests and index loading that could prevent index loading (#43937)
  • Fixes a bug that could cause data deletions to fail in high-concurrency scenarios (#43831)
  • Fixes a potential race condition when loading text and JSON indexes (#43811)
  • Fixes a node status inconsistency that could occur after a QueryCoord restart (#43941)
  • Ensures that a "dirty" QueryNode is properly cleaned up after a restart (#43909)
  • Fixes an issue where the retry state was not handled correctly for requests with non-empty payloads (#44068)
  • Fixes an issue where the bulk writer v2 did not use the correct bucket name (#44083)
  • Enhances security by hiding sensitive items from the RESTful get_configs endpoint (#44057)
  • Ensures that object uploads for woodpecker are idempotent during timeout retries (#43947)
  • Disallows importing null elements in array fields from Parquet files (#43964)
  • Fixes a bug where the proxy cache was not invalidated after creating a collection alias (#43854)
  • Improves the internal service discovery mechanism for streaming nodes (#44033)
  • Fixes resource group logic to correctly filter streaming nodes (#43984)
  • Adds the databaseName label to metrics to prevent naming conflicts in multi-database environments (#43808)
  • Fixes a logic error in internal task state handling (#43777)
  • Optimizes the initialization timing of the internal metrics to avoid potential panic (#43773)
  • Fixes a rare potential crash in the internal HTTP server (#43799)

client/v2.6.0

27 Aug 07:26
d3fa305

Choose a tag to compare

What's Changed

Full Changelog: client/v2.6.0-rc.1...client/v2.6.0

milvus-2.5.17

21 Aug 10:39
5903f04

Choose a tag to compare

v2.5.17

Release date: August 21, 2025

Milvus version Python SDK version Node.js SDK version Java SDK version
2.5.17 2.5.14 2.5.12 2.5.11

We're excited to announce Milvus 2.5.17! This release delivers critical performance enhancements and stability improvements. We strongly encourage all users to upgrade to benefit from these optimizations.

Improvements

  • Enabled ARM SVE acceleration for bitset operations (#43928)
  • Reduced frequent etcd calls in ShowCollections and DescribeCollections operations (#43903)
  • Added write rate limiting for disk file writer (#43856)
  • Supported skipping TSafe checks for better performance in specific scenarios (#43886)
  • Adjusted import task concurrency based on CPU count (#43817)
  • Refined error messages for better troubleshooting (#43860, #43836)
  • Reduced buffer size to prevent OOM issues during import (#43757)
  • Added disk file writer with direct I/O support (#43692)

Bug fixes

  • Fixed L0 segment loading delegator selection in QueryCoord (#43795)
  • Fixed incorrect null offset calculation for JSON path index (#43823)
  • Added segment lock for LoadTextIndex and LoadJsonKeyIndex operations (#43815)
  • Fixed delete consumer concurrency read-write bug (#43855)
  • Used proto.Equal for accurate field default value comparison (#43832)

client/v2.5.6

11 Aug 06:32
3baddd3

Choose a tag to compare

What's Changed

  • Implement SearchIteratorV2 for milvusclient @congqixia
  • Add basic test cases for search iterator @ThreadDao

Full Changelog: client/v2.5.5...client/v2.5.6

milvus-2.6.0

05 Aug 11:48
4def025

Choose a tag to compare

v2.6.0

Release date: August 6, 2025

Milvus Version Python SDK Version Node.js SDK Version Java SDK Version Go SDK Version
2.6.0 2.6.0 2.6.0 2.6.1 2.6.0

Milvus 2.6.0 is officially released! Building upon the architectural foundation laid in 2.6.0-rc1, this production-ready version addresses numerous stability and performance issues while introducing powerful new capabilities including Storage Format V2, advanced JSON processing, and enhanced search features. With extensive bug fixes and optimizations based on community feedback during the RC phase, Milvus 2.6.0 is ready for you to explore and adopt.

Direct upgrade from 2.6.0-RC1 versions is not supported due to architectural changes. For Older Milvus versions upgrade, Please follow our upgrade guide

What's new in 2.6.0 (since RC)

Optimized storage format v2

To address the challenges of mixed scalar and vector data storage, especially point lookups on unstructured data, Milvus 2.6 introduces Storage Format V2. This new adaptive columnar storage format adopts a "narrow column merging + wide column independence" layout strategy, fundamentally solving the performance bottlenecks when handling point lookups and small-batch retrievals in vector databases.

The new format now supports efficient random access without I/O amplification and achieves up to 100x performance gains compared to the vanilla Parquet format adopted previously, making it ideal for AI workloads requiring both analytical processing and precise vector retrieval. Additionally, it can reduce file count by up to 98% for typical workloads. Memory consumption for major compaction is reduced by 300%, and I/O operations are optimized by up to 80% for reads and more than 600% for writes.

JSON flat index (beta)

Milvus 2.6 introduces JSON Flat Index to handle highly dynamic JSON schemas. Unlike JSON Path Index which requires pre-declaring specific paths and their expected types, JSON Flat Index automatically discovers and indexes all nested structures under a given path. When indexing a JSON field, it recursively flattens the entire subtree, creating inverted index entries for every path-value pair it encounters, regardless of depth or type.
This automatic flattening makes JSON Flat Index ideal for evolving schemas where new fields appear without warning. For instance, if you index a "metadata" field, the system will automatically handle new nested fields like "metadata.version2.features.experimental" as they appear in incoming data, without requiring new index configuration.

Core 2.6.0 features recall

For detailed information about architecture changes and features introduced in 2.6.0-RC, see 2.6.0-rc1 Release Note.

Architecture simplification

  • Streaming Node (GA) - Centralized WAL management
  • Native WAL with Woodpecker - Removed Kafka/Pulsar dependency
  • Unified coordinators (MixCoord); Merged IndexNode and DataNode - Reduced component complexity

Search & analytics

  • RaBitQ 1-bit quantization with high recall
  • Phrase matching
  • MinHash LSH for deduplication
  • Time-aware ranking functions

Developer experience

  • Embedding functions for "data-in, data-out" workflow
  • Online schema evolution
  • INT8 vector support
  • Enhanced tokenizers for global language support
  • Cache layer with lazy loading - Process datasets larger than memory

milvus-2.5.16

05 Aug 11:45
51b3d24

Choose a tag to compare

v2.5.16

Release date: August 6, 2025

Milvus version Python SDK version Node.js SDK version Java SDK version
2.5.16 2.5.14 2.5.12 2.5.11

We're excited to announce Milvus 2.5.16! This version enhances your experience by fixing a series of functionality bugs and improving user experiences. It also delivers a range of general performance and stability enhancements, while resolving numerous bugs to ensure a more robust system. We encourage you to upgrade to 2.5.16 and explore these latest updates!

Improvements

  • Removed collection name validation from DescribeCollection (#43300).
  • Unlinked mmap file when chunk and index are destructed (#43546).
  • Used set element for string term type (#43393).
  • Upgraded Go version to 1.24.4 to fix CVEs (#43467).
  • Only downloaded necessary fields during clustering analyze phase (#43362).
  • Updated Lindera version (#43457).
  • Optimized channel node balancing for uneven QueryNode distribution (#43423).

Bug fixes

  • Fixed hybrid search to support offset param in RESTful API (#43721).
  • Fixed Jieba tokenizer panic when dict word was empty string (#43718).
  • Fixed span raw data retrieval for variable length data type (#43703).
  • Incremented offset for invalid data rows in JSON key stats inverted index (#43688).
  • Fixed load config changes failure after restart (#43555).
  • Fixed pk in [..] skip next batch when using multi-chunk segment (#43619).
  • Skipped loading non-existent L0 segments to prevent load blocking (#43576).
  • Cleaned privilege cache after loading policy in InitPolicyInfo (#43643).
  • Set status when error is not empty (#43404).
  • Returned ID by default (#43596).
  • Fixed string views retrieval failure due to chunk bound empty loop (#43482).
  • Ignored 2.6 proxy to avoid timetick lag (#43519).
  • Ensured task execution order by using a priority queue (#43272).
  • Refined judgement for batch views (#43479).

milvus-2.5.15

21 Jul 02:28
3a3b374

Choose a tag to compare

v2.5.15

Release date: July 23, 2025

Milvus version Python SDK version Node.js SDK version Java SDK version
2.5.15 2.5.14 2.5.12 2.5.11

We're excited to announce Milvus 2.5.15! This version enhances your experience by fixing a series of functionality bugs, including ones that may severely damage the metadata causing data loss when collection is renamed. It also delivers a range of general performance and stability enhancements, while resolving numerous bugs to ensure a more robust system. We encourage you to upgrade to 2.5.15, especially if you are currently on 2.5.14, and explore these latest updates!

Improvements

  • Updated Knowhere version to fix a sparse vector brute force bug (#43398).
  • Implemented meta saving with txn limits (#43287).
  • Applied load config changes after QueryCoord restart (#43236).
  • Refined variable-length-type memory usage (#43093).
  • Reordered RootCoord shutdown to be last in coordinator stop sequence (#43024).
  • Updated CMake version to 3.31.8 (#43004).

Bug fixes

  • Skipped remove operation if key exists in save set (#43426).
  • Fixed null bitmap offset alignment when loading multi-chunk data (#43411, #43342).
  • Updated Tantivy to fix directory removing race condition (#43401).
  • Fixed an issue by calling AlterCollection only when renaming collections (#43421).
  • Made MultiSaveAndRemove execute removal operations first (#43409).
  • Used disk segment max size for collections with both sparse and dense vectors (#43195).
  • Fixed text match bug by adapting to multi-chunk model (#43297).
  • Fixed incorrect bitset for division comparison when the right operand is negative (#43180).
  • Voided unnecessary copying when getting JSON chunks (#43183, #43202).
  • Prevented delegator from becoming unserviceable due to shard leader changes (#43309).
  • Fixed text match index and JSON key stats index leaks when segments are released (#43308).
  • Fixed RegeneratePartitionStats failure after restoring clustering compaction tasks (#43206).
  • Added error handling for invalid function parameters to prevent panics (#43190).
  • Removed space trimming logic when validating collection names (#43138).
  • Added field mmap property checks before applying collection-level settings (#43091).
  • Fixed index creation being blocked by failed sort stats (#43061).
  • Fixed exclude nodes clearing logic in load balancer retry mechanism (#43002).

client/v2.5.5

16 Jul 02:05
8ac3adc

Choose a tag to compare

What's Changed

  • Prevent client panicking when Milvus server return malformed search result by @congqixia
  • Fix a bug that when search nq > 1, client failed to parse nullable column by @congqixia

Full Changelog: client/v2.5.5...client/v2.5.4

milvus-2.5.14 (Deprecated)

02 Jul 07:49
062fc36

Choose a tag to compare

v2.5.14 (Deprecated)

Release date: July 2, 2025

Milvus version Python SDK version Node.js SDK version Java SDK version
2.5.14 2.5.11 2.5.11 2.5.10

We're excited to announce Milvus 2.5.14! This release delivers a range of performance and stability enhancements, including a separate chunk cache pool, auto-indexing for JSON fields, and local caching for BM25 segment statistics. This version also resolves several critical bugs, such as a thread explosion in the file watcher and potential panics in QueryCoord, to ensure a more robust and reliable system. We encourage you to upgrade to 2.5.14 to benefit from these latest updates!

Dependency upgrade

  • Upgraded Minio to RELEASE.2024-05-28T17-19-04Z to fix a few CVEs (#43063).

Improvements

  • Added a separate chunk cache pool (#42901).
  • Added support for AUTOINDEX on JSON fields (#42161).
  • Used English name as language identifiers for all language types (#42601).
  • Enabled running an analyzer by a collection field (#42812).
  • Updated the Knowhere version (#42939).
  • Added a size interface to the file reader to eliminate statobject calls during reads (#42911).
  • Introduced a local cache for BM25 segment statistics (#42924, #42646).
  • Filled in dbname for operateprivilegev2request in the interceptor (#42904).
  • Avoided modifying field metadata when renaming a collection or database (#42876).
  • Made the Web UI toggleable via configuration (#42815).
  • Avoided using the thread pool when a column is ready in the chunk cache (#42804).
  • Enabled the Tantivy collector to set bitset directly (#39748, #42881).
  • Replaced pointer-based map keys with IDs in the garbage collector (#42654).
  • Optimized memory usage during garbage collection (#42631).
  • Added support for printing NQ and parameters for search and query logs (#42545).
  • Handled nullable and default values correctly during bulk insert (#42072).
  • Set thread names for the Segcore thread pool (#42596).

Bug fixes

  • Pre-allocated sufficient IDs during data import to avoid failures (#42935).
  • Updated Tantivy to fix a thread explosion in the file watcher (#42828, #42713).
  • Fixed an issue where filtered data became invisible under TTL (#42944).
  • Removed cached null expression results to prevent incorrect filtering (#42783).
  • Rejected division or modulo by zero in binary arithmetic expressions (#42887).
  • Ensured the flow graph frees function resources after all nodes are closed (#42775).
  • Fixed an issue where DataCoord could get stuck during an upgrade from v2.5 to v2.6 (#42669).
  • Added a pre-check to prevent unsupported data type casting (#42678).
  • Added concurrency and close protection for the BM25 function (#42599).
  • Filtered out streaming query nodes from the resource group during upgrades (#42594).
  • Fixed an issue with is_not_in expressions for the Trie index (#42886).
  • Fixed an issue preventing Rocksmq from stopping gracefully (#42843).
  • Corrected pruning optimization for OR logical expressions to only prune if child nodes are prunable (#42915).
  • Fixed a QueryCoord panic caused by the controller not waiting for the checker to finish (#42726).
  • Fixed an issue where small segments missed primary key sorting tasks due to being incorrectly marked as indexed (#42615).
  • Reduced total DataNode task concurrency in Standalone mode to prevent OOM errors (#42809).
  • Provided explicit errors for arithmetic operations on unsupported types (#42890).

milvus-2.6.0-rc1

14 Jun 07:10
201e980

Choose a tag to compare

milvus-2.6.0-rc1 Pre-release
Pre-release

v2.6.0-rc1

Release date: June 18, 2025

Milvus Version Python SDK Version Node.js SDK Version Java SDK Version Go SDK Version
2.6.0-rc1 2.6.0b0 2.6.0-rc1 2.6.0 2.6.0-rc.1

Milvus 2.6.0-rc1 introduces a simplified, cloud-native architecture designed to improve operational efficiency, resource utilization, and total cost of ownership by reducing deployment complexity. This release adds new functionalities focused on performance, search, and development. Key features include high-precision 1-bit quantization (RaBitQ) and a dynamic cache layer for performance gains, near-duplicate detection with MinHash and precise phrase matching for advanced search, and automated embedding functions with online schema modification to enhance the developer's experience.

This is a pre-release version of Milvus 2.6.0. To try out the latest features, install this version as a fresh deployment. Upgrading from Milvus v2.5.x or earlier to 2.6.0-rc1 is not supported.

Architecture Changes

Since 2.6, Milvus introduces significant architectural changes aimed at improving performance, scalability, and ease of use. For more information, refer to Milvus Architecture Overview.

Streaming Node (GA)

In previous versions, streaming data was written to the WAL by the Proxy, and read by the QueryNode and DataNode. This architecture made it difficult to achieve consensus on the write side, requiring complex logic on the read side. Additionally, the query delegator was located in the QueryNode, which hindered scalability. Milvus 2.5.0 introduced the Streaming Node, which becomes GA in version 2.6.0. This component is now responsible for all shard-level WAL read/write operations and also serves as the query delegator, resolving the aforementioned issues and enabling new optimizations.

Important Upgrade Notice: Streaming Node is a significant architectural change, so a direct upgrade to Milvus 2.6.0-rc1 from previous versions is not supported.

Woodpecker Native WAL

Milvus previously relied on external systems like Kafka or Pulsar for its WAL. While functional, these systems added significant operational complexity and resource overhead, particularly for small to medium-sized deployments. In Milvus 2.6, these are replaced by Woodpecker, a purpose-built, cloud-native WAL system. Woodpecker is designed for object storage, supporting both local and object storage based zero-disk modes, simplifying operations while improving performance and scalability.

DataNode and IndexNode Merge

In Milvus 2.6, tasks such as compaction, bulk import, statistics collection, and index building are now managed by a unified scheduler. The data persistence function previously handled by the DataNode has been moved to the Streaming Node. To simplify deployment and maintenance, the IndexNode and DataNode have been merged into a single DataNode component. This consolidated node now executes all these critical tasks, reducing operational complexity and optimizing resource utilization.

Coordinator Merge into MixCoord

The previous design with separate RootCoord, QueryCoord, and DataCoord modules introduced complexity in inter-module communication. To simplify the system design, these components have been merged into a single, unified coordinator called MixCoord. This consolidation reduces the complexity of distributed programming by replacing network-based communication with internal function calls, resulting in more efficient system operation and simplified development and maintenance.

Key Features

RaBitQ 1-bit Quantization

To handle large-scale datasets, 1-bit quantization is an effective technique for improving resource utilization and search performance. However, traditional methods can negatively impact recall. In collaboration with the original research authors, Milvus 2.6 introduces RaBitQ, a 1-bit quantization solution that maintains high recall accuracy while delivering the resource and performance benefits of 1-bit compression.

For more information, refer to IVF_RABITQ.

JSON Capability Enhancement

Milvus 2.6 enhances its support for the JSON data type with the following improvements:

  • Performance: JSON Path Indexing is now officially supported, allowing the creation of inverted indexes on specific paths within JSON objects (e.g., meta.user.location). This avoids full object scans and improves the latency of queries with complex filters.
  • Functionality: To support more complex filtering logic, this release adds support for JSON_CONTAINS, JSON_EXISTS, IS NULL, and CAST functions.
    Looking ahead, our work on JSON support continues. We are excited to preview that upcoming official releases will feature even more powerful capabilities, such as JSON shredding and a JSON FLAT Index, designed to dramatically improve performance on highly nested JSON data.

Analyzer/Tokenizer Function Enhancement

This release significantly enhances text processing capabilities with several updates to the Analyzer and Tokenizer:

  • A new Run Analyzer syntax is available to validate tokenizer configurations.
  • The Lindera tokenizer is integrated for improved support of Asian languages such as Japanese and Korean.
  • Row-level tokenizer selection is now supported, with the general-purpose ICU tokenizer available as a fallback for multilingual scenarios.

Data-in, Data-Out with Embedding Functions

Milvus 2.6 introduces a "Data-in, Data-Out" capability that simplifies AI application development by integrating directly with third-party embedding models (e.g., from OpenAI, AWS Bedrock, Google Vertex AI, Hugging Face). Users can now insert and query using raw text data, and Milvus will automatically call the specified model service to convert the text into vectors in real-time. This removes the need for a separate vector conversion pipeline.

For more information, refer to Embedding Function Overview.

Phrase Match

Phrase Match is a text search feature that returns results only when the exact sequence of words in a query appears consecutively and in the correct order within a document.

Key Characteristics:

  • Order-sensitive: The words must appear in the same order as in the query.
  • Consecutive match: The words must appear right next to each other, unless a slop value is used.
  • Slop (optional): A tunable parameter that allows for a small number of intervening words, enabling fuzzy phrase matching.

For more information, refer to Phrase Match.

MinHash LSH Index (Beta)

To address the need for data deduplication in model training, Milvus 2.6 adds support for MINHASH_LSH indexes. This feature provides a computationally efficient and scalable method for estimating Jaccard similarity between documents to identify near-duplicates. Users can generate MinHash signatures for their text documents during preprocessing and use the MINHASH_LSH index in Milvus to efficiently find similar content in large-scale datasets, improving data cleaning and model quality.

Time-Aware Decay Functions

Milvus 2.6 introduces time-aware decay functions to address scenarios where information value changes over time. During result re-ranking, users can apply exponential, Gaussian, or linear decay functions based on a timestamp field to adjust a document's relevance score. This ensures that more recent content can be prioritized, which is critical for applications like news feeds, e-commerce, and an AI agent's memory.

For more information, refer to Decay Ranker Overview.

Add Field for Online Schema Evolution

To provide greater schema flexibility, Milvus 2.6 now supports adding a new scalar or vector field to an existing collection's schema online. This avoids the need to create a new collection and perform a disruptive data migration when application requirements change.

For more information, refer to Add Fields to an Existing Collection.

INT8 Vector Support

In response to the growing use of quantized models that produce 8-bit integer embeddings, Milvus 2.6 adds native data type support for INT8 vectors. This allows users to ingest these vectors directly without de-quantization, saving computation, network bandwidth, and storage costs. This feature is initially supported for HNSW-family indexes.

For more information, refer to Dense Vector.