Создавая с Milvus: обнаружение вирусов Android в реальном времени для Trend Micro
Кибербезопасность остается постоянной угрозой как для частных лиц, так и для компаний: в 2020 году опасения по поводу конфиденциальности данных выросли у 86% компаний, и лишь 23% потребителей считают, что их персональные данные находятся в высокой безопасности. По мере того как вредоносное ПО становится все более повсеместным и сложным, проактивный подход к обнаружению угроз стал необходимым. Trend Micro — мировой лидер в области безопасности гибридных облаков, защиты сетей, безопасности малого бизнеса и защиты конечных устройств. Чтобы защитить устройства Android от вирусов, компания создала Trend Micro Mobile Security — мобильное приложение, которое сравнивает APK (Android Application Package) из Google Play Store с базой данных известного вредоносного ПО. Система обнаружения вирусов работает следующим образом:
- Внешние APK (Android application package) из Google Play Store сканируются и собираются.
- Известное вредоносное ПО преобразуется в векторы и сохраняется в Milvus.
- Новые APK также преобразуются в векторы, затем сравниваются с базой данных вредоносного ПО с помощью поиска по сходству.
- Если вектор APK похож на какой-либо из векторов вредоносного ПО, приложение предоставляет пользователям подробную информацию о вирусе и уровне его угрозы.
Для работы система должна выполнять высокоэффективный поиск по сходству в огромных векторных наборах данных в режиме реального времени. Изначально Trend Micro использовала MySQL. Однако по мере расширения бизнеса росло и число APK с вредоносным кодом, хранящихся в ее базе данных. Команда алгоритмов компании начала искать альтернативные решения для поиска векторного сходства после того, как быстро переросла MySQL.
Сравнение решений для поиска векторного сходства
Существует ряд доступных решений для поиска векторного сходства, многие из которых имеют открытый исходный код. Хотя обстоятельства различаются от проекта к проекту, большинству пользователей выгоднее использовать векторную базу данных, созданную для обработки и аналитики неструктурированных данных, а не простую библиотеку, требующую обширной настройки. Ниже мы сравниваем некоторые популярные решения для поиска векторного сходства и объясняем, почему Trend Micro выбрала Milvus.
Faiss
Faiss — это библиотека, разработанная Facebook AI Research, которая обеспечивает эффективный поиск по сходству и кластеризацию плотных векторов. Содержащиеся в ней алгоритмы выполняют поиск векторов любого размера в наборах. Faiss написана на C++ с обертками для Python/numpy и поддерживает ряд индексов, включая IndexFlatL2, IndexFlatIP, HNSW и IVF.
Хотя Faiss является невероятно полезным инструментом, у нее есть ограничения. Она работает только как базовая библиотека алгоритмов, а не как база данных для управления векторными наборами данных. Кроме того, она не предлагает распределенную версию, сервисы мониторинга, SDK или высокую доступность, которые являются ключевыми функциями большинства облачных сервисов.
Плагины на основе Faiss и других библиотек ANN-поиска
Существует несколько плагинов, построенных поверх Faiss, NMSLIB и других библиотек ANN-поиска, которые предназначены для расширения базовой функциональности лежащего в их основе инструмента. Elasticsearch (ES) — это поисковая система на основе библиотеки Lucene с рядом таких плагинов. Ниже приведена архитектурная схема ES-плагина:
Архитектурная схема плагина Elasticsearch.
Встроенная поддержка распределенных систем является главным преимуществом решения ES. Это экономит время разработчиков и деньги компаний благодаря коду, который не нужно писать. ES-плагины технически продвинуты и широко распространены. Elasticsearch предоставляет QueryDSL (предметно-ориентированный язык), который определяет запросы на основе JSON и прост в освоении. Полный набор сервисов ES позволяет одновременно выполнять векторный/текстовый поиск и фильтровать скалярные данные.
Amazon, Alibaba и Netease — несколько крупных технологических компаний, которые в настоящее время используют плагины Elasticsearch для поиска по векторному сходству. Основные недостатки этого решения — высокое потребление памяти и отсутствие поддержки настройки производительности. В отличие от них, JD.com разработала собственное распределенное решение на основе Faiss под названием Vearch. Однако Vearch все еще находится на стадии инкубации, а его open-source-сообщество относительно неактивно.
Milvus
Milvus — это open-source векторная база данных, созданная Zilliz. Она отличается высокой гибкостью, надежностью и молниеносной скоростью. Инкапсулируя несколько широко используемых библиотек индексов, таких как Faiss, NMSLIB и Annoy, Milvus предоставляет комплексный набор интуитивно понятных API, позволяя разработчикам выбирать идеальный тип индекса для своего сценария. Она также предоставляет распределенные решения и сервисы мониторинга. У Milvus очень активное open-source-сообщество и более 5,5 тыс. звезд на Github.
Milvus превосходит конкурентов
Мы собрали ряд различных результатов тестирования упомянутых выше решений для поиска по векторному сходству. Как видно из следующей сравнительной таблицы, Milvus оказался значительно быстрее конкурентов, несмотря на тестирование на наборе данных из 1 миллиарда 128-мерных векторов.
| Движок | Производительность (мс) | Размер набора данных (млн) |
|---|---|---|
| ES | 600 | 1 |
| ES + Alibaba Cloud | 900 | 20 |
| Milvus | 27 | 1000+ |
| SPTAG | Не очень хорошо | |
| ES + nmslib, faiss | 90 | 150 |
Сравнение решений для поиска по векторному сходству.
После взвешивания плюсов и минусов каждого решения Trend Micro остановилась на Milvus для своей модели векторного поиска. Благодаря исключительной производительности на массивных наборах данных миллиардного масштаба очевидно, почему компания выбрала Milvus для сервиса мобильной безопасности, которому требуется поиск по векторному сходству в реальном времени.
Проектирование системы для обнаружения вирусов в реальном времени
В базе данных MySQL Trend Micro хранится более 10 миллионов вредоносных APK, и каждый день добавляется 100 тыс. новых APK. Система работает путем извлечения и вычисления значений Thash различных компонентов APK-файла, затем использует алгоритм Sha256, чтобы преобразовать их в бинарные файлы и сгенерировать 256-битные значения Sha256, которые отличают APK от других. Поскольку значения Sha256 различаются в зависимости от APK-файлов, один APK может иметь одно объединенное значение Thash и одно уникальное значение Sha256.
Значения Sha256 используются только для различения APK, а значения Thash используются для поиска по векторному сходству. Похожие APK могут иметь одинаковые значения Thash, но разные значения Sha256.
Для обнаружения APK с вредоносным кодом Trend Micro разработала собственную систему для извлечения похожих значений Thash и соответствующих значений Sha256. Trend Micro выбрала Milvus для мгновенного поиска по векторному сходству на массивных наборах векторов, преобразованных из значений Thash. После выполнения поиска по сходству соответствующие значения Sha256 запрашиваются в MySQL. В архитектуру также добавлен кэширующий слой Redis для сопоставления значений Thash со значениями Sha256, что значительно сокращает время запроса.
Ниже приведена архитектурная схема системы мобильной безопасности Trend Micro.
Архитектурная схема Trend Micro Mobile Security.
Выбор подходящей метрики расстояния помогает улучшить производительность классификации и кластеризации векторов. В следующей таблице показаны метрики расстояния и соответствующие индексы, которые работают с бинарными векторами.
| Метрики расстояния | Типы индексов |
|---|---|
| - Jaccard - Tanimoto - Hamming | - FLAT - IVF_FLAT |
| - Superstructure - Substructure | FLAT |
Метрики расстояния и индексы для бинарных векторов.
Trend Micro преобразует значения Thash в бинарные векторы и хранит их в Milvus. В этом сценарии Trend Micro использует расстояние Хэмминга для сравнения векторов.
Milvus вскоре будет поддерживать строковые ID векторов, и целочисленные ID не нужно будет сопоставлять с соответствующим именем в строковом формате. Это делает слой кэширования Redis ненужным, а архитектуру системы — менее громоздкой.
Trend Micro применяет облачное решение и развертывает множество задач в Kubernetes. Чтобы обеспечить высокую доступность, Trend Micro использует Mishards, промежуточное ПО для шардирования кластера Milvus, разработанное на Python.
Архитектура Mishards в Milvus.
Trend Micro разделяет хранение и вычисление расстояний, сохраняя все векторы в EFS (Elastic File System), предоставляемой AWS. Такая практика является популярной тенденцией в отрасли. Kubernetes используется для запуска нескольких узлов чтения и развертывания сервисов LoadBalancer на этих узлах чтения для обеспечения высокой доступности.
Для поддержания согласованности данных Mishards поддерживает только один узел записи. Однако распределенная версия Milvus с поддержкой нескольких узлов записи будет доступна в ближайшие месяцы.
Функции мониторинга и оповещения
Milvus совместим с системами мониторинга, построенными на Prometheus, и использует Grafana, платформу с открытым исходным кодом для аналитики временных рядов, для визуализации различных метрик производительности.
Prometheus отслеживает и хранит следующие метрики:
- Метрики производительности Milvus, включая скорость вставки, скорость запросов и время безотказной работы Milvus.
- Метрики производительности системы, включая использование CPU/GPU, сетевой трафик и скорость доступа к диску.
- Метрики аппаратного хранилища, включая размер данных и общее количество файлов.
Система мониторинга и оповещения работает следующим образом:
- Клиент Milvus отправляет пользовательские данные метрик в Pushgateway.
- Pushgateway обеспечивает безопасную отправку кратковременных, эфемерных данных метрик в Prometheus.
- Prometheus постоянно получает данные из Pushgateway.
- Alertmanager устанавливает пороговые значения оповещений для разных метрик и отправляет сигналы тревоги по электронной почте или в сообщениях.
Производительность системы
С момента первого запуска сервиса ThashSearch, построенного на Milvus, прошло несколько месяцев. График ниже показывает, что сквозная задержка запросов составляет менее 95 миллисекунд.
Задержка запросов для сервиса поиска Thash, построенного на Milvus.
Вставка также выполняется быстро. На вставку 3 миллионов 192-мерных векторов требуется около 10 секунд. С помощью Milvus производительность системы смогла соответствовать критериям производительности, установленным Trend Micro.
Оставайтесь на связи
Читать далее

Zilliz Cloud Now Available in AWS Europe (Ireland)
Zilliz Cloud launches in AWS eu-west-1 (Ireland) — bringing low-latency vector search, EU data residency, and full GDPR-ready infrastructure to European AI teams. Now live across 30 regions on five cloud providers.

Why Not All VectorDBs Are Agent-Ready
Explore why choosing the right vector database is critical for scaling AI agents, and why traditional solutions fall short in production.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.



