【CSDN 编者按】仅仅十行代码、一台服务器便可实现十亿图库的以图搜图?还是开源的!到底是什么黑科技呢?下面带你一览高性能向量搜索引擎Milvus的前世今生。作者 | 星爵
对,你只需一台服务器,区区十行代码,就可以轻松实现十亿图库的以图搜图,响应时间仅为数百毫秒。它简单易用,区区数行代码就可以搞定海量图片搜索;它具有超高的单机性能,满足你低时延实时搜索的需求;它支持分布式和云原生扩展,随时可以应对百亿级乃至千亿级的搜索需求。这就是Milvus——超厉害的高性能向量搜索引擎Milvus。我们Milvus团队在两天前的11月5日,正式对外宣布将它在GitHub上开源了(https://github.com/milvus-io/milvus),分享给全球的开发者和AI科学家。
非结构化数据、人工智能和向量搜索
随着信息化技术的不断进步,人类正经历爆炸式的数据增长,数据种类也在发生一系列有趣的变化。自20世纪中叶电子计算机诞生以来,开发者历经了从处理结构化数据(Structured Data,整型数和浮点数等),到2000年互联网时代处理半结构化数据(Semi-structured Data,网页和日志等),再到2012年以来人工智能兴起处理非结构化数据(Unstructured Data,图片、视频、语音和文本等)的发展过程。对于每一类不同类型的数据,计算机科学家都发明了相应的索引算法来进行数据组织、检索和分析。对于结构化数据来说,常见的索引算法有Bitmap、哈希表和B树等,代表系统是Oracle和DB2为代表的关系型数据库;对于半结构化数据,常见的索引算法是倒排索引(InvertedIndex),代表系统是Solr和ElasticSearch等搜索引擎。而非结构化数据因为难以被传统计算方法和处理器进行处理与价值挖掘,长期以来都是计算机科学领域的一大难点。直到近年来通过人工智能算法处理非结构数据才有所突破。人工智能算法使用一系列的模型(如CNN、RNN、VGG和Bert等)将图片、视频、语音和文本等转换成相应的特征向量,每个特征向量由一串整型数或者浮点数构成。人工智能算法巧妙地将复杂的非结构化数据处理变成了对计算机处理器相对简单友好的向量数值运算,以图搜图、视频检索和自然语言处理等任务就变成了基于欧式距离或者余弦距离度量的向量相似度计算。
虽然向量相似度计算相对简单,但是非结构化数据(如图片、视频、语音和文字)相比于传统的结构化数据和半结构化数据,数据量庞大(总量大3个数量级以上),增长速度更快(每1KB结构化数据产生的同时,约有1GB非结构化数据产生)。海量向量相似度计算成为了人工智能算法大规模部署的一大挑战。由此,一种基于向量相似度计算的海量非结构化数据索引技术ANNS(Approximate Nearest Neighbor Search)应运而生。ANNS算法将相似的向量聚类在一起,能够缩小查询空间,减少比对计算量,从而加速海量向量检索。常用的ANNS算法有量化算法(Quantization)、树算法(Tree)、图算法(Graph)和混合算法(Tree-graph、Quantization-graph)等几类。
Milvus 高性能向量搜索引擎
Milvus使用全球领先的ANNS向量索引技术,top5查询召回率(recall)99%,入库速度超过100万条/分钟,支持异构众核处理器加速,兼容X86/GPU/ARM/Power处理器架构,今后还将增加对TPU及其他ASIC处理器的支持。Milvus单机可以在秒内完成十亿级向量搜索,多机分布式和云原生扩展方案亦能轻松满足百亿乃至千亿向量搜索的需求。Milvus采用Apache 2.0开源许可协议。
在Milvus的研发过程中,我和Milvus团队的18位贡献者深入研究了ANNS算法,阅读了大量论文和参考文献,不断调整软硬件体系结构,细心设计和调试每一个算法,针对不同处理器芯片和指令集做了大量细致的优化工作,完成了3,600多个commit、5次版本迭代和7万多行源代码。在经历了300多个日日夜夜的努力奋战后,我们终于研发成功了Milvus的第一个稳定版本0.5.1,并顺利完成了多家知名科技公司的严格测试和生产部署。然后我们第一时间将Milvus完全开源出来,希望帮助更多的开发者应对更多AI场景中的非结构化数据带来的机遇与挑战。同时我们也有一点小私心,希望能吸引到一批志同道合的开源极客,和我们一道继续开发、完善Milvus,把Milvus打造成具有全球影响力的新一代非结构化数据搜索引擎。
Milvus 的应用
Milvus具体能应用在哪些领域呢?举个例子说,某电商网站有约5000万个商品SKU,平均每个商品有来自商家展示和用户评论的20张图片,后台一共存储了10亿张商品图片。开发者用预先训练好的AI模型将10亿商品图片转换成10亿个特征向量,然后使用Milvus就能轻松实现以图搜商品功能,帮助购物者用图片搜索的方法方便地找到心仪的商品。Milvus的能力可不止于以图搜图,还适用于海量的视频、语音和文本等非结构化数据的搜索。比如说,某视频UGC网站每天有100万个短视频上传,平均每个短视频时长1分钟,分辨率720P,每秒2秒提取一个关键帧图像,每月有9亿关键帧,每年有108亿关键帧。开发者用AI模型将108亿关键帧图像转换为108亿个特征向量,然后使用Milvus轻松实现海量视频搜索功能,让用户可以方便地定位到自己感兴趣的(明星/商品)视频片段。Milvus向量搜索引擎还可以帮助自然语言处理的开发者轻松实现海量文本去重和语义搜索,帮助搜索引擎的开发者实现推荐系统和精准广告投放,在此就不一一列举了。目前,Milvus已被10多家知名科技公司使用,助力互联网娱乐(图片搜索/视频搜索)、新零售(以图搜商品)、智慧金融(用户认证)和智能物流(车辆识别)等领域。
还在临渊羡鱼?
您也可以访问Milvus在线训练营:https://github.com/milvus-io/bootcamp点击下方「阅读原文」在 GitHub 关注我们吧!