Creando con Milvus: Detección de virus de Android en tiempo real para Trend Micro
La ciberseguridad sigue siendo una amenaza persistente tanto para individuos como para empresas, con preocupaciones sobre la privacidad de los datos en aumento para el 86% de las empresas en 2020 y solo el 23% de los consumidores creyendo que sus datos personales están muy seguros. A medida que el malware se vuelve cada vez más omnipresente y sofisticado, un enfoque proactivo para la detección de amenazas se ha vuelto esencial. Trend Micro es un líder global en seguridad de nube híbrida, defensa de redes, seguridad para pequeñas empresas y seguridad de endpoints. Para proteger los dispositivos Android de virus, la empresa creó Trend Micro Mobile Security, una aplicación móvil que compara APKs (Android Application Package) de Google Play Store con una base de datos de malware conocido. El sistema de detección de virus funciona de la siguiente manera:
- Se rastrean APKs externos (Android application package) de Google Play Store.
- El malware conocido se convierte en vectores y se almacena en Milvus.
- Los nuevos APKs también se convierten en vectores y luego se comparan con la base de datos de malware mediante búsqueda por similitud.
- Si un vector de APK es similar a alguno de los vectores de malware, la aplicación proporciona a los usuarios información detallada sobre el virus y su nivel de amenaza.
Para funcionar, el sistema tiene que realizar búsquedas por similitud altamente eficientes en enormes conjuntos de datos vectoriales en tiempo real. Inicialmente, Trend Micro utilizó MySQL. Sin embargo, a medida que su negocio se expandía, también lo hacía el número de APKs con código malicioso almacenados en su base de datos. El equipo de algoritmos de la empresa comenzó a buscar soluciones alternativas de búsqueda por similitud vectorial después de superar rápidamente las capacidades de MySQL.
Comparación de soluciones de búsqueda por similitud vectorial
Hay varias soluciones de búsqueda por similitud vectorial disponibles, muchas de las cuales son de código abierto. Aunque las circunstancias varían de un proyecto a otro, la mayoría de los usuarios se benefician de aprovechar una base de datos vectorial creada para el procesamiento y análisis de datos no estructurados en lugar de una simple biblioteca que requiere una configuración extensa. A continuación comparamos algunas soluciones populares de búsqueda por similitud vectorial y explicamos por qué Trend Micro eligió Milvus.
Faiss
Faiss es una biblioteca desarrollada por Facebook AI Research que permite la búsqueda por similitud eficiente y el agrupamiento de vectores densos. Los algoritmos que contiene buscan vectores de cualquier tamaño en conjuntos. Faiss está escrito en C++ con envoltorios para Python/numpy, y admite varios índices, incluidos IndexFlatL2, IndexFlatIP, HNSW e IVF.
Aunque Faiss es una herramienta increíblemente útil, tiene limitaciones. Solo funciona como una biblioteca básica de algoritmos, no como una base de datos para gestionar conjuntos de datos vectoriales. Además, no ofrece una versión distribuida, servicios de monitoreo, SDKs ni alta disponibilidad, que son las características clave de la mayoría de los servicios basados en la nube.
Complementos basados en Faiss y otras bibliotecas de búsqueda ANN
Hay varios complementos creados sobre Faiss, NMSLIB y otras bibliotecas de búsqueda ANN que están diseñados para mejorar la funcionalidad básica de la herramienta subyacente que los impulsa. Elasticsearch (ES) es un motor de búsqueda basado en la biblioteca Lucene con varios de estos plugins. A continuación se muestra un diagrama de arquitectura de un complemento de ES:
Diagrama de arquitectura de un complemento de Elasticsearch.
El soporte integrado para sistemas distribuidos es una gran ventaja de una solución ES. Esto ahorra tiempo a los desarrolladores y dinero a las empresas gracias al código que no tiene que escribirse. Los complementos de ES son técnicamente avanzados y frecuentes. Elasticsearch proporciona un QueryDSL (lenguaje específico de dominio), que define consultas basadas en JSON y es fácil de comprender. Un conjunto completo de servicios de ES permite realizar búsquedas vectoriales/de texto y filtrar datos escalares simultáneamente.
Amazon, Alibaba y Netease son algunas de las grandes empresas tecnológicas que actualmente dependen de plug-ins de Elasticsearch para la búsqueda de similitud vectorial. Las principales desventajas de esta solución son el alto consumo de memoria y la falta de soporte para el ajuste de rendimiento. En cambio, JD.com ha desarrollado su propia solución distribuida basada en Faiss llamada Vearch. Sin embargo, Vearch sigue siendo un proyecto en etapa de incubación y su comunidad de código abierto es relativamente inactiva.
Milvus
Milvus es una base de datos vectorial de código abierto creada por Zilliz. Es altamente flexible, confiable y extremadamente rápida. Al encapsular múltiples bibliotecas de índices ampliamente adoptadas, como Faiss, NMSLIB y Annoy, Milvus proporciona un conjunto integral de APIs intuitivas, lo que permite a los desarrolladores elegir el tipo de índice ideal para su escenario. También proporciona soluciones distribuidas y servicios de monitoreo. Milvus cuenta con una comunidad de código abierto muy activa y más de 5.5K estrellas en Github.
Milvus supera a la competencia
Recopilamos una serie de resultados de pruebas diferentes de las diversas soluciones de búsqueda de similitud vectorial mencionadas anteriormente. Como podemos ver en la siguiente tabla comparativa, Milvus fue significativamente más rápido que la competencia a pesar de haber sido probado en un conjunto de datos de 1 mil millones de vectores de 128 dimensiones.
| Motor | Rendimiento (ms) | Tamaño del conjunto de datos (millones) |
|---|---|---|
| ES | 600 | 1 |
| ES + Alibaba Cloud | 900 | 20 |
| Milvus | 27 | 1000+ |
| SPTAG | No bueno | |
| ES + nmslib, faiss | 90 | 150 |
Una comparación de soluciones de búsqueda de similitud vectorial.
Después de sopesar las ventajas y desventajas de cada solución, Trend Micro se decidió por Milvus para su modelo de recuperación vectorial. Con un rendimiento excepcional en conjuntos de datos masivos, a escala de miles de millones, es evidente por qué la empresa eligió Milvus para un servicio de seguridad móvil que requiere búsqueda de similitud vectorial en tiempo real.
Diseño de un sistema para la detección de virus en tiempo real
Trend Micro tiene más de 10 millones de APKs maliciosos almacenados en su base de datos MySQL, con 100k APKs nuevos agregados cada día. El sistema funciona extrayendo y calculando valores Thash de diferentes componentes de un archivo APK, luego utiliza el algoritmo Sha256 para transformarlo en archivos binarios y generar valores Sha256 de 256 bits que diferencian el APK de otros. Dado que los valores Sha256 varían según los archivos APK, un APK puede tener un valor Thash combinado y un valor Sha256 único.
Los valores Sha256 solo se utilizan para diferenciar APKs, y los valores Thash se utilizan para la recuperación de similitud vectorial. APKs similares pueden tener los mismos valores Thash pero diferentes valores Sha256.
Para detectar APKs con código malicioso, Trend Micro desarrolló su propio sistema para recuperar valores Thash similares y los valores Sha256 correspondientes. Trend Micro eligió Milvus para realizar búsquedas instantáneas de similitud vectorial en conjuntos de datos vectoriales masivos convertidos a partir de valores Thash. Después de ejecutar la búsqueda de similitud, los valores Sha256 correspondientes se consultan en MySQL. También se agrega una capa de caché Redis a la arquitectura para mapear valores Thash a valores Sha256, reduciendo significativamente el tiempo de consulta.
A continuación se muestra el diagrama de arquitectura del sistema de seguridad móvil de Trend Micro.
Diagrama de arquitectura para Trend Micro Mobile Security.
Elegir una métrica de distancia adecuada ayuda a mejorar el rendimiento de la clasificación y la agrupación de vectores. La siguiente tabla muestra las métricas de distancia y los índices correspondientes que funcionan con vectores binarios.
| Métricas de distancia | Tipos de índice |
|---|---|
| - Jaccard - Tanimoto - Hamming | - FLAT - IVF_FLAT |
| - Superestructura - Subestructura | FLAT |
Métricas de distancia e índices para vectores binarios.
Trend Micro convierte valores Thash en vectores binarios y los almacena en Milvus. Para este escenario, Trend Micro utiliza la distancia de Hamming para comparar vectores.
Milvus pronto admitirá ID de vectores de cadena, y los ID enteros no tendrán que mapearse al nombre correspondiente en formato de cadena. Esto hace innecesaria la capa de caché de Redis y vuelve la arquitectura del sistema menos voluminosa.
Trend Micro adopta una solución basada en la nube y despliega muchas tareas en Kubernetes. Para lograr alta disponibilidad, Trend Micro utiliza Mishards, un middleware de particionamiento de clústeres Milvus desarrollado en Python.
Arquitectura de Mishards en Milvus.
Trend Micro separa el almacenamiento y el cálculo de distancias almacenando todos los vectores en el EFS (Elastic File System) proporcionado por AWS. Esta práctica es una tendencia popular en la industria. Kubernetes se utiliza para iniciar múltiples nodos de lectura, y desarrolla servicios LoadBalancer en estos nodos de lectura para garantizar alta disponibilidad.
Para mantener la coherencia de los datos, Mishards admite solo un nodo de escritura. Sin embargo, una versión distribuida de Milvus compatible con múltiples nodos de escritura estará disponible en los próximos meses.
Funciones de monitoreo y alerta
Milvus es compatible con sistemas de monitoreo construidos sobre Prometheus, y utiliza Grafana, una plataforma de código abierto para análisis de series temporales, para visualizar diversas métricas de rendimiento.
Prometheus monitorea y almacena las siguientes métricas:
- Métricas de rendimiento de Milvus, incluida la velocidad de inserción, la velocidad de consulta y el tiempo de actividad de Milvus.
- Métricas de rendimiento del sistema, incluido el uso de CPU/GPU, el tráfico de red y la velocidad de acceso al disco.
- Métricas de almacenamiento de hardware, incluido el tamaño de los datos y el número total de archivos.
El sistema de monitoreo y alerta funciona de la siguiente manera:
- Un cliente de Milvus envía datos de métricas personalizadas a Pushgateway.
- Pushgateway garantiza que los datos de métricas efímeros y de corta duración se envíen de forma segura a Prometheus.
- Prometheus sigue extrayendo datos de Pushgateway.
- Alertmanager establece el umbral de alerta para diferentes métricas y genera alarmas mediante correos electrónicos o mensajes.
Rendimiento del sistema
Han pasado un par de meses desde que se lanzó por primera vez el servicio ThashSearch construido sobre Milvus. El gráfico a continuación muestra que la latencia de consulta de extremo a extremo es inferior a 95 milisegundos.
Latencia de consulta para el servicio de búsqueda Thash construido sobre Milvus.
La inserción también es rápida. Se tardan alrededor de 10 segundos en insertar 3 millones de vectores de 192 dimensiones. Con la ayuda de Milvus, el rendimiento del sistema pudo cumplir con los criterios de rendimiento establecidos por Trend Micro.
No seas un desconocido
Sigue leyendo

How to Install and Run OpenClaw (Previously Clawdbot/Moltbot) on Mac
Turn your Mac into an AI gateway for WhatsApp, Telegram, Discord, iMessage, and more — in under 5 minutes.

8 Latest RAG Advancements Every Developer Should Know
Explore eight advanced RAG variants that can solve real problems you might be facing: slow retrieval, poor context understanding, multimodal data handling, and resource optimization.

Vector Databases vs. Time Series Databases
Use a vector database for similarity search and semantic relationships; use a time series database for tracking value changes over time.



