趋势科技

Milvus 助力趋势科技提升 APK 安全性

趋势科技
  • <95 毫秒

    端到端查询延迟

  • <10 秒

    导入 300 万条向量数据

  • 实现

    APK 病毒实时检测

Milvus 性能出色,集成了 Faiss 等主流向量索引库。Milvus 还提供了一整套简单直观的 API,可以针对不同场景选择不同的索引类型。

黄伟

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

趋势科技简介

趋势科技(TrendMicro)是一家全球领先的信息安全软件公司,专为全球软件厂商及个人用户提供安全解决方案。

趋势科技拥有一支专门的团队负责构建移动安全 APP 和开发基础设施。工作流程为爬取 Google play 等平台上的外部 APK (Android application package,即 Android 应用程序包),运用趋势科技的算法检测出携带病毒的 APK。使用 Milvus 在趋势科技 APK 库中对携带病毒的外部 APK 进行相似性检索。如发现外部携带病毒的 APK 与库中 APK 相似,需要及时通知企业与个人用户相关的病毒信息。

用户痛点:MySQL 和 Faiss 无法满足业务可扩展性要求

由于项目前期的 APK 样本数量不大,趋势科技团队可以利用 SQL 语言在 MySQL 中进行 APK 相似性检索。但随着 APK 样本数量急剧增大,使用 MySQL 无法保证性能,查询延迟增加,系统也无法处理高并发查询搜索请求。团队面临技术瓶颈。

随后,趋势科技团队转而使用 Faiss。Facebook 于 2017 年发布了 Faiss 算法库。Faiss 能快速检索相似向量,还提供 IndexFlatL2、IndexFlatIP、HNSW、IVF 等多个索引,可以解决大部分相似性检索的问题。但是 Faiss 只是一个基础算法库,存在如下问题:无法管理向量数据、不具备高可用性、缺乏监控手段、缺乏分布式方案、缺少各种语言版本的 SDK 等。

具体而言,如果使用 Faiss,趋势科技团队就需要自己搭建一层独立的数据存储和检索层。而且,Faiss 缺少监控工具,不适合 APK 病毒检测这种对实时性具有高要求的应用场景。除了上述两个问题以外,Faiss 缺乏分布式方案。如果使用 Faiss,趋势科技团队还需要考虑水平扩展的问题。

行业内基于 Faiss 的近似最邻近算法库开发了一些插件。但此类解决方案的问题在于消耗内存大,且不易于性能调优。因此,也同样不能满足趋势科技的业务需求。

高度可扩展的解决方案:强大的 Milvus 向量搜索引擎,助力 APK 分析

使用 C++ 语言开发的 Milvus 开源向量相似度搜索引擎在众多主流方案中脱颖而出。Milvus 能够解决 趋势科技团队一些的技术痛点。Milvus 集成了 Faiss、NMSLIB、Annoy 等主流向量索引库,提供丰富的功能。

Milvus 与其他方案的对比情况如下图所示:

引擎性能(毫秒)数据量(百万)向量维度
ES6001128
ES + 阿里云90020128
Milvus271000+128
SPTAG性能不佳
ES + nmslib、faiss90150128

Milvus 提供了一整套简单直观的 API。趋势科技团队可以针对不同场景选择不同的索引类型。与其他解决方案相比,Milvus 更具灵活性,可以帮助趋势科技团队处理多样的 APK 特征向量,满足各种业务需求。

Milvus 是一套高可用的分布式系统,支持水平扩展。趋势科技团队需要处理爆炸式增长的海量 APK 数据,因此他们最关注的就是系统可扩展性和性能。Milvus 的分布式架构允许用户轻松增加节点已满足更高的负载量。

此外,Milvus 还内嵌了 Prometheus 监控系统和 Grafana 数据可视化界面。使用 Milvus 后,趋势科技团队能够实时关注各种性能指标,包括查询延迟、数据导入速度等,以便及时发现问题并迅速解决。

Milvus 高度灵活、可扩展,提供强大的向量搜索引擎,能够完美满足趋势科技复杂的业务需求。由于上述三点理由,最终趋势科技团队选择在其 APK 安全检测项目中采用 Milvus。

案例亮点:低延迟、超快速的数据导入速度

在采用 Milvus 后,趋势科技 APK 分析系统的效率和性能实现了大幅提升。搜索延迟是评估性能最重要的指标。Milvus 的搜索延迟效果惊艳。目前,趋势科技基于 Milvus 搭建的 ThashSearch 服务已上线数月。完整链路查询的平均延迟在 95 毫秒以内。低延迟确保趋势科技能够及时提醒企业或个人用户潜在的 APK 病毒和风险,保障数据安全。

除了低延迟以外,APK 分析场景中还需要关注数据导入速度。因为这种场景下通常需要导入海量数据,因此数据导入速度也会影响系统性能。使用 Milvus 后,导入 300 万条 192 维向量数据大约只需要 10 秒。高导入速度可以确保系统数据实时更新,提升查询的准确性。

使用 Milvus 后,趋势科技团队大大简化了 APK 检测系统的后端流程,能够更快速的返回相似性搜索结果,实时更新系统数据。Milvus 的表现超出了预期,趋势科技团队决定后续需要使用向量搜索引擎的业务中都使用 Milvus。

后续计划

趋势科技团队也在十分密切关注 Milvus 的发展路线图,也非常期待 Milvus 未来能够支持的新功能。Milvus 后续将支持字符串类型的向量 ID。这样一来,趋势科技团队就无需再额外使用 Redis 缓存数据,可以大大简化工作流程,提升系统效率。

此外,Milvus 当前仅支持一个写节点,后续将取消这一限制。趋势科技十分期待新发布,进一步提升其应用可扩展性,期望能够处理更多数据和更多查询请求。因为 Milvus 的出色表现,趋势科技团队还会考虑在更多业务中集成 Milvus。

相关资源