Milvus 向量搜索引擎 0.6.0 新功能介绍

Gitee: https://gitee.com/milvus-io/milvus

发布时间:2019-12-07

版本兼容

Milvus 版本

pymilvus 版本

Java SDK 版本

0.6.0

0.2.6

0.4.0

✨ 新增功能

仅需 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-BKTRNSG 和 IVFPQ。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 支持多种类型的索引,各个索引的查询性能会随着数据集和调参的变化而改变。新版本提供了针对 IVFFLATIVFSQ8 和 IVFSQ8H 的性能测试报告。随着 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

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/112206/milvus-0-6-0-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。