Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Milvus 在趋势科技的实践

Milvus 在趋势科技的实践

作者头像
Zilliz RDS
发布于 2021-03-04 06:50:05
发布于 2021-03-04 06:50:05
9290
举报

黄伟,趋势科技(中国)资深研发工程师

前期调研

趋势科技(TrendMicro)是一家全球领先的信息安全软件公司,专为全球软件厂商及个人用户提供安全解决方案。本文作者目前负责构建移动安全 APP 和开发基础设施。工作流程为爬取 Google play 等平台上的外部 APK (Android application package,即 Android 应用程序包),运用趋势科技的算法检测出携带病毒的 APK。使用 Milvus 在趋势科技 APK 库中对携带病毒的外部 APK 进行相似性检索。如发现外部携带病毒的 APK 与库中 APK 相似,需要及时通知企业与个人用户相关的病毒信息。

上述工作要求系统高效检索相似 APK。由于项目前期的 APK 样本数量不大,团队可以利用 SQL 语言在 MySQL 中进行 APK 相似性检索。但随着 APK 样本数量急剧增大,使用 MySQL 无法保证性能,因此团队开始探索新的解决方案。

Faiss

Facebook 于 2017 年发布了 Faiss 算法库。Faiss 能快速检索相似向量,还提供 IndexFlatL2、IndexFlatIP、HNSW、IVF 等多个索引,可以解决大部分相似性检索的问题。

但是 Faiss 只是一个基础算法库,存在如下问题:无法管理向量数据、不具备高可用性、缺乏监控手段、缺乏分布式方案、缺少各种语言版本的 SDK 等。

基于 Faiss 等近似最近邻搜索(Approximate Nearest Neighbor Search, ANN)算法库开发插件

行业内基于 Faiss、NMSLIB 等近似最邻近算法库开发了一些插件,例如以 Faiss、NMSLIB 作为底层库开发的 ES (Elasticsearch) 插件,如下图所示:

此类解决方案的优势在于无需额外写一套分布式代码。由于 ES 插件已经非常成熟,用户能够快速掌握提供 ES 的 DSL。一套 ES 能够同时检索文本和向量,而且支持标量字段过滤。

目前阿里、网易、亚马逊都采用此类解决方案。京东也基于 Faiss 开发了一套分布式系统 Vearch,但目前 Vearch 仍处于起步阶段且社区并不活跃。

此类解决方案的问题在于消耗内存大,且不易于性能调优。为获取最佳性能,需要进行 segment 合并。

Milvus

使用 C++ 语言开发的 Milvus 开源向量相似度搜索引擎在众多主流方案中脱颖而出。Milvus 与其他方案的对比情况如下图所示:

对比分析可知 Mlivus 性能好,具备以下优点:

  • 集成了 Faiss、NMSLIB、Annoy 等主流向量索引库。
  • 提供了一整套简单直观的 API,可以针对不同场景选择不同的索引类型。
  • 在高可用、分布式以及监控方面有相对成熟的解决方案。
  • 用户较多,社区活跃,目前 star 数超过 5000。

趋势科技最终决定选择 Milvus 作为内部的向量检索组件。

项目背景和架构设计

目前趋势科技在 MySQL 中存储了千万级的 APK 样本数据,且每日增量达数十万。算法团队针对 APK 的不同部分抽取计算出其 Thash 特征值,用于相似性检索。团队还会利用不同的 Sha256 算法将 APK 视作二进制文件,根据字节流 hash 分别计算出多个 256 bit 长的 Sha256 哈希值,用于区分不同的 APK。不同 APK 的 Sha256 哈希值不同。每个 APK 的 Thash 特征值对应多个不同的 Sha256 哈希值。

简而言之,Sha256 哈希值仅用于区分不同 APK,而 Thash 特征值用于相似性检索。相似的 APK 可能会产生相同的 Thash 特征值,但 Sha256 哈希值不同。

目前,趋势科技需要开发一套系统,检索相似的 Thash 特征值,并返回此 Thash 特征值对应的多个 Sha256 哈希值,最终检索出相似的 APK。在此过程中,趋势科技需要开发存储和检索 Thash 特征值的功能。在 Milvus 的支持下,趋势科技团队只需将 Thash 特征值转化成二值型向量,并存储在 Milvus 中即可。

检索出相似向量后,团队还需要在 MySQL 中查询 Thash 特征值对应的多个 Sha256 哈希值。趋势科技在架构设计中增加了缓存 Redis 来存储 Thash 特征值和 Sha256 哈希值的映射,以减少查询时间。架构如下图所示:

Milvus 支持多种向量的距离计算方式和索引类型,如下图所示:

趋势科技将 Thash 转化成二值型向量存储在 Milvus 中。为配合业务方,趋势科技采用汉明距离计算不同向量的 ANN 距离。

据了解,Milvus 未来版本会增加 string 类型 ID。此功能的发布可以免去缓存 Redis,简化当前架构。

目前,趋势科技采用上云方案,很多任务都部署在 Kubernetes 上。为实现向量检索的高可用,我们选择了 Mishards——一个用 Python 开发的 Milvus 集群分片中间件,如下图所示:

趋势科技采用 AWS 提供 EFS (Elastic File System) 来存储实际的向量数据。这种存储和计算分离的的做法将成为趋势。此外,趋势科技可以借助 Kubernetes 启动多个读节点,并基于这些读节点创建 LoadBalancer 类型的服务,保证一个或多个节点无法使用时整个集群依旧可用。

最初,Milvus 的架构为单节点,而非贯穿始终的分布式系统。出于对一致性的考量,Milvus 目前只支持一个写节点。但在未来,分布式 Milvus 将改进这一问题。

监控和警报

Milvus 基于 Prometheus 搭建监控系统,使用开源的时序数据分析及可视化平台 Grafana 展示各项性能指标。

使用 Prometheus 监控、存储性能指标:

  • Prometheus Server:收集和存储时序数据
  • Client 代码库:定制监控指标
  • Pushgateway:推送指标数据,确保 Prometheus 可以获取生命周期短且难以被及时提取的监控指标
  • Alertmanager:实现报警机制

监控指标较全面,包括:

  • Milvus 性能指标
  • 系统运行指标:CPU/GPU 使用状况
  • 网络、磁盘读取等指标
  • 硬件存储指标:数据大小,数据文件及存储情况等指标

系统运行效果

目前,趋势科技基于 Milvus 搭建的 ThashSearch 服务已上线数月。完整链路查询的平均延迟在 95 毫秒以内,具体表现如下图所示:

整体结果达到当初设计时制定的目标。数据导入速度也很快。导入300 万条192 维向量数据大约只需要 10 秒。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZILLIZ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
贝壳找房基于Milvus的向量搜索实践(一)
Milvus[1]:一种基于Faiss[5],NMSLIB[6] 和 Annoy[7]的相似特征向量搜索引擎。
Zilliz RDS
2021/01/05
2.4K0
贝壳找房基于Milvus的向量搜索实践(一)
【向量检索研究系列】产品介绍
向量检索领域有着非常多优秀产品,不同的产品有着各自的特性,适用于不同的场景,接下来将对已了解的8款优秀向量检索产品进行简单的介绍。
码之有理
2022/07/06
3.8K1
【向量检索研究系列】产品介绍
拥抱云原生,Milvus v2.0 发布现场回顾 | 附Meetup讲师PPT和视频
继今年 3 月发布 Milvus 1.0 版本,时隔 3 个月,Milvus 2.0 应云而生。
Zilliz RDS
2021/07/23
6610
图形商标近似检索-知擎者的 Milvus 实践
知擎者是一个商标大数据智能应用平台,以商标数据为核心,结合企业大数据、法律大数据、营销大数据等,提供基础业务处理、商标预警监测、案件智能挖掘、数据情报分析等服务,为知产服务者提效赋能。知擎者不断协助知产服务者改变传统业务处理模式,创建智慧服务新体系,拓展更多业务机会,以达到知产服务者快速盈利和品牌建设的目标。
Zilliz RDS
2021/02/03
9950
图形商标近似检索-知擎者的 Milvus 实践
海量数据中搜索精华价值:Milvus助力头部企业打造前沿AI搜索
在今天这个大数据无处不在的时代,如何高效精确地对海量数据进行处理和分析,是摆在各行业头部企业与软件开发团队面前的重大挑战。传统的结构化、半结构化数据领域有着较为成熟的解决方案和技术,相关数据尚可轻松应对;但在图片、视频、语音为代表的非结构化数据领域,业内曾长时间缺乏高效的处理和分类算法技术,给这些领域的搜索业务实践带来了巨大的困难。
深度学习与Python
2020/11/06
1.2K0
海量数据中搜索精华价值:Milvus助力头部企业打造前沿AI搜索
Milvus 线上问答#14- Milvus 非结构数据服务(UDS)概述
Milvus 究竟是一个计算平台,还是一个数据库?应用在哪些场景?诸如此类的问题我们的开发者常常在群里被小伙伴问到。这次我们对 Milvus 做了一个简单的概述,让大家可以更清楚 Milvus 是怎样的数据平台,以及 Milvus 长远的目标为何。完整的会议实录请点击视频。
Zilliz RDS
2020/06/12
6780
语义检索系统:基于Milvus 搭建召回系统抽取向量进行检索,加速索引
目标:使用 Milvus 搭建召回系统,然后使用训练好的语义索引模型,抽取向量,插入到 Milvus 中,然后进行检索。
汀丶人工智能
2023/08/02
2.8K0
语义检索系统:基于Milvus 搭建召回系统抽取向量进行检索,加速索引
AI 搜房,贝壳找房的Milvus实践
贝壳作为一家房产服务互联网平台,如何在海量房源中选出能够快速成交的房源是对平台和经纪人来说都是一件非常重要同时具有挑战的事情,但是针对房型图,户型信息等一系列非结构化数据在平台中应该怎么搜索呢?
Zilliz RDS
2020/04/28
1.3K0
AI 搜房,贝壳找房的Milvus实践
Milvus 在唯品会搜索推荐的实践
随着互联网数据规模的爆炸式增长,当前主流电商平台的商品品类及数量越来越多,用户却越来越难以便捷地找到自己需要的产品。
Zilliz RDS
2021/06/25
2.1K0
垃圾询盘过滤,焦点科技的 Milvus 实践
Milvus (https://milvus.io/) 向量搜索引擎开源半年以来,全球已经有数百家企业或组织用户。焦点科技是一家以 B2B 外贸交易为主营业务的科技公司,也是 Milvus 的用户。
Zilliz RDS
2020/06/12
6650
Chat with Milvus #11 回顾- 分布式数据库与Milvus分布式
本期的 Milvus 线上问答由我们 15 年经验的数据库专家-顾老师,带你总结主流数据库的发展与未来方向。
Zilliz RDS
2020/05/18
5810
Chat with Milvus #11 回顾- 分布式数据库与Milvus分布式
你的 AI 造型师-基于 Milvus 的服装图片搜索系统及应用
Mozat 是一家成立于 2003 年的互联网公司,总部位于新加坡,在广州和沙特阿拉伯设有分公司。Mozat 为全球移动互联网用户提供娱乐和社区服务,致力于打造一个充满乐趣的新移动世界。旗下产品 Stylepedia 是一款面向全球时尚女性的衣柜伴侣 APP。在这里,用户不仅可以打造自己的专属衣柜,还能与全世界的时尚达人在线互动,获取最 in 穿搭。
Zilliz RDS
2021/07/23
1K0
你的 AI 造型师-基于 Milvus 的服装图片搜索系统及应用
解读向量数据库
不论是RAG,还是Agent,几乎每个LLM 驱动的应用程序都可能会用到向量数据库。那么,向量数据库是什么?与传统数据库有何不同? 又如何选择向量数据库呢? 本文是老码农关于向量数据库的学习笔记。
半吊子全栈工匠
2023/11/27
1.8K0
解读向量数据库
Milvus 在 Tokopedia 的应用 | 让语义搜索更加智能
Tokopedia 是印度尼西亚最大的电商平台,目前拥有逾 9000 万月活跃用户和 860 万家商户,覆盖印尼 98% 的行政区。我们深知,帮助用户迅速并精准地找到想要的商品才是产品语料库的价值所在。正因如此,我们致力于提高用户搜索结果的相关性,并引入了相似度搜索。在 Tokopedia 移动应用端的搜索结果页面上点击 ”...” 按钮,即可选择搜索与当前搜索结果类似的产品。
Zilliz RDS
2021/06/25
4050
相似问答检索——汽车之家的 Milvus 实践
汽车之家作为中国汽车互联网平台,拥有全球最大的汽车社区论坛。多年来积累了丰富的用户问答数据,能够解决用户在看车、买车、用车等方面遇到的各种问题。针对用户在平台上提出的各种问题,从海量的高质量问答库中匹配语义最相似的问题和答案,能够及时满足用户需求,大大提升用户体验。
Zilliz RDS
2020/09/08
1.5K0
相似问答检索——汽车之家的 Milvus 实践
基于 Milvus 的 VOVA 拍照购实践
VOVA 是一个面向全球市场的新兴跨境电商平台,专注于外贸出口,客户遍布六大洲一百多个国家和地区。VOVA 支持 20 种主流语言和 35 种主流货币,拥有数百万件高品质、高性价比的产品,为用户提供最新的全球平价商品和轻松有趣的购物体验。
Zilliz RDS
2021/04/12
5750
浅谈如何优化 Milvus 性能
Milvus 是全球最快的向量数据库,在最新发布的 Milvus 2.2 benchmark[1] 中,Milvus 相比之前的版本,取得了 50% 以上的性能提升。值得一提的是,在 Master branch 的最新分支中,Milvus 的性能又更进一步,在 1M 向量串行执行的场景下取得了 3ms 以下的延迟,整体 QPS 甚至超过了 ElasticSearch 的 10 倍。那么,如何使用 Milvus 才能达到理想的性能呢?本文暂且不提社区大神贡献的黑科技优化,先聊聊使用 Milvus 过程中的一些经验,以及如何进行性能调优。
Zilliz RDS
2023/01/10
4.3K0
浅谈如何优化 Milvus 性能
系统召回太慢?上 Milvus × PaddleRec 双剑合璧大法!
李云梅,Zilliz 数据工程师,毕业于华中科技大学计算机系。加入 Zilliz 以来,致力于为开源向量数据库 Milvus 探索解决方案,帮助用户打造场景应用。深入关注自然语言处理技术和搜索推荐系统,日常喜欢一个人猫着乱翻书。
Zilliz RDS
2021/10/08
7680
Milvus 分布式向量检索-Mishards架构介绍
向量搜索引擎 Milvus 旨在帮助用户实现海量非结构化数据的近似检索和分析。单个 Milvus 实例可处理十亿级数据规模,而对于百亿或者千亿规模数据的需求,则需要一个 Milvus 集群实例,该实例对于上层应用可以像单机实例一样使用,同时满足海量数据低延迟、高并发业务需求。集群内部处理请求转发、读写分离、水平扩展、动态扩容,为用户提供内存和算力可以无限扩容的 Milvus 实例。Mishards 就是一个 Milvus 分布式解决方案。
Zilliz RDS
2020/03/31
2K0
Milvus 分布式向量检索-Mishards架构介绍
Milvus 实战 | 使用 Nginx 实现对 Milvus 的负载均衡
如今,互联网信息不断增加。为减小对服务器的压力,越来越多用户开始采用负载均衡机制以减小对服务器的压力。这种做法不但能够保证服务的可用性,还可以提升用户体验。本文将介绍如何通过使用 Nginx 实现对 Milvus 的负载均衡,从而提高服务器资源的使用效率和 Milvus 的可用性。
Zilliz RDS
2021/04/26
1.3K0
推荐阅读
相关推荐
贝壳找房基于Milvus的向量搜索实践(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档