前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >门槛一降再降,易用性大幅提升!Milvus 2.2.12 持续升级中

门槛一降再降,易用性大幅提升!Milvus 2.2.12 持续升级中

作者头像
Zilliz RDS
发布2023-08-25 09:02:34
3540
发布2023-08-25 09:02:34
举报
文章被收录于专栏:Reinvent Data Science
Milvus 又迎版本升级,三大新特性全力加持,易用性再上新台阶!

近期,Milvus 上线了 2.2.12 版本,此次更新不仅一次性增加了支持 Restful API、召回原始向量、json_contains 函数这三大特性,还优化了 standalone 模式下的 CPU 使用、查询链路等性能,用一句话总结就是:低门槛、高可用、强性能

01.

New Features

  • Restful API

为了进一步降低使用 Milvus 的门槛、提升用户体验,在 2.2.12 版本中 Milvus 支持了 Restful API,用户无需安装客户端,通过 Restful API 即可完成对接。用户在部署 Milvus 时无需占用额外端口,SDK 和 Restful 同时使用 19530 端口。

相比于使用 SDK,Restful 在易用性上更有优势,但高级的运维接口仍需使用 SDK。同时,如果你是延迟敏感型业务,我们也建议使用 SDK。

具体的 Restful API 详见:https://milvus.io/api-reference/restful/v2.2.x/About.md

  • 召回原始向量

在 Milvus 2.2.12 版本以前,出于对性能及优化内存的角度考虑,用户进行 search 时不支持返回原始向量。很多召回原始向量的场景不得不将查询拆成两步来执行:用户需要先进行 ANN search 向量id,再根据 id query 原始向量。这不仅增加了用户的学习和开发成本,对 Milvus 来讲也无法达到节约资源的效果。

有了 Milvus 2.2.12,用户可以直接在 ANN search 时返回原始向量,无需额外的操作步骤,省时又省力。

  • 支持 json_contains

如大家所知,在 Milvus 2.2.8 支持 JSON 类型之后,我们立刻收到了大量的用户反馈,其中呼声最高的就是支持 JSON 数组的各种运算,包括包含、不包含、交集、并集、差集等等。不同的算子实现难度各有不同,在 2.2.12 版本中,我们优先支持了 json_contains 函数来支持包含算子,其他的算子会在后续版本中陆续支持。

02.

Enhancements

除了新增的三大特性,我们还对部分性能进行了优化:

  • #25238

优化 standalone 模式下的 CPU 使用。在 standalone 模式下,不少用户反馈系统空载情况下也会有很高的 CPU 占用,经过长期的排查,我们发现了几个问题:

rocksdb 的参数使用不当会触发很多无意义的 compaction 以及磁盘 IO;

迭代器使用不当频繁访问同一前缀的数据。

为此,我们重新梳理了 rocksdb 的参数使用,同时开启了 level 2 以上的 zstd 压缩减少磁盘使用量。

  • #25402

支持 varchar 类型的主键使用主键索引。由于之前的系统限制,主键是 varchar 类型时无法命中索引,导致性能不佳,经过修复后此场景能够提升 10 倍以上效率。

  • #25192

优化查询链路,跳过无必要的 reduce 步骤。通过 tracing 等手段排查,发现在 reduce 阶段有可能会耗费大量时间甚至超过向量搜索时间,尤其是在大 NQ 的场景中。此次优化效果显著,在部分场景中能有 4 倍以上的性能提升。

  • #25772

解决单机多 CPU 场景下 CPU 利用率低的问题。我们新增了 queryNode.minCPUParallelTaskNumRatio=4 参数,通过调整此参数,可以调整单机的并行度。

值得注意的是:需要结合具体的业务场景经过测试、微调才能得到一个比较好的并发参数,如果不确认最好保持默认值。通过参数控制是 2.2 系列的临时方案,在 2.3 系列中会增加更智能的并发控制逻辑。

03.

Bugfix

#25470 #25510 修复 Milvus 占用过多 MinIO 的问题。产生很多 MinIO 文件是因为 Milvus 的 compaction 机制过于频繁以及垃圾清理机制比较保守,这会在 MinIO 中累积大量的过期文件,在新版本中我们调整了这些策略,节约用户的存储资源。

#25757 #24858 #25369 #25513 修复删除数据后还能被查询到的问题。产生此问题的原因较为复杂,有兴趣的同学可以参考 PR 的内容。

#25181 #25194 #25107 #25305 修复了很多对象存储相关的问题。在 2.2.8 之后,我们引入了 aws-sdk-cpp 读取对象存储,遇到了不少问题。此次更新修复了很多由此带来的 bug,包括增加了错误码、修复线程创建失败问题、在 MacOS 环境无法读取文件的问题。

#25809 #25758 修复 bulk-insert 的问题。越来越多的用户在生产环境中部署 Milvus,在冷启动阶段批量导入功能至关重要,此次更新修了大量 bulk-insert 的 bug,提升了批量导入的稳定性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZILLIZ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档