【CSDN 编者按】仅仅十行代码、一台服务器便可实现十亿图库的以图搜图?还是开源的!到底是什么黑科技呢?下面带你一览高性能向量搜索引擎Milvus的前世今生。

作者 | 星爵

非结构化数据、人工智能和向量搜索

随着信息化技术的不断进步,人类正经历爆炸式的数据增长,数据种类也在发生一系列有趣的变化。自20世纪中叶电子计算机诞生以来,开发者历经了从处理结构化数据(Structured Data,整型数和浮点数等),到2000年互联网时代处理半结构化数据(Semi-structured Data,网页和日志等),再到2012年以来人工智能兴起处理非结构化数据(Unstructured Data,图片、视频、语音和文本等)的发展过程。
对于每一类不同类型的数据,计算机科学家都发明了相应的索引算法来进行数据组织、检索和分析。对于结构化数据来说,常见的索引算法有Bitmap、哈希表和B树等,代表系统是Oracle和DB2为代表的关系型数据库;对于半结构化数据,常见的索引算法是倒排索引(InvertedIndex),代表系统是Solr和ElasticSearch等搜索引擎。
而非结构化数据因为难以被传统计算方法和处理器进行处理与价值挖掘,长期以来都是计算机科学领域的一大难点。直到近年来通过人工智能算法处理非结构数据才有所突破。人工智能算法使用一系列的模型(如CNN、RNN、VGG和Bert等)将图片、视频、语音和文本等转换成相应的特征向量,每个特征向量由一串整型数或者浮点数构成。人工智能算法巧妙地将复杂的非结构化数据处理变成了对计算机处理器相对简单友好的向量数值运算,以图搜图、视频检索和自然语言处理等任务就变成了基于欧式距离或者余弦距离度量的向量相似度计算。

AI 算法将非结构化数据转换为向量
虽然向量相似度计算相对简单,但是非结构化数据(如图片、视频、语音和文字)相比于传统的结构化数据和半结构化数据,数据量庞大(总量大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的研发过程中,我和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多家知名科技公司使用,助力互联网娱乐(图片搜索/视频搜索)、新零售(以图搜商品)、智慧金融(用户认证)和智能物流(车辆识别)等领域。

还在临渊羡鱼?

十行代码实现十亿图片检索,我们把它开源了相关推荐

  1. 阿里巴巴十亿级并发系统设计手册已开源(2022最新版)

    高并发,几乎是每个程序员都想拥有的经验.原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时.CPU load升高.GC频繁.死锁.大数据量存储等等,这些问题能推动我们在技术深度上不断 ...

  2. 阿里巴巴十亿级并发系统设计手册已开源(2021最新版)

    高并发,几乎是每个程序员都想拥有的经验.原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时.CPU load升高.GC频繁.死锁.大数据量存储等等,这些问题能推动我们在技术深度上不断 ...

  3. OpenAI数十亿代码训出Codex:能将英语翻译成代码,给四句话就能写个神经网络...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:大数据文摘本文约2088字,建议阅读4分钟 本文介绍了Open ...

  4. 谷歌为什么把几十亿行代码放在一个库?

    <ACM通信>有一篇论文<为什么 Google 要把几十亿行代码放在一个库?>,作者是谷歌基础设施小组的工程师.作者详细讲述了Google的代码为什么全部放在一个库里面. 一. ...

  5. 他是阿里 P11,靠写代码写成合伙人,身家几十亿,没有他,我们可能刷不了淘宝!...

    作者 | Mr.K 来源 | 技术领导力(ID:jishulingdaolij) 他是阿里的"扫地僧",写代码级别最高的人,一等一的技术高手,他非科班出身,用近20年的时间,修炼成 ...

  6. python简单代码 春节集五福-集五福活动又来了,不过这个价值几十亿的大项目也别错过...

    原标题:集五福活动又来了,不过这个价值几十亿的大项目也别错过 已经持续5年的支付宝集五福活动,终于在广大网友千呼万唤下,"下周一见"上线了! * 图片来源自网络截图,侵删 不得不感 ...

  7. 为什么Google上十亿行代码都放在同一个仓库里?

    导读:相对于一般公司,Google 使用了单一代码仓库,很多人不理解为什么这么做.本文作者是谷歌基础设施小组的工程师,对这个问题进行了详细解读.译者在翻译过程中受益良多,也相信大家看完之后会认为自己还 ...

  8. Google 为什么把几十亿行代码放在一个库

    <ACM通信>有一篇论文<为什么 Google 要把几十亿行代码放在一个库?>,作者是谷歌基础设施小组的工程师.作者详细讲述了Google的代码为什么全部放在一个库里面. 一. ...

  9. 支持十亿级密态数据、低代码,蚂蚁集团发布隐语开放平台

    2022年AI的顶级会议上,蚂蚁集团连续发布了多个重磅技术的新动态. 数据库领域重要进展!蚂蚁集团高性能图数据 TuGraph 正式开源 隐私计算+区块链原生融合之后平台开放.提升性能,蚂蚁链隐私协作 ...

最新文章

  1. [译]通过使用Chrome的开发者工具来学习JavaScript
  2. jquery中获取元素的几种方式小结
  3. Windows下搭建IOS开发环境(一)
  4. python更改数据框指定位置的数据_python-如何使用来自另一个数据框的新值更新pyspark数据框?...
  5. 【报告分享】2021中国数字化全景图谱与创新企业研究报告:数字浪潮下的创新力量.pdf(附下载链接)...
  6. typeorm 更新_typeORM 多对多关系不同情况的处理
  7. 易筋SpringBoot 2.1 | 第廿篇:SpringBoot的复杂JPA以及源码解析
  8. 【Python】基于Python的百度迁徙(2020年10月21日更)
  9. v5服务器装系统,小白必学:宏基V5-591G内存、固态、装系统教程!
  10. 模仿淘宝网的主页,实现了一些简单的功能
  11. windows 计算机 快捷键,Windows7计算器快捷键汇总
  12. 系统论重要模型_笔记
  13. mysqldump 备份报 Warning: A partial dump from a server that has GTIDs will by default include the..
  14. 方向导数(Directional derivatives)
  15. 发邮件怎么把附件内容直接显示_优德分享:如何发邮件会让人觉得你更靠谱?...
  16. PYNQ-Z1 资源分析
  17. java保姆级教程—— 1.什么是游戏
  18. MySQL设置允许指定IP远程连接
  19. 学术会议html模板,关于学术研讨会邀请函的模板
  20. Java Web(day05) —— 请求和响应

热门文章

  1. HTML5 动态统计表
  2. 《机器学习实战》学习总结(一)KNN分类算法原理
  3. error: member “torch::jit::ProfileOptionalOp::Kind“ may not be initialized
  4. 使用 MobaXterm 连接矩池云 GPU服务器
  5. python处理时间的标准数据_python数据分析数据标准化及离散化详解
  6. ROS学习——3 roslaunch的使用
  7. 叶子问题(层次遍历加判断叶子)
  8. leetcode python3 简单题190. Reverse Bits
  9. 双机热备的缺点_弱电工程中的双机热备是什么?带你了解服务器双机热备
  10. 【OpenCV】视频输入与相似度测量