Skip to content

Releases: milvus-io/milvus

client/v2.5.5

16 Jul 02:05
8ac3adc
Compare
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

02 Jul 07:49
062fc36
Compare
Choose a tag to compare

v2.5.14

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
Compare
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.

client/v2.5.4

16 Jun 11:53
9db6228
Compare
Choose a tag to compare

What's changed

  • Export milvusclient.annRequest by @mcamou
  • Remove load default replicaNum value @ThreadDao

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

client/v2.6.0-rc.1

18 Jun 08:05
201e980
Compare
Choose a tag to compare
client/v2.6.0-rc.1 Pre-release
Pre-release

What's changed

milvus-2.5.13

09 Jun 09:39
3915eca
Compare
Choose a tag to compare

v2.5.13

Release date: June 10, 2025

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

We're excited to announce Milvus 2.5.13! This version enhances your experience with new features, such as the ability to drop field properties and use a cast function for JSON indexes. 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.13 and explore these latest updates!

Features

  • Added support for dropping properties from a field (#41954).
  • Added a cast function for use with JSON indexes (#42504).

Improvements

  • Increased the default import buffer size (#42542).
  • Accelerated the dispatcher building process (#42544).
  • Removed balance constraints between channel and segment tasks (#42410).
  • Set the CAGRA GPU image as the default (#42193).
  • The DescribeIndex RESTful API now supports returning index parameters (#42080).
  • Enabled running an analyzer by a collection's field to avoid frequent analyzer creation and destruction (#42119).
  • Added support for balancing multiple collections in a single trigger (#42134).
  • Now considers nq (number of queries) when identifying slow queries (#42125).
  • The server side now automatically fills absent nullable fields (#42120).
  • Added support for filtering out expired data using TTL (#41960, #42121, #42103).
  • Refined expiring compaction to reclaim space from a small number of older deletions (#42052).
  • Access logs now support fetching hybrid search expressions and fields (#41921).
  • Added explicit move semantics to the get_batch_view interface (#42402).

Bug fixes

  • Fixed a pipeline/delegator leak (#42583).
  • Fixed the delegator selection logic when releasing a segment to avoid a potential MixCoord panic (#42572).
  • Fixed a bug that could cause data write corruption during validation (#42555).
  • Added a check to ensure the cast type is an array for JSON contains expressions (#42185).
  • Fixed an issue with duplicate auto-IDs between import and insert operations (#42520).
  • Ensured importing segments stats tasks are triggered only by the import_checker (#42487).
  • Fixed a bug with is null for the Marisa index (#42421).
  • Ensured stats tasks are only triggered for flushed segments (#42425).
  • Reset compaction status when segment stats are finished (#42005).
  • Updated the Tantivy version to fix a stemmer panic (#42172).
  • Fixed an issue where vector output fields could not be retrieved when using a new interim index (#42183).
  • Avoided relying on Knowhere for thread control when calling the Knowhere iterator (#42133).
  • Fixed an issue where segments could be released prematurely during a balance channel operation (#42043).
  • The DescribeIndex RESTful interface now includes a timestamp (#42105).
  • Used locking to ensure the atomicity of dropping segment indexes (#42076).
  • Fixed a proxy panic in the shard client manager (#42026).
  • Fixed the import slot assignment logic (#41982).
  • Fixed a bug where the time point for force expiry compaction failed to reset (#42000).

milvus-2.5.12

19 May 08:58
043e333
Compare
Choose a tag to compare

v2.5.12

Milvus version Python SDK version Node.js SDK version Java SDK version
2.5.12 2.5.10 2.5.9 2.5.9

We're pleased to bring you Milvus 2.5.12! This release introduces new capabilities such as JSON index support for contains expressions, along with several improvements including updated DescribeCollection API responses and stricter data expiry compaction. This version also incorporates important dependency updates to fix CVEs and numerous bug fixes to enhance stability and performance.
We encourage you to upgrade to Milvus 2.5.12 to benefit from these latest enhancements and fixes!

Features

  • Added JSON index support for JSON contains expr (#41658).

Improvements

  • The DescribeCollection API now includes the update timestamp in its results (#41600).
  • The DescribeIndex interface now outputs index version information (#41841).
  • Added support for stricter expiry compaction to clean deleted data without necessarily waiting for a large number of deletions (#41856).
  • Bumped dependency versions to address CVEs (#41590, #41878, #41742, #41697).
  • Added authorization checks for DescribeCollection and DescribeDatabase tasks (#41799).
  • The RESTful API now supports consistency levels for query/get operations (#41830).
  • Added support for altering collection descriptions (#41547).
  • CDC now supports synchronizing multiple DDL APIs (#41594, #41679).
  • Added a timeout for message reception in MQMsgStream (#41603).
  • Disk quota checks are now skipped for L0 imports (#41572).
  • Added parameters to ignore configuration type exceptions (#41773).
  • Set worker totalSlot in standalone mode to half of that in cluster mode (#41731).

Bug fixes

  • Fixed a goroutine leak in ants.pool (#41893).
  • Fixed an issue where the analyzer name was not set in hybrid search sub-requests (#41897).
  • Fixed a double assignment issue in ChannelManager (#41877).
  • Fixed an issue where log level settings were ineffective in ThreadWatcher (#41887).
  • Prevented index creation for unsorted importing segments when statistics are enabled (#41865).
  • Fixed a goroutine leak in the import reader (#41870).
  • Fixed an analyzer memory leak caused by the function runner not being closed (#41840).
  • Fixed an issue that counts are collected grouped by partition instead of collection (#41789).
  • Fixed an issue with unexpected passwords for the root user (#41818).
  • Prevented crashes when contains_all or contains_any is used with an empty array (#41756).
  • Fixed issues of compilation on Windows (#41617).
  • Disabled block and mutex profiling on ARM architecture to prevent SIGSEGV errors (#41823).
  • Fixed a no candidate segments error for small import tasks (#41772).
  • Ensured fallback to MixCoord session when upgrading to MixCoord (#41773).
  • GetValueFromConfig now returns nullopt instead of throwing an exception (#41711).
  • Added an exclusive lock mutex in DropSegmentsOfPartition to avoid potential crashes with concurrent DDL upon partitions (#41619).

client/v2.5.3

30 Apr 07:18
ecf3841
Compare
Choose a tag to compare

What's Changed

PR: #41631

  • Resolve the issue that row-based insertion could not work with collection function output fields
  • Add sparse & compact format nullable column
  • Support insert normal column into nullable field as all valid rows

Full Changelog: client/v2.5.2...client/v2.5.3

milvus-2.5.11

28 Apr 09:16
69a80b9
Compare
Choose a tag to compare

v2.5.11

Milvus version Python SDK version Node.js SDK version Java SDK version
2.5.11 2.5.8 2.5.8 2.5.8

We're excited to announce the release of Milvus 2.5.11! This version introduces powerful new features like the multi-analyzer capability and expanded tokenizer support (Jieba, Lindera, ICU, Language Identifier). We've also made several improvements, including dynamic segment loading thread pool updates and optimized delete filtering during binlog imports. Key bug fixes address potential segment drop issues, BM25 search failures, and JSON stats filtering errors.

We encourage you to upgrade to 2.5.11 to take advantage of these enhancements and fixes!

Features

  • Added the ability to configure multiple analyzers (tokenizers) and select the appropriate one based on the instruction of the input data (#41444).
  • Enhanced the BM25 Analyzer functionality (#41456).
    • Introduced a run_analyzer API for dry runs to help analyze tokenization results. For more information, refer to Analyzer Overview.
    • Tokenizers
      • Added support for customizing Jieba tokenizer parameters.
      • Added support for the Lindera tokenizer. For more information, refer to Lindera.
      • Added support for the ICU tokenizer. For more information, refer to ICU.
      • Added a Language Identifier tokenizer for language detection.
    • Filters
      • Expanded language support for the built-in stop word filter. For more information, refer to Stop.
      • Added a remove_punct filter to remove punctuation marks. For more information, refer to Remove Punct.
      • Added a regex filter for pattern-based text filtering. For more information, refer to Regex.
  • Added support for modifying the maximum capacity of array fields (#41406).
  • Added support for binary range expressions in JSON path indexes (#41317).
  • Added support for infix and suffix match types in JSON stats (#41388).

Improvements

  • Enabled dynamic updates to the size of the Segment loading thread pool (#41549).
  • Accelerated delete filtering during binlog import (#41552).
  • Added monitoring parameters for the expression filter ratio (#41403).
  • Added a configuration option to force rebuilding indexes to the latest version (#41432).
  • Improved the error log message for the list policy (#41368).
  • Adapted handling for hyphens in gRPC metadata headers (#41372).
  • Upgraded Go version to 1.21.4 to address CVEs (#41522, #41319). (Note: Original text mentioned "2.14", assumed typo corrected to a plausible recent version 1.21.4).

Bug fixes

  • Fixed an issue where segments might not be correctly dropped when dropping a partition (#41543).
  • Fixed bulk insert to use the function runner's input field list instead of the schema's field list (#41561).
  • Fixed BM25 search failures occurring when avgdl (average document length) is NaN (#41503).
  • Corrected inaccurate labels in QueryNode metrics (#41422).
  • Fixed an issue where JSON stats index creation could fail if the data contained an empty map (#41506).
  • Fixed the AlterCollection API to correctly save the modification timestamp (#41469).
  • Fixed an intermittent filtering error in JSON stats under ConjunctExpr and improved the task slot calculation logic to accelerate JSON stats building (#41458).
  • Fixed an IDF oracle leak in BM25 statistics calculation (#41426).
  • Ensured pre-created topics are checked first during shard number validation (#41421).
  • Fixed an erroneous deadlock report occurring in unit tests (#41377).

milvus-2.5.10

18 Apr 06:10
5a8c98a
Compare
Choose a tag to compare

v2.5.10

Release date: April 21, 2025

Milvus version Python SDK version Node.js SDK version Java SDK version
2.5.10 2.5.6 2.5.8 2.5.7

Milvus 2.5.10 delivers improved search and load performance, enhanced metrics reporting, and expanded SVE support for accelerated metric computation. This release also includes multiple bug fixes that boost stability and correctness. We encourage you to upgrade or give it a try—your feedback is invaluable in helping us make Milvus even better!

Improvements

  • Ignore reporting index metrics for non‑existent indexes (#41296)
  • Use scan mode for LIKE even when an inverted index exists (#41309)
  • Optimize performance for LIKE expressions (#41222)
  • Optimize index format for improved load performance (#41041)
  • RESTful: make the default timeout configurable (#41225)
  • Enable SVE support for L2 metric computation in FP16 / NY functions (knowhere #1134)

Bug fixes

  • Fix JSON index not working for string filters (#41383)
  • Skip dimension check for non‑vector fields in pre‑check (#41329)
  • Alter collection now updates the schema correctly (#41308)
  • Update knowhere version to fix macOS build (#41315)
  • Prevent panic when listing indexes before segment index initialization completes (#41299)
  • Resolve performance regression by changing a log level (#41269)
  • Close client before removing worker client (#41254)