Milvus 上新:支持上万个 Collection、新增 Accesslog 功能……

2024 年开年,Milvus 好消息不断。除了收获 Github 25,000 颗星的成就,Milvus 也发布了新年的第一个版本—— 2.3.4。

此次发版的主要目的是为用户提供一个高扩展性且更易用的 Milvus 版本。为此,Milvus 新增了许多易用性功能,比如:可追踪外部接口调用的 accesslog;对 parquet 数据格式的导入做了支持;引入了更清晰的错误消息;更快的加载速度以及更好的查询分片平衡能力。在扩展性方面,团队通过对内部处理逻辑进行优化以及对内存使用效率的提升,使得 Milvus 集群目前可支持多达 10,000 个 Collection,可以满足大数据量和多租户场景下的要求。

以下将对这些主要特性和重点优化进行解释说明:

支持上万的 Collection/Partition 数量

Collection/Partition 是 Milvus 管理逻辑集合的主要单元,类似关系型数据库里 Table/Partition 的概念。虽然理论上 Milvus 能支持 65,536 个 Collection,但在实际使用中,随着 Collection 数量的增加,系统内部的开销会变大,一些资源可能会存在瓶颈,比如用于写入的 kafka topic 数量,以及 time tick 带来的 CPU 开销等。

因此 Collection 的实际数量限制和硬件规格以及负载有关,小于理论值。在某些场景下,用户希望尽可能多支持的 Collection,比如:知识库场景下用户希望用不同的 Collection 存储不同的主题或信息来源的数据;有的用户将 Milvus 作为数据中台并以 Collection 粒度对外提供多租户的能力……这些都对 Collection 数量提出了更高的需求。在这个版本里,我们针对系统做了大量优化和测试工作,将 Collection 的数量限制提升了一个档次,从之前的 4096 提升到目前可以稳定支持上万 Collection,该能力已经能满足大多知识库和多租户的场景需求。

新增访问日志 Access log 功能

Milvus 的访问日志功能允许服务端记录接口调用的详细信息,每一次用户通过 gRPC 发起的请求都会被记录下来,这有助于监控系统状态和追踪可能出现的问题。通过这一功能,用户可以进行:

  • 安全审计:通过访问日志来检查历史数据访问的合法性和安全性。

  • 错误排查:当出现问题时,利用日志可以快速查看报错信息,并了解接口调用的上下文,帮助定位和解决问题。

  • 性能分析:通过监控响应时间,用户可以识别异常查询和优化慢查询,提升整体性能。

目前,访问日志只记录通过 gRPC 协议调用的各类接口请求,RESTful API 请求的访问日志将在后续版本进行支持。相关使用请见(https://milvus.io/docs/configure_access_logs.md)。

数据导入支持 Parquet 格式

Parquet 是一种广泛使用的列式存储格式,能高效处理大批量数据,尤其广泛应用在数据分析和机器学习领域。通过支持 Parquet 格式的数据导入,我们为用户提供了更加灵活和高效的数据处理能力。

对于正在使用 Parquet 格式存储和处理大规模数据集的用户来说,这意味着现在可以无缝地将其数据集成到 Milvus 的向量数据库中,而无需进行繁琐的数据格式转换。这不仅简化了数据的导入过程,还大大缩短了从数据准备到向量检索的时间。同时 Milvus 的数据格式转换工具 BulkWriter 也将支持 Parquet 格式并作为其默认输出格式。

兼容性变更

为了减少资源消耗,新版本 Milvus 默认关闭了在 Search/Query 接口中对 Partition Names 参数做正则表达式的支持。但是,用户依旧可以通过配置 proxy.partitionNameRegexp 重新启用此功能。

各类优化

此外,Milvus 2.3.4 还进行了各式优化,包括:

  • 提升数据检索和可变长度数据处理的内存效率,这将帮助系统更稳定的运行;

  • 将错误信息以总分(Summary & Details)方式组织,使得 Error message 更易读;

  • 完善 RBAC 功能,支持自定义 built-in role,新增对 Partition 级别的权限管理;

  • interimIndex 开关额外支持构建 Binlog Index 临时索引以优化持续写入场景下分布式集群上做并发查询的性能。

回顾过去的半年,Milvus 一直保持着高效的迭代速度,大版本也从 2.2 升级到了 2.3,新增了不少功能。发版方面,对于小版本,我们一般着眼于提升稳定性和易用性,让用户用的省心安心;而在大版本上,一方面,我们会贴合用户使用场景,另一方面会紧跟技术前沿保持创新,发布一批全新的功能。

这里提前做一个预告,Milvus 的下一个大版本 2.4 正在路上,届时会发布一批重磅功能,包括但不限于:多向量多模态的支持 Multi-Vectors、稀疏向量 Sparse Embedding、分类聚合 Group By、倒排索引 Inverted Index、数据迁移容灾工具 CDC 等……敬请期待!

本文由 mdnice 多平台发布