Créer avec Milvus : détecter les virus Android en temps réel pour Trend Micro
La cybersécurité reste une menace persistante pour les particuliers comme pour les entreprises, les préoccupations relatives à la confidentialité des données ayant augmenté pour 86 % des entreprises en 2020, et seulement 23 % des consommateurs estimant que leurs données personnelles sont très sécurisées. À mesure que les logiciels malveillants deviennent progressivement plus omniprésents et sophistiqués, une approche proactive de la détection des menaces est devenue essentielle. Trend Micro est un leader mondial de la sécurité du cloud hybride, de la défense réseau, de la sécurité des petites entreprises et de la sécurité des terminaux. Pour protéger les appareils Android contre les virus, l’entreprise a créé Trend Micro Mobile Security, une application mobile qui compare les APK (Android Application Package) du Google Play Store à une base de données de logiciels malveillants connus. Le système de détection de virus fonctionne comme suit :
- Les APK externes (Android application package) du Google Play Store sont explorés.
- Les logiciels malveillants connus sont convertis en vecteurs et stockés dans Milvus.
- Les nouveaux APK sont également convertis en vecteurs, puis comparés à la base de données de logiciels malveillants à l’aide d’une recherche par similarité.
- Si un vecteur d’APK est similaire à l’un des vecteurs de logiciels malveillants, l’application fournit aux utilisateurs des informations détaillées sur le virus et son niveau de menace.
Pour fonctionner, le système doit effectuer une recherche par similarité très efficace sur d’immenses jeux de données vectorielles en temps réel. Au départ, Trend Micro utilisait MySQL. Cependant, à mesure que son activité s’est développée, le nombre d’APK contenant du code malveillant stockés dans sa base de données a lui aussi augmenté. L’équipe algorithmique de l’entreprise a commencé à rechercher des solutions alternatives de recherche par similarité vectorielle après avoir rapidement dépassé les capacités de MySQL.
Comparaison des solutions de recherche par similarité vectorielle
Il existe un certain nombre de solutions de recherche par similarité vectorielle, dont beaucoup sont open source. Bien que les circonstances varient d’un projet à l’autre, la plupart des utilisateurs gagnent à s’appuyer sur une base de données vectorielle conçue pour le traitement et l’analyse de données non structurées plutôt que sur une simple bibliothèque nécessitant une configuration poussée. Ci-dessous, nous comparons quelques solutions populaires de recherche par similarité vectorielle et expliquons pourquoi Trend Micro a choisi Milvus.
Faiss
Faiss est une bibliothèque développée par Facebook AI Research qui permet une recherche par similarité et un clustering efficaces de vecteurs denses. Les algorithmes qu’elle contient recherchent des vecteurs de n’importe quelle taille dans des ensembles. Faiss est écrit en C++ avec des wrappers pour Python/numpy, et prend en charge un certain nombre d’index, notamment IndexFlatL2, IndexFlatIP, HNSW et IVF.
Bien que Faiss soit un outil incroyablement utile, il présente des limites. Il ne fonctionne que comme une bibliothèque d’algorithmes de base, et non comme une base de données pour gérer des jeux de données vectorielles. De plus, il ne propose pas de version distribuée, de services de surveillance, de SDK ni de haute disponibilité, qui sont les fonctionnalités clés de la plupart des services basés sur le cloud.
Plug-ins basés sur Faiss et d’autres bibliothèques de recherche ANN
Il existe plusieurs plug-ins construits au-dessus de Faiss, NMSLIB et d’autres bibliothèques de recherche ANN, conçus pour améliorer les fonctionnalités de base de l’outil sous-jacent qui les alimente. Elasticsearch (ES) est un moteur de recherche basé sur la bibliothèque Lucene et doté d’un certain nombre de ces plugins. Voici ci-dessous un diagramme d’architecture d’un plug-in ES :
Diagramme d’architecture d’un plug-in Elasticsearch.
La prise en charge intégrée des systèmes distribués est un avantage majeur d’une solution ES. Cela fait gagner du temps aux développeurs et de l’argent aux entreprises grâce à du code qui n’a pas besoin d’être écrit. Les plug-ins ES sont techniquement avancés et répandus. Elasticsearch fournit un QueryDSL (domain-specific language), qui définit des requêtes basées sur JSON et est facile à comprendre. Un ensemble complet de services ES permet d’effectuer simultanément une recherche vectorielle/texte et de filtrer des données scalaires.
Amazon, Alibaba et Netease font partie des quelques grandes entreprises technologiques qui s’appuient actuellement sur des plug-ins Elasticsearch pour la recherche de similarité vectorielle. Les principaux inconvénients de cette solution sont une forte consommation de mémoire et l’absence de prise en charge de l’optimisation des performances. En revanche, JD.com a développé sa propre solution distribuée basée sur Faiss, appelée Vearch. Cependant, Vearch est encore un projet en phase d’incubation et sa communauté open source est relativement inactive.
Milvus
Milvus est une base de données vectorielle open source créée par Zilliz. Elle est très flexible, fiable et extrêmement rapide. En encapsulant plusieurs bibliothèques d’index largement adoptées, telles que Faiss, NMSLIB et Annoy, Milvus fournit un ensemble complet d’API intuitives, permettant aux développeurs de choisir le type d’index idéal pour leur scénario. Elle fournit également des solutions distribuées et des services de surveillance. Milvus dispose d’une communauté open source très active et de plus de 5,5K étoiles sur Github.
Milvus surpasse la concurrence
Nous avons compilé un certain nombre de résultats de tests différents provenant des diverses solutions de recherche de similarité vectorielle mentionnées ci-dessus. Comme nous pouvons le voir dans le tableau comparatif suivant, Milvus était nettement plus rapide que la concurrence, malgré un test effectué sur un jeu de données de 1 milliard de vecteurs à 128 dimensions.
| Moteur | Performance (ms) | Taille du jeu de données (millions) |
|---|---|---|
| ES | 600 | 1 |
| ES + Alibaba Cloud | 900 | 20 |
| Milvus | 27 | 1000+ |
| SPTAG | Pas bon | |
| ES + nmslib, faiss | 90 | 150 |
Une comparaison des solutions de recherche de similarité vectorielle.
Après avoir pesé le pour et le contre de chaque solution, Trend Micro a choisi Milvus pour son modèle de récupération vectorielle. Avec des performances exceptionnelles sur des jeux de données massifs, à l’échelle du milliard, il est évident pourquoi l’entreprise a choisi Milvus pour un service de sécurité mobile nécessitant une recherche de similarité vectorielle en temps réel.
Conception d’un système de détection de virus en temps réel
Trend Micro possède plus de 10 millions d’APK malveillants stockés dans sa base de données MySQL, avec 100 000 nouveaux APK ajoutés chaque jour. Le système fonctionne en extrayant et en calculant les valeurs Thash de différents composants d’un fichier APK, puis utilise l’algorithme Sha256 pour les transformer en fichiers binaires et générer des valeurs Sha256 de 256 bits qui différencient l’APK des autres. Comme les valeurs Sha256 varient selon les fichiers APK, un APK peut avoir une valeur Thash combinée et une valeur Sha256 unique.
Les valeurs Sha256 sont uniquement utilisées pour différencier les APK, et les valeurs Thash sont utilisées pour la récupération de similarité vectorielle. Des APK similaires peuvent avoir les mêmes valeurs Thash mais des valeurs Sha256 différentes.
Pour détecter les APK contenant du code malveillant, Trend Micro a développé son propre système de récupération de valeurs Thash similaires et des valeurs Sha256 correspondantes. Trend Micro a choisi Milvus pour effectuer une recherche de similarité vectorielle instantanée sur d’immenses jeux de données vectorielles convertis à partir de valeurs Thash. Une fois la recherche de similarité effectuée, les valeurs Sha256 correspondantes sont interrogées dans MySQL. Une couche de mise en cache Redis est également ajoutée à l’architecture pour mapper les valeurs Thash aux valeurs Sha256, réduisant considérablement le temps de requête.
Ci-dessous se trouve le diagramme d’architecture du système de sécurité mobile de Trend Micro.
Diagramme d’architecture pour Trend Micro Mobile Security.
Le choix d’une métrique de distance appropriée permet d’améliorer les performances de classification et de clustering des vecteurs. Le tableau suivant présente les métriques de distance et les index correspondants qui fonctionnent avec les vecteurs binaires.
| Métriques de distance | Types d’index |
|---|---|
| - Jaccard - Tanimoto - Hamming | - FLAT - IVF_FLAT |
| - Superstructure - Substructure | FLAT |
Métriques de distance et index pour les vecteurs binaires.
Trend Micro convertit les valeurs Thash en vecteurs binaires et les stocke dans Milvus. Dans ce scénario, Trend Micro utilise la distance de Hamming pour comparer les vecteurs.
Milvus prendra bientôt en charge les ID de vecteurs sous forme de chaîne, et les ID entiers n’auront plus besoin d’être mappés au nom correspondant au format chaîne. Cela rend la couche de mise en cache Redis inutile et l’architecture du système moins lourde.
Trend Micro adopte une solution cloud et déploie de nombreuses tâches sur Kubernetes. Pour atteindre une haute disponibilité, Trend Micro utilise Mishards, un middleware de partitionnement de cluster Milvus développé en Python.
Architecture de Mishards dans Milvus.
Trend Micro sépare le stockage et le calcul de distance en stockant tous les vecteurs dans l’EFS (Elastic File System) fourni par AWS. Cette pratique est une tendance populaire dans l’industrie. Kubernetes est utilisé pour démarrer plusieurs nœuds de lecture, et développe des services LoadBalancer sur ces nœuds de lecture afin d’assurer une haute disponibilité.
Pour maintenir la cohérence des données, Mishards ne prend en charge qu’un seul nœud d’écriture. Cependant, une version distribuée de Milvus avec prise en charge de plusieurs nœuds d’écriture sera disponible dans les mois à venir.
Fonctions de surveillance et d’alerte
Milvus est compatible avec les systèmes de surveillance basés sur Prometheus, et utilise Grafana, une plateforme open source d’analyse de séries temporelles, pour visualiser diverses métriques de performance.
Prometheus surveille et stocke les métriques suivantes :
- Les métriques de performance de Milvus, notamment la vitesse d’insertion, la vitesse de requête et le temps de disponibilité de Milvus.
- Les métriques de performance du système, notamment l’utilisation du CPU/GPU, le trafic réseau et la vitesse d’accès au disque.
- Les métriques de stockage matériel, notamment la taille des données et le nombre total de fichiers.
Le système de surveillance et d’alerte fonctionne comme suit :
- Un client Milvus envoie des données de métriques personnalisées à Pushgateway.
- Pushgateway garantit que les données de métriques éphémères et de courte durée sont envoyées en toute sécurité à Prometheus.
- Prometheus continue de récupérer les données depuis Pushgateway.
- Alertmanager définit le seuil d’alerte pour différentes métriques et déclenche des alertes par e-mails ou messages.
Performance du système
Quelques mois se sont écoulés depuis le premier lancement du service ThashSearch construit sur Milvus. Le graphique ci-dessous montre que la latence de requête de bout en bout est inférieure à 95 millisecondes.
Latence de requête pour le service de recherche Thash construit sur Milvus.
L’insertion est également rapide. Il faut environ 10 secondes pour insérer 3 millions de vecteurs à 192 dimensions. Avec l’aide de Milvus, les performances du système ont pu répondre aux critères de performance définis par Trend Micro.
Ne soyez pas un inconnu
Continuer à lire

Introducing Functions and Model Inference on Zilliz Cloud: Automatic Embedding and Reranking with Hosted Models
Zilliz Cloud Functions auto-generate embeddings via OpenAI, Voyage AI, Cohere, or Zilliz Hosted Models. Built-in reranking — just insert text and search.

How to Improve Retrieval Quality for Japanese Text with Sudachi, Milvus/Zilliz, and AWS Bedrock
Learn how Sudachi normalization and Milvus/Zilliz hybrid search improve Japanese RAG accuracy with BM25 + vector fusion, AWS Bedrock embeddings, and practical code examples.

Zilliz Cloud Now Available in Azure North Europe: Bringing AI-Powered Vector Search Closer to European Customers
The addition of the Azure North Europe (Ireland) region further expands our global footprint to better serve our European customers.



