基于Milvus的向量搜索实践(一)

2020 年 12 月 5 日 AINLP

摘要:本系列文章分为三部分,第一部分主要讲基本概念、背景、选型及服务的整体架构;第二部分主要讲针对低延时、高吞吐需求,我们对Milvus部署方式的一种定制;第三部分主要讲实现数据更新、保证数据一致性,以及保证服务稳定及提高资源利用率做的一些事情。

1.名词解释

Milvus[1]:一种基于Faiss[5],NMSLIB[6] 和 Annoy[7]的相似特征向量搜索引擎。

向量:即特征向量,是对客观世界物体特征的数值表示;比如我们用RGB(红绿蓝)三元色来表示物体的颜色,那么对于一个像素点,我们可以用数组[255,255,255]表示白色,用数组[0,0,0]表示黑色,这里[255,255,255]、[0,0,0]可以认为是物体该像素点的特征向量。

向量搜索:也叫最邻近搜索,是指按照一定的相似/距离算法[9-12],从指定集合中搜索(计算)出与输入的某个向量最相似的N个向量(即topN)。

2.背景

随着计算机技术及机器学习技术的发展,特征向量作为一种对多媒体数据(复杂文本、语音、图片)的描述方式,逐渐成熟起来,而向量搜索(向量相似计算)也逐渐成为一种通用的需求。

近些年,贝壳找房业务迅猛发展,在搜索、推荐、图谱、智能客服等业务场景下,对向量搜索提出了比较强的需求。

面对多业务的需求,结合对业界已有工具的调研,最终选择了milvus做为底层引擎,建设了一个通用的向量搜索平台,以解决向量相似计算这个共性的问题。

3. 技术选型

在技术选型阶段,我们调研了业界已经比较成熟的工具,如facebook的faiss[5]、微软的SPTAG[8],以及国内发起的开源项目Vearch[13],Milvus[1]。具体对比见表1,2。

Vearch和Milvus属于同类型产品,对比faiss和SPTAG的优势在于,后两者为开发库,不能开箱即用,在生产环境中使用涉及更多的开发、维护成本。Milvus和Vearch是两款基于现有的开发库,开箱即用的应用,在实现基本的相似计算功能的基础上,围绕服务整体易用性、部署、稳定性等方面做了更多工作。另外,Milvus对比Vearch,在社区活跃度、支持度上具有更明显的优势。基于以上的调研,综合考虑各方面的成本,我们选择Milvus作为底层引擎。

表1:Milvus对比FAISS、SPTAG [3]
表2:Milvus对比Vearch(2019.11数据)

4. Milvus引擎简介

如图1所示,Milvus基于Faiss、Annoy等比较成熟的开源库,并针对性做了定制,支持结构化查询、多模查询等业界比较急需的功能;Milvus支持cpu、gpu、arm等多种类型的处理器;同时使用mysql存储元数据,并且在共享存储的支持下,Milvus可以支持分布式部署。

图1 Milvus架构 [1]

5.服务整体架构

图2 服务整体架构

如图2所示,整体架构分三层,网关层、应用层和引擎层。

网关层:主要负责服务整体的访问控制和监控报警,并对外暴露api,属于应用的通用能力,这里不详细讲。

应用层:应用层的定位是面向使用方,提供通用的向量搜索能力,同时屏蔽掉底层引擎的细节;应用层主要分为读模块、写模块以及管理模块。写模块定位是数据更新,抽象出了一组通用的写入api,以实现对数据的更新,并保证数据更新的一致性。读模块定位是支撑向量搜索,适配用户的查询请求,转换成具体引擎的查询,最后把结果转换成通用格式;读模块借助读缓存,来提高有重复查询请求时的整体吞吐量。我们使用ID映射模块来完成业务id和引擎id的内部转换,为通用读/写做支撑。另外,我们使用集群管理模块来实现集群的创建、配置更新以及状态的监控。

引擎层:引擎层基于docker+kubernetes,实现了Milvus引擎的部署、服务发现、数据存储以及资源的管理。

6.参考文献

  1. https://github.com/milvus-io/milvus
  2. https://github.com/milvus-io/milvus/tree/0.11.1/shards
  3. https://github.com/milvus-io/docs/blob/master/v0.6.0/site/en/reference/comparison.md
  4. https://milvus.io/docs/v0.11.0/vector.md
  5. https://github.com/facebookresearch/faiss
  6. https://github.com/nmslib/nmslib
  7. https://github.com/spotify/annoy
  8. https://github.com/microsoft/SPTAG
  9. https://en.wikipedia.org/wiki/Euclidean_distance
  10. https://en.wikipedia.org/wiki/Taxicab_geometry
  11. https://en.wikipedia.org/wiki/Hamming_distance
  12. https://en.wikipedia.org/wiki/Minkowski_distance
  13. https://github.com/vearch/vearch

作者简介

下期精彩

Milvus的向量搜索实践(二):Milvus项目在调研、实施以及最终上线使用过程中,遇到的问题。

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

欢迎加入推荐系统交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注推荐系统

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏


登录查看更多
3

相关内容

基于改进卷积神经网络的短文本分类模型
专知会员服务
25+阅读 · 2020年7月22日
基于多头注意力胶囊网络的文本分类模型
专知会员服务
77+阅读 · 2020年5月24日
基于MySQL Binlog的Elasticsearch数据同步实践
DBAplus社群
15+阅读 · 2019年9月3日
相似词查询:玩转腾讯 AI Lab 中文词向量
AINLP
11+阅读 · 2019年2月25日
福利 | 实践入门NLP:基于深度学习的自然语言处理
AI科技评论
9+阅读 · 2018年1月23日
实践入门NLP:基于深度学习的自然语言处理
雷锋网
10+阅读 · 2018年1月22日
基于 word2vec 和 CNN 的文本分类 :综述 & 实践
【知识图谱】大规模知识图谱的构建、推理及应用
产业智能官
37+阅读 · 2017年9月12日
Spark机器学习:矩阵及推荐算法
LibRec智能推荐
16+阅读 · 2017年8月3日
RNN | RNN实践指南(2)
KingsGarden
19+阅读 · 2017年5月4日
Fast AutoAugment
Arxiv
5+阅读 · 2019年5月1日
Arxiv
14+阅读 · 2018年4月18日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关资讯
基于MySQL Binlog的Elasticsearch数据同步实践
DBAplus社群
15+阅读 · 2019年9月3日
相似词查询:玩转腾讯 AI Lab 中文词向量
AINLP
11+阅读 · 2019年2月25日
福利 | 实践入门NLP:基于深度学习的自然语言处理
AI科技评论
9+阅读 · 2018年1月23日
实践入门NLP:基于深度学习的自然语言处理
雷锋网
10+阅读 · 2018年1月22日
基于 word2vec 和 CNN 的文本分类 :综述 & 实践
【知识图谱】大规模知识图谱的构建、推理及应用
产业智能官
37+阅读 · 2017年9月12日
Spark机器学习:矩阵及推荐算法
LibRec智能推荐
16+阅读 · 2017年8月3日
RNN | RNN实践指南(2)
KingsGarden
19+阅读 · 2017年5月4日
Top
微信扫码咨询专知VIP会员