亮点颇多、精彩程度堪比大版本的 Milvus 2.2.9 来啦!
随着 LLM 的持续火爆,众多应用开发者将目光投向了向量数据库领域,而作为开源向量数据库的领先者,Milvus 也充分吸收了大量来自社区、用户、AI 从业者的建议,把重心投入到了开发者使用体验上,以简化开发者的使用门槛。本次新版本不仅可以支持 JSON 类型,还增加了 Dynamic Schema、PartitionKey、Database 支持等,也增加了一些类似“支持用户自定义 task 调度策略”的小功能。
此外,我们也进行了部分优化,例如优化高过滤比例场景下的查询性能、减少流式数据的内存拷贝等。
总体而言,拥有诸多新特性加持的 Milvus 2.2.9 不仅满足了社区用户的迫切需求,也在一定程度上降低了用户的使用门槛,使用体验拉满!本文将带大家全方位解读 Milvus 2.2.9 的新特性,前方丰富信息量预警……
新特性
支持 JSON 类型
JSON 类型是社区中呼声最高的 feature 之一。在真实的使用场景中,大量用户会结合向量数据以及向量的元信息一起使用,例如在知识增强场景中,用户不仅仅会在 Milvus 中存储 Embedding 之后的文本,还会存储文本的一些元信息如标题、作者、创作时间等等,用户使用这些元信息最大的需求是要随着业务场景的变化灵活调整。
JSON 类型的 schemaless 特点很好地满足了用户对灵活性的需求。在 2.2.9 中用户可以写入并使用 JSON 做数据过滤,同时 Milvus 对 JSON 类型也会使用 SIMD 加速查询性能。未来,我们还会对 JSON 类型中的字段增加索引,进一步提升标量、向量混合查询的性能。
Dynamic Schema
在支持了 JSON 类型后,Milvus 可以通过简单的 SDK 封装满足用户动态 schema 的需求。2.2.9 以后的 SDK 中会增加 High Level API,在 High Level API 中会自动将动态的字段填入 collection 隐藏的 JSON 字段中。对于用户开发者来说,只需关注业务字段即可,大大降低了用户的心智负担和使用门槛。
PartitionKey
区别于 Milvus 已有的 Partition 功能,PartitionKey 功能会根据用户指定的列作为分区主键,在使用的过程中也无需使用 loadPartition、releasePartition 等 API。对于用户而言,不仅真正做到了使用简单,同时解除了现有 Partition 4096 数量的限制。
个数无上限的 PartitionKey 能够极大地复用资源,比如要开发一款面向百万级用户以上的个性化的 AI 应用,最直接的做法是每个用户单独开一套集群或开一个 collection,但这无疑是对资源的巨大浪费。而如果将所用用户的向量数据放在同一个 collection 中,势必会面临查询性能的问题,此时可以将用户 ID 作为 PartitionKey,按照用户 ID 将数据进行分区,可以在资源使用和高性能之间取得很好的平衡。
支持 Database
在 2.2.9 之前 Milvus 为了简化用户的使用,暂时隐藏了 Database,用户直接访问 Collection 即可。随着 Milvus 在越来越多的生产环境中落地,用户对于权限隔离、资源隔离等运维类需求也越来越多。在 Milvus 2.2.9 中,我们将 Database 层级暴露给用户,同时对 Database 增加了权限认证能力。值得注意的是,使用 2.2.8 及之前版本的用户升级后,原有的 collection 会被放在默认 Database 中。
支持阿里云 OSS
Milvus 作为一款云原生向量数据库,存储引擎可以很容易对接到兼容 S3 协议的对象存储上。支持阿里云的对象存储也比较容易,使用阿里云的用户在配置中将 cloudProvider 置为阿里云即可使用。
功能增强
-
支持用户自定义task调度策略;
-
支持表达式中使用单引号字符串;
-
大大降低standalone模式下磁盘使用量;
-
提升Load/Release性能。
其他优化
除了增加新特性,我们也进行了部分优化调整:
-
优化高过滤比例场景下的查询性能;
-
使用 SIMD 加速标量过滤;
-
减少流式数据的内存拷贝。
问题修复
除了新增和优化相应的特性和功能外,我们也修复了大量社区中反馈的与稳定性、业务逻辑相关的 bug:
-
修复 DiskANN 磁盘占用无法被清理的问题;
-
修复了由于无效的 Numpy 数组文件导致的批量插入 panic 问题;
-
修正了 Int8~Int32 类型的空结果集;
-
修复了在 balance 已被释放 collection 时发生的 panic;
-
解决了会话停止在失去连接后变得卡住的问题;
-
修复了获取未索引 segment 逻辑不正确导致 panic 的问题;
-
解决了配额影响下使用不存在集合时会 panic 的问题;
-
修正刷新可能过早通知完成的问题。
点击了解更多信息:https://milvus.io/docs/release_notes.md#229
- 如果在使用 Milvus 或 Zilliz 产品有任何问题,可添加小助手微信 “zilliz-tech” 加入交流群。
- 欢迎关注微信公众号“Zilliz”,了解最新资讯。
本文由mdnice多平台发布