Creare con Milvus: rilevare virus Android in tempo reale per Trend Micro
La cybersecurity rimane una minaccia persistente sia per gli individui sia per le aziende, con preoccupazioni relative alla privacy dei dati in aumento per l’86% delle aziende nel 2020 e solo il 23% dei consumatori convinto che i propri dati personali siano molto sicuri. Man mano che il malware diventa sempre più onnipresente e sofisticato, un approccio proattivo al rilevamento delle minacce è diventato essenziale. Trend Micro è un leader globale nella sicurezza del cloud ibrido, nella difesa di rete, nella sicurezza per le piccole imprese e nella sicurezza degli endpoint. Per proteggere i dispositivi Android dai virus, l’azienda ha creato Trend Micro Mobile Security, un’app mobile che confronta gli APK (Android Application Package) del Google Play Store con un database di malware noti. Il sistema di rilevamento dei virus funziona come segue:
- Gli APK esterni (Android application package) del Google Play Store vengono sottoposti a crawling.
- I malware noti vengono convertiti in vettori e archiviati in Milvus.
- Anche i nuovi APK vengono convertiti in vettori, quindi confrontati con il database dei malware utilizzando la ricerca per similarità.
- Se un vettore APK è simile a uno qualsiasi dei vettori dei malware, l’app fornisce agli utenti informazioni dettagliate sul virus e sul suo livello di minaccia.
Per funzionare, il sistema deve eseguire una ricerca per similarità altamente efficiente su enormi dataset vettoriali in tempo reale. Inizialmente, Trend Micro utilizzava MySQL. Tuttavia, con l’espansione della sua attività, è aumentato anche il numero di APK con codice dannoso archiviati nel suo database. Il team algoritmico dell’azienda ha iniziato a cercare soluzioni alternative per la ricerca di similarità vettoriale dopo aver rapidamente superato i limiti di MySQL.
Confronto tra soluzioni di ricerca per similarità vettoriale
Sono disponibili diverse soluzioni di ricerca per similarità vettoriale, molte delle quali sono open source. Sebbene le circostanze varino da progetto a progetto, la maggior parte degli utenti trae vantaggio dall’utilizzo di un database vettoriale creato per l’elaborazione e l’analisi di dati non strutturati anziché di una semplice libreria che richiede una configurazione estesa. Di seguito confrontiamo alcune soluzioni popolari di ricerca per similarità vettoriale e spieghiamo perché Trend Micro ha scelto Milvus.
Faiss
Faiss è una libreria sviluppata da Facebook AI Research che consente una ricerca per similarità e un clustering efficienti di vettori densi. Gli algoritmi che contiene cercano vettori di qualsiasi dimensione in insiemi. Faiss è scritto in C++ con wrapper per Python/numpy e supporta diversi indici, tra cui IndexFlatL2, IndexFlatIP, HNSW e IVF.
Sebbene Faiss sia uno strumento incredibilmente utile, presenta dei limiti. Funziona solo come una libreria algoritmica di base, non come un database per la gestione di dataset vettoriali. Inoltre, non offre una versione distribuita, servizi di monitoraggio, SDK o alta disponibilità, che sono le funzionalità chiave della maggior parte dei servizi basati su cloud.
Plug-in basati su Faiss e altre librerie di ricerca ANN
Esistono diversi plug-in costruiti sopra Faiss, NMSLIB e altre librerie di ricerca ANN, progettati per migliorare la funzionalità di base dello strumento sottostante che li alimenta. Elasticsearch (ES) è un motore di ricerca basato sulla libreria Lucene con una serie di tali plugin. Di seguito è riportato un diagramma dell’architettura di un plug-in ES:
Diagramma dell’architettura di un plug-in Elasticsearch.
Il supporto integrato per i sistemi distribuiti è un grande vantaggio di una soluzione ES. Questo fa risparmiare tempo agli sviluppatori e denaro alle aziende grazie al codice che non deve essere scritto. I plug-in ES sono tecnicamente avanzati e diffusi. Elasticsearch fornisce un QueryDSL (domain-specific language), che definisce le query basate su JSON ed è facile da comprendere. Un set completo di servizi ES consente di eseguire contemporaneamente la ricerca vettoriale/testuale e di filtrare i dati scalari.
Amazon, Alibaba e Netease sono alcune delle grandi aziende tecnologiche che attualmente si affidano ai plug-in di Elasticsearch per la ricerca di similarità vettoriale. I principali svantaggi di questa soluzione sono l’elevato consumo di memoria e l’assenza di supporto per l’ottimizzazione delle prestazioni. Al contrario, JD.com ha sviluppato una propria soluzione distribuita basata su Faiss chiamata Vearch. Tuttavia, Vearch è ancora un progetto in fase di incubazione e la sua comunità open-source è relativamente inattiva.
Milvus
Milvus è un database vettoriale open-source creato da Zilliz. È estremamente flessibile, affidabile e rapidissimo. Incapsulando molteplici librerie di indicizzazione ampiamente adottate, come Faiss, NMSLIB e Annoy, Milvus fornisce un set completo di API intuitive, consentendo agli sviluppatori di scegliere il tipo di indice ideale per il loro scenario. Fornisce inoltre soluzioni distribuite e servizi di monitoraggio. Milvus ha una comunità open-source molto attiva e oltre 5,5K stelle su Github.
Milvus supera la concorrenza
Abbiamo raccolto diversi risultati di test dalle varie soluzioni di ricerca di similarità vettoriale menzionate sopra. Come possiamo vedere nella seguente tabella comparativa, Milvus è stato significativamente più veloce della concorrenza nonostante sia stato testato su un dataset di 1 miliardo di vettori a 128 dimensioni.
| Motore | Prestazioni (ms) | Dimensione del dataset (milioni) |
|---|---|---|
| ES | 600 | 1 |
| ES + Alibaba Cloud | 900 | 20 |
| Milvus | 27 | 1000+ |
| SPTAG | Non buono | |
| ES + nmslib, faiss | 90 | 150 |
Un confronto tra soluzioni di ricerca di similarità vettoriale.
Dopo aver valutato i pro e i contro di ciascuna soluzione, Trend Micro ha scelto Milvus per il suo modello di recupero vettoriale. Con prestazioni eccezionali su dataset enormi, nell’ordine dei miliardi, è ovvio perché l’azienda abbia scelto Milvus per un servizio di sicurezza mobile che richiede ricerca di similarità vettoriale in tempo reale.
Progettare un sistema per il rilevamento dei virus in tempo reale
Trend Micro ha più di 10 milioni di APK dannosi archiviati nel suo database MySQL, con 100k nuovi APK aggiunti ogni giorno. Il sistema funziona estraendo e calcolando i valori Thash di diversi componenti di un file APK, quindi utilizza l’algoritmo Sha256 per trasformarlo in file binari e generare valori Sha256 a 256 bit che differenziano l’APK dagli altri. Poiché i valori Sha256 variano con i file APK, un APK può avere un valore Thash combinato e un valore Sha256 univoco.
I valori Sha256 vengono utilizzati solo per differenziare gli APK, mentre i valori Thash vengono utilizzati per il recupero della similarità vettoriale. APK simili possono avere gli stessi valori Thash ma valori Sha256 diversi.
Per rilevare APK con codice malevolo, Trend Micro ha sviluppato un proprio sistema per recuperare valori Thash simili e i corrispondenti valori Sha256. Trend Micro ha scelto Milvus per condurre ricerche istantanee di similarità vettoriale su enormi dataset vettoriali convertiti da valori Thash. Dopo l’esecuzione della ricerca di similarità, i corrispondenti valori Sha256 vengono interrogati in MySQL. All’architettura viene aggiunto anche un livello di caching Redis per mappare i valori Thash ai valori Sha256, riducendo significativamente il tempo di query.
Di seguito è riportato il diagramma dell’architettura del sistema di sicurezza mobile di Trend Micro.
Diagramma dell’architettura per Trend Micro Mobile Security.
Scegliere una metrica di distanza appropriata aiuta a migliorare le prestazioni di classificazione e clustering vettoriale. La seguente tabella mostra le metriche di distanza e gli indici corrispondenti che funzionano con vettori binari.
| Metriche di distanza | Tipi di indice |
|---|---|
| - Jaccard - Tanimoto - Hamming | - FLAT - IVF_FLAT |
| - Superstruttura - Sottostruttura | FLAT |
Metriche di distanza e indici per vettori binari.
Trend Micro converte i valori Thash in vettori binari e li archivia in Milvus. Per questo scenario, Trend Micro utilizza la distanza di Hamming per confrontare i vettori.
Milvus supporterà presto gli ID vettoriali stringa, e gli ID interi non dovranno essere mappati al nome corrispondente in formato stringa. Questo rende superfluo il livello di caching Redis e l’architettura del sistema meno ingombrante.
Trend Micro adotta una soluzione basata sul cloud e distribuisce molte attività su Kubernetes. Per ottenere un’elevata disponibilità, Trend Micro utilizza Mishards, un middleware di sharding per cluster Milvus sviluppato in Python.
Architettura Mishards in Milvus.
Trend Micro separa l’archiviazione e il calcolo della distanza archiviando tutti i vettori nell’EFS (Elastic File System) fornito da AWS. Questa pratica è una tendenza popolare nel settore. Kubernetes viene utilizzato per avviare più nodi di lettura, e sviluppa servizi LoadBalancer su questi nodi di lettura per garantire un’elevata disponibilità.
Per mantenere la coerenza dei dati, Mishards supporta un solo nodo di scrittura. Tuttavia, una versione distribuita di Milvus con supporto per più nodi di scrittura sarà disponibile nei prossimi mesi.
Funzioni di monitoraggio e avviso
Milvus è compatibile con i sistemi di monitoraggio basati su Prometheus e utilizza Grafana, una piattaforma open-source per l’analisi delle serie temporali, per visualizzare varie metriche di prestazione.
Prometheus monitora e archivia le seguenti metriche:
- Metriche di prestazione di Milvus, inclusa la velocità di inserimento, la velocità di query e il tempo di attività di Milvus.
- Metriche di prestazione del sistema, inclusi l’utilizzo di CPU/GPU, il traffico di rete e la velocità di accesso al disco.
- Metriche di archiviazione hardware, incluse le dimensioni dei dati e il numero totale di file.
Il sistema di monitoraggio e avviso funziona come segue:
- Un client Milvus invia dati metrici personalizzati a Pushgateway.
- Pushgateway garantisce che i dati metrici di breve durata ed effimeri vengano inviati in modo sicuro a Prometheus.
- Prometheus continua a prelevare dati da Pushgateway.
- Alertmanager imposta la soglia di avviso per diverse metriche e genera allarmi tramite e-mail o messaggi.
Prestazioni del sistema
Sono passati un paio di mesi dal primo lancio del servizio ThashSearch basato su Milvus. Il grafico seguente mostra che la latenza delle query end-to-end è inferiore a 95 millisecondi.
Latenza delle query per il servizio di ricerca Thash basato su Milvus.
Anche l’inserimento è veloce. Occorrono circa 10 secondi per inserire 3 milioni di vettori a 192 dimensioni. Con l’aiuto di Milvus, le prestazioni del sistema sono state in grado di soddisfare i criteri di prestazione stabiliti da Trend Micro.
Non fare lo sconosciuto
Continua a leggere

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.

Context Engineering Strategies for AI Agents: A Developer’s Guide
Learn practical context engineering strategies for AI agents. Explore frameworks, tools, and techniques to improve reliability, efficiency, and cost.

Vector Databases vs. Hierarchical Databases
Use a vector database for AI-powered similarity search; use a hierarchical database for organizing data in parent-child relationships with efficient top-down access patterns.



