Milvus 2.2 版本发布!

2023-01-10 14:34:49 浏览数 (3)

经过了 4 个月的打磨,Milvus 2.2.0 于 11 月 18 日正式发版!2.2 版本推出了包括基于磁盘的近似最近邻(ANN)索引算法、从文件批量导入数据、基于角色的访问控制等新特性。进一步提升了向量搜索的稳定性、搜索速度和灵活的扩缩容能力。

Milvus 版本

Python SDK 版本

Java SDK 版本

Go SDK 版本

Node.js SDK 版本

2.2.0

2.2.0

2.2.0

Coming soon

2.2.0

新特性

  • 从文件中批量导入数据

Milvus 提供了一系列新的 API,用于支持从文件中更有效率地批量导入数据。现在您可以将存放于 Minio 或 S3 上的任意 JSON 文件中的数据直接导入 Milvus。请阅读从文件中导入数据章节[1]获取更多信息。

  • 搜索结果分页

为了避免单个 RPC 会话返回过多的搜索结果,Milvus 现已支持通过设置偏移量(offset)和关键词的方式减少返回的搜索结果数量。请阅读搜索[2]查询[3]章节获取更多信息。

  • 基于角色的访问控制(RBAC)

与其它传统的数据库类似,Milvus 现已支持 RBAC。您可以通过管理用户、角色和权限实现对 Milvus 数据库的访问控制。请阅读启用 RBAC [4]章节获取更多信息。

  • 配额和限制

配额是 Milvus 用来保护系统在流量突发时免受内存溢出(OOM)和崩溃困扰的新机制。通过该机制,您可以控制数据插入、搜索速率和内存使用。请阅读配置配额和限制[5]章节获取更多信息。

  • 集合生存时间(TTL)

在之前的版本中,Milvus 仅支持设置集群层级的 TTL。Milvus 现已支持在创建或修改集合时设置该集合的 TTL。在设置了 TTL 的集合中的数据会在 TTL 结束后到期。请阅读创建集合[6]修改集合[7]章节获取更多的信息。

  • 基于磁盘的近似近邻搜索索引(Beta)

在传统近似近邻搜索索引算法中,您需要将索引加载到内存中才能对其进行搜索。Milvus 现已支持 DiskANN,用于实现基于磁盘的大规模数据集索引能力。DiskANN 是一种基于 Vamana 图像对常驻固态磁盘的数据集进行近似近邻搜索的索引算法。使用该算法可节省大约 10 倍的内存使用量。请阅读磁盘索引[8]章节获取更多信息。

  • 数据备份工具(Beta)

Zilliz Inc. 向 Milvus 社区贡献了数据备份恢复工具。Milvus 2.2.0 现已支持使用命令行和调用 API 的方式实现数据库备份和恢复能力。

问题修复与系统稳定性增强

  • 实现了 Query Coord v2,支持完全基于事件的异步分片放置策略。该版本解决了所有搜索阻塞的问题并提升了故障恢复效率。
  • 重构了 Root Coord 和 Index Coord,提供更加优雅的问题处理能力和更好的任务编排能力。
  • 修复了当 Milvus Standalone 版本重启时出现的 RocksMQ 数据保留机制不合法的问题。
  • 重构了 etcd 中 Metadata 的存储机制。通过使用新的压缩机制,etcd 中的键值对体积减少了 10 倍以上,从而解决了 etcd 内存和存储使用量大的问题。
  • 解决了持续插入或删除集合实体引发的内存使用问题。

能力提升

  • 性能提升
    • 解决了 CPU 核数较多时无法充分使用的性能瓶颈。Milvus 现已使用多于 8 核的 CPU,极大地提升了效率。
    • 提升了搜索并发量,大幅降低了搜索时延。
    • 通过并行加载的方式,进一步降低了加载耗时。
  • 可观察性
    • 所有日志等级默认为 INFO。
    • 增加集合级别的时延指标,包括搜索、查询、插入、删除等。
  • 调试工具
    • Milvus 进一步优化了 BirdWatcher[9] 调试工具。该工具现已支持连接 Metadata 存储并检查 Milvus 部分系统内部状态。

其它

  • 索引和数据加载
    • 没有建立索引的集合无法加载。
    • 集合加载后不能再创建索引。
    • 集合释放后才能删除索引。
  • Flush
    • 提供 Flush API,用于对数据段进行密封并将其同步到对象存储中。频繁调用 Flush API 可能会产生过多体积较小的数据段,影响搜索性能。
    • 调用num_entities()create_index()不会自动调用 Flush API。
  • 时间旅行
    • Milvus 2.2 默认关闭时间旅行功能以节省磁盘使用量。如需开启该功能,您需要在配置文件中手动配置common.retentionDuration配置项。

不兼容变更

由于 Metadata 存储优化及 API 归一化的影响,Milvus 2.2 与之前发布的版本并不完全兼容。请阅读升级文档[10]获取如何安全地将 Milvus 2.1.x 升级到 2.2.0 的方法。

参考资料

[1]

从文件中导入数据章节: https://milvus.io/docs/v2.2.x/bulk_load.md

[2]

搜索: https://milvus.io/docs/v2.2.x/search.md

[3]

查询: https://milvus.io/docs/v2.2.x/query.md

[4]

启用 RBAC : https://milvus.io/docs/v2.2.x/rbac.md

[5]

配置配额和限制: https://milvus.io/docs/v2.2.x/configure_quota_limits.md

[6]

创建集合: https://milvus.io/docs/v2.2.x/create_collection.md

[7]

修改集合: https://milvus.io/docs/v2.2.x/modify_collection.md

[8]

磁盘索引: https://milvus.io/docs/v2.2.x/disk_index.md

[9]

BirdWatcher: https://github.com/milvus-io/birdwatcher

[10]

升级文档: https://milvus.io/docs/v2.2.x/upgrade_milvus_cluster-helm.md

1 人点赞