Milvus v0.6.0 新功能介绍

**版本兼容**

| Milvus 版本 | pymilvus 版本 | Java SDK 版本 |

| ----------- | ------------- | ------------- |

| 0.6.0       | 0.2.6         | 0.4.0         |

## 发布时间:2019-12-07

### 新增功能

- **仅支持 CPU 的 Milvus**

  在之前的版本,我们只提供了 GPU 版本的 Milvus。为了降低用户使用门槛,从 v0.6.0 开始,Milvus 提供仅支持 CPU 和支持 GPU 两个版本的 Docker 镜像。CPU 版适合百万级数据的查询,镜像下载地址:milvusdb/milvus:cpu-latest,而GPU 版在超大数据集搜索情况下性能优势更明显,镜像下载地址:milvusdb/milvus:latest。具体安装步骤请参阅[安装 Milvus](https://www.milvus.io/docs/zh-CN/userguide/install_milvus/)。

  您也可以源码编译,但考虑到编译环境复杂多变,有可能会增加编译困难,我们在新版本提供了 Ubuntu 18.04 的 Docker 镜像,便于大家直接在 Docker 容器中编译 Milvus,具体步骤请参阅[源码编译 Milvus](https://github.com/milvus-io/milvus/blob/master/install.md)。[#192](https://github.com/milvus-io/milvus/pull/192)

- **分区表**

  

扫描二维码关注公众号,回复: 9177697 查看本文章

  随着单张表的数据量不断增长,查询性能也会不断下降。单张表的数据变得很臃肿的时候,就要考虑将这张表拆分。v0.6.0 新增了分区表功能以确保增量数据的高性能查询。Milvus 的表基于标签分区,通过定义 `partition_tag`,您可以指定某张分区表,每张分区表的索引继承自母表。Python,Java 和 C++ SDK 中也分别增加了表分区功能的相关接口,目前支持创建/删除分区表,向量插入指定分区表,查看指定分区表,以及指定分区表的查询。[#245](https://github.com/milvus-io/milvus/pull/245)

  

- **实验功能**

  v0.6.0还推出了一些实验功能,代表了 Milvus 未来版本可能发展的方向。这些实验功能仍在持续开发和更新中,可能包含已知问题和未发现的错误。现阶段这些功能主要用于测试和用户反馈收集,欢迎大家积极试用。

  - **Mishards**

  

    Milvus 旨在帮助用户实现海量非结构化数据的近似检索和分析。单个 Milvus 实例可处理十亿级数据规模,而对于百亿或者千亿级数据,则需要一个 Milvus 集群实例。v0.6.0 推出的 Mishards 正是 Milvus 集群分片处理的中间件,主要负责将上游请求拆分,并路由到内部各细分子服务,最后将子服务结果汇总,返回给上游。Mishards 内部处理请求转发、读写分离、水平扩展、动态扩容,为用户提供内存和算力可以无限扩容的 Milvus 集群实例。[#232](https://github.com/milvus-io/milvus/pull/232/files)

  

  - **新的索引类型**

    支持新的索引类型如 `SPTAG`,`NSG` 和 `IVFPQ`。Milvus 集成了微软的算法库,进而支持 `SPTAG`, 该索引具体介绍请参阅[微软官方链接](https://github.com/Microsoft/SPTAG)。[#438](https://github.com/milvus-io/milvus/pull/438) [#324](https://github.com/milvus-io/milvus/pull/324) 

- **Milvus 性能测试报告**

  Milvus 支持多种类型的索引,各个索引的查询性能会随着数据集和调参的变化而改变。新版本提供了针对 `IVFFLAT`, `IVFSQ8` 和 `IVFSQ8H` 的[性能测试报告](https://github.com/milvus-io/milvus/tree/master/docs)。随着 Milvus 支持的索引类型不断增加,测试报告也会持续更新。

  

### 主要改进

- **Milvus 优化过的 FAISS**

  在原有 FAISS 的基础上, Milvus 做了一些深层代码的优化以获得更优的查询性能和支持更多类型的索引类型,比如 `IVFSQ8H`。现在,我们将这部分针对 FAISS 进行优化的代码开源了。[#585](https://github.com/milvus-io/milvus/pull/585)

  

- **多张 GPU 创建索引**

  支持使用多张 GPU 来创建索引以减少创建索引和整体查询的时间。在使用支持 GPU 的 Milvus 时,您可以通过对 Milvus 配置文件中的参数 `build_index_resources` 来指定多张 GPU 卡用于索引创建。[#414](https://github.com/milvus-io/milvus/pull/414)

  

### Bug 修复

进一步解决了随查询次数增加,内存占用持续增加的问题。[#335](https://github.com/milvus-io/milvus/pull/335)

版本兼容

Milvus 版本

pymilvus 版本

Java SDK 版本

0.6.0

0.2.6

0.4.0

发布时间:2019-12-07

✨ 新增功能

- 仅需 CPU 的 Milvus

在之前的版本,我们只提供了 GPU 版本的 Milvus。为了降低用户使用门槛,从 v0.6.0 开始,Milvus 提供仅需 CPU 和支持 GPU 两个版本的 Docker 镜像。CPU 版适合百万级数据的查询,而 GPU 版在超大数据集搜索情况下性能优势更明显。

您也可以源码编译,但考虑到编译环境复杂多变,有可能会增加编译困难,我们在新版本提供了 Ubuntu 18.04 的 Docker 镜像,便于大家直接在 Docker 容器中编译 Milvus。

更多信息,请参阅 PR#192: https://github.com/milvus-io/milvus/pull/192

Milvus 安装步骤: https://www.milvus.io/docs/zh-CN/userguide/install_milvus/

CPU 版镜像下载:milvusdb/milvus:cpu-latest

GPU 版镜像下载:milvusdb/milvus:latest

- 分区表

随着单张表的数据量不断增长,查询性能也会不断下降。单张表的数据变得很臃肿的时候,就要考虑将这张表拆分。v0.6.0 新增了分区表功能以确保增量数据的高性能查询。Milvus 的表基于标签分区,通过定义 partition_tag,您可以指定某张分区表,每张分区表的索引继承自母表。Python,Java 和 C++ SDK 中也分别增加了表分区功能的相关接口,目前支持创建/删除分区表,向量插入指定分区表,查看指定分区表,以及指定分区表的查询。

更多信息,请参阅 PR#245: https://github.com/milvus-io/milvus/pull/245

- 实验功能

v0.6.0还推出了一些实验功能,代表了 Milvus 未来版本可能发展的方向。这些实验功能仍在持续开发和更新中,可能包含已知问题和未发现的错误。现阶段这些功能主要用于测试和用户反馈收集,欢迎大家积极试用。

Mishards

Milvus 旨在帮助用户实现海量非结构化数据的近似检索和分析。单个 Milvus 实例可处理十亿级数据规模,而对于百亿或者千亿级数据,则需要一个 Milvus 集群实例。v0.6.0 推出的 Mishards 正是 Milvus 集群分片处理的中间件,主要负责将上游请求拆分,并路由到内部各细分子服务,最后将子服务结果汇总,返回给上游。Mishards 内部处理请求转发、读写分离、水平扩展、动态扩容,为用户提供内存和算力可以无限扩容的 Milvus 集群实例。

更多信息,请参阅PR#232: https://github.com/milvus-io/milvus/pull/232

新的索引类型

支持新的索引类型如 SPTAG-KDTSPTAG-BKT, RNSGIVFPQ。Milvus 集成了微软的 SPTAG 算法库,包含两种索引类型。RNSG 是 Milvus 在 NSG 基础上自研的基于图的索引算法,它可以 a) 降低图的平均出度;b) 缩短搜索路径;c) 缩减索引大小;d) 降低索引复杂度。IVF_PQ是在倒排索引的基础上进一步利用笛卡儿积(PQ)对每一个倒排文件中的向量进行编码的索引技术。这样的方法称之为非对称距离计算。向量大小可以缩减至原来大小的1/8甚至1/16。该索引方式虽然会损失精度,但内存占用会进一步下降,适用于低内存环境下的大规模向量搜索。

目前看来,这几种新的索引类型的搜索性能表现并不令人满意,具体原因还有待进一步发掘,也欢迎感兴趣的小伙伴一起加入研究讨论。

更多信息,请参阅 SPTAG-PR#438: https://github.com/milvus-io/milvus/pull/438

RNSG-PR#554: https://github.com/milvus-io/milvus/pull/554

IVFPQ-PR#324: https://github.com/milvus-io/milvus/pull/324

SPTAG 索引介绍: https://github.com/Microsoft/SPTAG

NSG 索引论文: https://arxiv.org/abs/1707.00143

- Milvus 性能测试报告

Milvus 支持多种类型的索引,各个索引的查询性能会随着数据集和调参的变化而改变。新版本提供了针对 IVFFLAT, IVFSQ8IVFSQ8H 的性能测试报告。随着 Milvus 支持的索引类型不断增加,测试报告也会持续更新。

具体性能测试报告,请参阅索引性能测试: https://github.com/milvus-io/milvus/tree/master/docs

✨ 主要改进

- Milvus 优化过的 FAISS

在原有 FAISS 的基础上, Milvus 做了一些深层代码的优化以获得更优的查询性能和支持更多类型的索引类型,比如 IVFSQ8H。现在,我们将这部分针对 FAISS 进行优化的代码开源了。

更多信息,请参阅PR#585: https://github.com/milvus-io/milvus/pull/585

- 多张 GPU 创建索引

支持使用多张 GPU 来创建索引以减少创建索引和整体查询的时间。在使用支持 GPU 的 Milvus 时,您可以通过对 Milvus 配置文件中的参数 build_index_resources 来指定多张 GPU 卡用于索引创建。

更多信息,请参阅 PR#414: https://github.com/milvus-io/milvus/pull/414

✨ Bug 修复

进一步解决了随查询次数增加,内存占用持续增加的问题。

更多信息,请参阅 PR#335: https://github.com/milvus-io/milvus/pull/335

如果还想了解 v0.6.0 更具体的更新改动,请参阅 Milvus CHANGELOG: https://github.com/milvus-io/milvus/blob/master/CHANGELOG.md

欢迎加入Milvus社区

主页: milvus.io

GitHub:github.com/milvus-io/milvus

知乎: zhuanlan.zhihu.com/milvus

Slack: milvusio.slack.com

Twitter:twitter.com/milvusio

Facebook:www.facebook.com/io.milvus.5

© 2019 ZILLIZ™

发布了19 篇原创文章 · 获赞 15 · 访问量 5249

猜你喜欢

转载自blog.csdn.net/weixin_44839084/article/details/103485510