版本说明

了解 Milvus 新功能!本页面汇总了每个版本中的新功能、改进、已知问题和错误修复。建议您定期访问此页面,了解最新更新。

v3.0.0

发布日期:2026年7月29日

Milvus 版本Python SDK 版本Node.js SDK 版本Java SDK 版本Go SDK 版本
3.0.03.0.13.0.33.0.53.0.0

Milvus 3.0.0 正式发布!基于3.0-beta 版本中引入的湖原生架构,此版本完成了 beta 版所开启的工作:外部 Collection 支持更多湖屋工作流;Schema 支持在线添加/回填/删除;稀疏索引围绕 SINDI 进行了重构; StructArray 和分面搜索进一步完善了检索引擎;FAISS 直通和 TEXT 扩展了索引及模态选项;Woodpecker 现可作为独立服务运行。

观看下方视频,深入了解 Milvus 3.0 并参与与核心维护者的问答环节:

如果您是首次接触 3.0 系列,下文的“Core 3.0 功能回顾”部分总结了 3.0-beta 中引入的功能;完整的说明请参阅3.0-beta 发布说明

3.0.0 版本的新功能(相较于 3.0-beta)

外部Collection:更完善的湖屋工作流

3.0-beta 版本引入了“外部 Collection”功能:原地引用湖存储文件、构建索引,并在无需将数据复制到 Milvus 的情况下进行检索。本次发布进一步扩展了该功能,以支持完整的湖仓检索工作流。 外部字段现可为函数输出字段(如 BM25 稀疏向量、MinHash 签名和文本 Embeddings)提供数据,因此文本和模型衍生检索字段可在 Milvus 内部构建,无需复制源表。 刷新功能还支持增量式模式演进:当外部表新增列时,Milvus 会修补受影响的段,而非重建整个 Collection。

此版本还新增了milvus-table 外部格式,该格式将Milvus快照元数据和Storage V3清单视为外部数据源,因此Collection快照本身可作为外部表提供服务——批处理和服务系统可获得基于同一数据清单的共享视图。

有关更多信息,请参阅《创建外部Collection和 快照》

灵活的Schema:在线添加、补全和删除列

在生产环境中,Schema 并非一成不变——嵌入模型会被替换、特征会迭代、字段会被废弃——而过去这些操作往往意味着需要重建整个 Collection,从而导致停机或双重写入。3.0.0 版本实现了闭环:在持续服务的同时,可以添加、填充和删除列。

补写支持双向操作。外部补写处理在 Milvus 外部计算的值:添加一列,对 Collection 进行快照以作为一致的起点,离线运行任务,将值写回,Milvus 会增量地为新列建立索引——这使得跨越数亿行数据的嵌入式模型升级成为无需停机的热路径。 内部回填则处理内核生成的值:将 BM25 或 MinHash 函数附加到现有 Collection 上,其输出字段会自动基于现有数据计算得出。

有关更多信息,请参阅《向现有Collection添加字段》

稀疏索引全面升级:SINDI、Block-Max WAND 和 Block-Max MaxScore

Milvus 3.0 对稀疏向量索引进行了全面升级。它引入了新的搜索算法——SINDI、Block-Max WAND 和 Block-Max MaxScore——同时还支持倒排列表压缩、可配置量化以及按工作负载选择搜索算法。 此外,mmap 加载、序列化和 BM25 评分机制也得到了优化,从而降低了大规模稀疏向量和全文搜索的索引存储及加载开销。 在内部基准测试中,在可比的召回率下,压缩后的 BM25 索引大小约为 2.6 稀疏索引的 1/3,而 SINDI 在学习型稀疏 Embeddings 上达到的 QPS 最高可达 MaxScore 的 10 倍左右。 启用新索引版本后(参见“兼容性与行为说明”),SINDI 将成为稀疏 IP 搜索的默认选项,而 MaxScore 则成为 BM25 的默认选项。

StructArray 支持范围

StructArray 现支持空值、位图索引、对在线 Collections 的 Dynamic Field 添加,以及通过 upsert 对结构体字段进行部分更新,并提供相应的 REST 和批量导入支持。

元素级搜索新增了跨向量子字段的混合搜索,支持按实体配置折叠方式(最大值/求和/平均值/前k个变体),并支持范围搜索和组内聚合。嵌套过滤支持element_filter 谓词、MATCH_ANY /MATCH_ALL /MATCH_LEAST /MATCH_MOST /MATCH_EXACT 量词、位置子字段访问(如tags[0][name] )以及结构列上的array_length() 操作。

有关更多信息,请参阅StructArrayStructArray 操作符

测试版中的查询聚合会对过滤后的数据计算精确统计数据;3.0.0 版本在搜索路径中添加了分面功能。在搜索时指定一个分面字段,Milvus 将返回排名前列的分面值,每个值由其在 ANN 排名中匹配度最高的成员表示,并标注有 COUNT 和 AVG 等聚合统计信息 ——在单次请求中即可获得分面搜索侧边栏(品牌、价格范围、属性)的结果,而无需在客户端进行过度检索和计数。

函数链重新排序

现在可以通过函数链 API 对重新排序进行组合,该 API 作为单个搜索请求的一部分,执行有序且带类型的管道。 一条链可以结合 QueryNode 上的早期 L0 重新评分与 Proxy 上的 L2 后缩减重新排序,支持评分转换与组合、基于模型的重新排序、排序以及候选项筛选,且无需客户端协调。 此版本还新增了针对 L0 重新排序的原生 XGBoost 评分功能,该功能使用注册为 FileResources 的 UBJ 模型,同时还提供了 Hugging Face 推理提供程序,用于服务器管理的文本嵌入和句子相似度重新排序。

TEXT 长文本字段

TEXT字段使长文本成为第一类数据,并取消了存储层面的长度限制:它们支持text_matchphrase_match 和BM25。小于64 KB的值保持内联存储;更大的值则存储在分区级别的Vortex格式LOB文件中,而列中仅存储(file_id, offset) 引用。 LOB 文件在各分段间共享,因此压缩操作仅需移动引用而非重写文本。对于 RAG 而言,这意味着可通过一次 I/O 从同一存储中检索向量和源文本——无需操作外部 blob 存储。

FAISS 索引直通

新的FAISS 索引类型通过faiss_index_name 参数接受任意Faiss索引生成器字符串——IVF64,FlatHNSW16,FlatOPQ16,IVF64,PQ16x4 ——并传递搜索参数,因此Faiss配置方案可直接在Milvus上复现。

支持 Vortex 和 Lance 格式

存储层新增了两种开放的列式格式:Vortex作为下一代内部格式——支持自适应编码(字典编码、RLE、位打包、浮点数专用压缩),零拷贝解压,并针对向量与标量混合工作负载进行了优化;此外,Lance与Parquet并行,用于开放生态系统的数据交换。 Vortex 将成为默认的内部格式,其路线图中还包含过滤器下推和本地变体功能。

Woodpecker 独立部署

作为流式写入路径核心的 WAL(写入前日志)Woodpecker,现可作为独立服务部署,而非嵌入其他节点——具备独立扩展、故障隔离和可观测性,如同任何其他微服务。这对大型集群和高写入工作负载尤为重要。

Core 3.0 功能回顾

以下功能在3.0-beta版本中引入,并已纳入 3.0.0 正式版;完整说明请参阅 beta 版本说明。

  • 外部Collection——原地查询湖仓数据(Parquet、Lance、Iceberg、Vortex):零拷贝、只读,并通过增量刷新进行同步。
  • 快照— 通过分段引用生成特定时间点的只读Collection视图,边际存储成本近乎为零。
  • 存储 V3(Loon)——基于清单的对象存储列式存储;是快照和外部 Collection 的基础。
  • 查询/搜索 ORDER BY— 支持服务器端多字段排序,每个字段均可设置 ASC / DESC。
  • 查询聚合— 支持带分组的 COUNT / SUM / AVG / MIN / MAX,在服务器端进行计算。
  • EmbList + DiskANN—— 针对 StructArray 嵌入列表的磁盘多向量索引,包含 Muvera 和 Lemur 等加速路径。
  • MinHash 函数(doc-in、doc-out)——服务器端的 MinHash 签名,配合MINHASH_LSH 实现近似重复检测。
  • 可为空向量— 所有六种向量类型均支持NULL;搜索会跳过NULL行,且AddField功能已扩展至向量字段。
  • 实体 TTL— 由 TIMESTAMPTZ 字段驱动的按行过期机制。
  • FileResource— 用于分析器、BM25 和文本匹配的集群管理的词典、同义词列表和停用词列表。
  • 强制合并— 由操作符触发的分段压缩,支持同步或异步模式。

兼容性与行为说明

  • Storage V3(Loon)默认处于禁用状态。依赖于它的功能(如 Snapshot 和 TEXT 字段)需要通过common.storage.useLoonFFI 手动启用。Storage V3 将在后续版本中默认启用。
  • 保证 2.6 → 3.0 的兼容性和回滚——3.0 部署可回滚至 2.6。但是,一旦启用或使用了会更改序列化数据格式的功能(例如 Storage V3),则无法再进行回滚。
  • 目前新索引版本需手动启用。新引入的索引算法生效前需要手动将目标索引版本提升(例如将dataCoord.targetVecIndexVersion 设为 10,dataCoord.targetScalarIndexVersion 设为 4);后续版本将默认启用这些功能。
  • GPU 镜像已迁移至 CUDA 12.9,且不再保留与 Ubuntu 20.04 的 GPU 兼容性。

v3.0-beta

发布日期:2026年5月9日

Milvus 版本Python SDK 版本Node.js SDK 版本
3.0-beta3.0.03.0.0

Milvus 3.0-beta 通过与 OpenLake 生态系统的新集成扩展了 Milvus 向量数据库:External Collection 使 Milvus 能够以零拷贝方式查询外部 Lake 表,而 Spark 则可通过 Snapshot 直接读取 Milvus Collections。 此次发布还带来了更丰富的检索功能、更具表现力的 Schema、更深入的文本搜索定制、更精细的数据和模型生命周期控制,以及更多操作员级别的控制选项。Milvus 3.0 是 Zilliz Lakebase 的核心内核,为其统一的服务、发现和批处理提供支持。

主要功能

External Collection

在典型的 AI 数据管道中,数 TB 的 Embeddings 和元数据已作为 Parquet、Lance 或 Iceberg 表存储在对象存储中。将这些数据复制到 Milvus 会使存储成本翻倍,增加一条必须保持同步的 ETL 管道,并导致数据治理权从客户手中转移。

外部 Collection 功能消除了数据复制的需求。Milvus Collection 可直接引用数据原生存储位置的文件,而 Milvus 仅负责管理 Schema、索引和查询执行。 增量刷新机制确保 Collection 与底层文件保持同步。对于数据无法离开数据湖的客户(如金融和医疗团队),可在数据原地运行向量检索。单个驻留于数据湖的数据集也可同时由多个 Milvus 实例提供服务。

如需了解更多信息,请参阅《创建外部Collection》

快照

服务和批量发现通常需要同时访问同一个 Collection。A/B 模型评估、大规模去重、回填验证以及版本回滚,在写入操作仍在进行时,都需要 Collection 的稳定视图。

快照通过引用现有分段(而非复制数据)来创建 Collection 的某个时间点的只读视图,因此边际存储成本接近于零。在 MVCC 风格的隔离机制下,批处理任务可以从快照中读取数据,而实时 Collection 则继续接受写入操作。

有关更多信息,请参阅“快照”“管理快照”和“快照用例”

查询/搜索排序

搜索和查询现支持多字段排序,排序操作已下推至Milvus内核,且可针对每个字段分别设置ASCDESC 参数。这弥补了生产环境中常见的缺陷:当最相似的项目并非最便宜、最新或最受欢迎时,仅基于距离的Top-K排序往往无法满足业务需求。

应用程序不再需要过度检索结果并在客户端重新排序来实现复合排名。

有关更多信息,请参阅《按标量字段排序搜索结果》和《排序查询结果》。

查询聚合

过去,要从 Milvus Collection 中生成租户分布统计、字段完整性计数或版本发布进度,必须将匹配的实体拉回客户端并在那里进行聚合。 Milvus 3.0 将 SQL 风格的标量聚合推入内核。查询调用支持 `group_by_fields ` 以及 `output_fields` 中的聚合表达式,包括 `count(*)`、`count(<field>)`、`sum(<field>)`、`avg(<field>)`、`min(<field>)` 和 `max(<field>)`。聚合在过滤后于服务器端进行评估。

有关更多信息,请参阅“聚合查询结果”。

空向量

Embeddings通常是异步生成的,因此实体可能在其向量到达之前就已出现。 多模态数据本身也存在天然缺失,例如没有字幕的视频或没有图片的产品。早期版本对此没有理想的解决方案:应用程序要么延迟写入直到向量准备就绪,要么填入占位符向量,这两种选择都会影响检索质量。

Milvus 3.0 支持在所有六种向量类型的向量字段中使用 NULL。搜索会自动跳过 NULL 向量,检索质量不受影响,且 NULL 向量实际上不占用存储空间。AddField 功能也扩展到了此次变更涉及的向量字段:通过 `nullable=True`,现有 Collection 可在不重建的情况下在线扩展新的向量字段。

有关更多信息,请参阅《可为空字段》。

自定义词典与同义词词典

开箱即用的分词器并不总能满足生产环境的搜索质量要求。中文、医学、法律和化学等垂直领域,以及多语言语料库,均可从自定义词典和同义词表中获益匪浅。此前,这些资源主要以应用程序侧的查询重写形式存在。

Milvus 3.0 引入了 FileResource 机制,用于注册自定义分词器词典、同义词表、停用词表以及复合词拆分规则。 资源注册后,可在任何分词器或过滤器中引用,并适用于 BM25、分析器和文本匹配功能。词典和同义词现可进行版本控制并集中管理,无需分散在应用程序代码中。

有关更多信息,请参阅《管理文件资源》。

实体 TTL

对于许多生命周期和合规性场景而言,Collection 级和分区级的 TTL 过于粗放。同一 Collection 内的不同租户通常具有不同的保留规则,且单个实体的过期时间表可能需要与 Collection 中的其他实体不一致。

Milvus 3.0 支持按实体设置 TTL。在 Schema 中声明一个TIMESTAMPTZ 字段,通过 Collection 属性将其标记为 TTL 字段,Milvus 便会自动回收已过期的实体。这涵盖了“被遗忘权”请求、过期的会话数据以及有限的对话历史记录,且无需应用程序端进行清理。

有关更多信息,请参阅《设置实体级 TTL》。

MinHash DIDO(文档输入、文档输出)

Milvus 2.6 添加了用于集合式近似重复检测的MINHASH_LSH 索引,但应用程序在将数据写入 Milvus 之前仍需计算 MinHash 签名。

Milvus 3.0 引入了服务器端的 MinHash 函数。在 Schema 中声明一个VARCHAR 输入字段和一个BINARY_VECTOR 输出字段,并关联一个FunctionType.MINHASH 函数,Milvus 便会在插入、批量插入和搜索过程中自动计算签名。结合MINHASH_LSH ,这支持 Milvus 内部针对大型数据集的去重工作流、指纹识别以及抄袭检测。

有关更多信息,请参阅MinHash 函数

EmbList + DISKANN

“一个实体 = 一个向量”的假设已不再适用于现代检索。长文档会被拆分为多个片段,ColBERT 等晚期交互模型会为每个令牌生成一个向量,而多模态实体可能包含多种视图。

EmbList 为每个实体存储一个可变长度的向量列表,并以DISKANN 作为磁盘索引。当语料库规模超过内存预算时,该磁盘路径可有效控制内存占用。EmbList +DISKANN 是本次RC版本中更广泛的StructList家族的首个变体。 该家族的其余部分,包括 StructList 过滤以及 Muvera / Lemur 多向量加速功能,计划在 3.0 正式版中发布。

更多信息请参阅《使用Embeddings列表进行搜索》。

强制合并

生产环境中的工作负载会随着时间推移积累分段碎片,从而导致查询延迟波动和存储空间膨胀。

Milvus 3.0 增加了在非高峰时段显式触发分段压缩的功能,支持同步和异步两种模式。

有关更多信息,请参阅《强制合并压缩》。

Storage V3

Milvus 3.0 推出了 Storage V3,这是一种基于清单的列式存储引擎,其数据和元数据存储在兼容 S3 的对象存储中。每个数据集版本都被捕获为一个不可变的清单快照——这是一个 Avro 编码文件,记录了构成该数据集的列组、增量日志和统计信息。

清单是紧凑的 Avro 文件,增量日志记录实体级别的删除操作,而无需重写数据文件。这确保了随着数据集的增长,元数据开销保持在较低水平。此外,清单还将元数据追踪与查询路径解耦,使 Collection 能够管理更多分段,同时不会降低查询性能。

由于状态存储在对象存储中,数据集具有自描述性:任何能够访问存储路径的读取者,无需中央目录即可发现并解析数据集。这一特性为外部Collection、快照以及未来的湖存储集成提供了基础。

翻译自DeepL

想要更快、更简单、更好用的 Milvus SaaS服务 ?

Zilliz Cloud是基于Milvus的全托管向量数据库,拥有更高性能,更易扩展,以及卓越性价比

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?