Criando com Milvus: Detectando vírus Android em tempo real para a Trend Micro
A cibersegurança continua sendo uma ameaça persistente tanto para indivíduos quanto para empresas, com preocupações de privacidade de dados aumentando para 86% das empresas em 2020 e apenas 23% dos consumidores acreditando que seus dados pessoais são muito seguros. À medida que o malware se torna cada vez mais onipresente e sofisticado, uma abordagem proativa para a detecção de ameaças tornou-se essencial. Trend Micro é uma líder global em segurança de nuvem híbrida, defesa de rede, segurança para pequenas empresas e segurança de endpoints. Para proteger dispositivos Android contra vírus, a empresa criou o Trend Micro Mobile Security — um aplicativo móvel que compara APKs (Android Application Package) da Google Play Store com um banco de dados de malware conhecido. O sistema de detecção de vírus funciona da seguinte forma:
- APKs externos (Android application package) da Google Play Store são rastreados.
- Malware conhecido é convertido em vetores e armazenado no Milvus.
- Novos APKs também são convertidos em vetores e, em seguida, comparados ao banco de dados de malware usando busca por similaridade.
- Se um vetor de APK for semelhante a qualquer um dos vetores de malware, o aplicativo fornece aos usuários informações detalhadas sobre o vírus e seu nível de ameaça.
Para funcionar, o sistema precisa realizar busca por similaridade altamente eficiente em enormes conjuntos de dados vetoriais em tempo real. Inicialmente, a Trend Micro usou MySQL. No entanto, à medida que seus negócios se expandiram, também aumentou o número de APKs com código malicioso armazenados em seu banco de dados. A equipe de algoritmos da empresa começou a procurar soluções alternativas de busca por similaridade vetorial depois de rapidamente superar o MySQL.
Comparando soluções de busca por similaridade vetorial
Há várias soluções de busca por similaridade vetorial disponíveis, muitas das quais são de código aberto. Embora as circunstâncias variem de projeto para projeto, a maioria dos usuários se beneficia ao aproveitar um banco de dados vetorial criado para processamento e análise de dados não estruturados, em vez de uma biblioteca simples que exige ampla configuração. Abaixo, comparamos algumas soluções populares de busca por similaridade vetorial e explicamos por que a Trend Micro escolheu o Milvus.
Faiss
Faiss é uma biblioteca desenvolvida pelo Facebook AI Research que permite busca por similaridade e agrupamento eficientes de vetores densos. Os algoritmos que ela contém pesquisam vetores de qualquer tamanho em conjuntos. Faiss é escrito em C++ com wrappers para Python/numpy e oferece suporte a vários índices, incluindo IndexFlatL2, IndexFlatIP, HNSW e IVF.
Embora o Faiss seja uma ferramenta incrivelmente útil, ele tem limitações. Ele funciona apenas como uma biblioteca básica de algoritmos, não como um banco de dados para gerenciar conjuntos de dados vetoriais. Além disso, não oferece uma versão distribuída, serviços de monitoramento, SDKs ou alta disponibilidade, que são os principais recursos da maioria dos serviços baseados em nuvem.
Plug-ins baseados em Faiss e outras bibliotecas de busca ANN
Há vários plug-ins criados sobre Faiss, NMSLIB e outras bibliotecas de busca ANN que são projetados para aprimorar a funcionalidade básica da ferramenta subjacente que os impulsiona. Elasticsearch (ES) é um mecanismo de busca baseado na biblioteca Lucene com vários desses plugins. Abaixo está um diagrama de arquitetura de um plug-in do ES:
Diagrama de arquitetura de um plug-in do Elasticsearch.
O suporte integrado a sistemas distribuídos é uma grande vantagem de uma solução ES. Isso economiza tempo dos desenvolvedores e dinheiro das empresas graças a código que não precisa ser escrito. Os plug-ins do ES são tecnicamente avançados e predominantes. Elasticsearch fornece uma QueryDSL (linguagem específica de domínio), que define consultas com base em JSON e é fácil de compreender. Um conjunto completo de serviços ES torna possível realizar busca vetorial/textual e filtrar dados escalares simultaneamente.
Amazon, Alibaba e Netease são algumas grandes empresas de tecnologia que atualmente dependem de plug-ins do Elasticsearch para busca por similaridade vetorial. As principais desvantagens dessa solução são o alto consumo de memória e a falta de suporte para ajuste de desempenho. Em contraste, a JD.com desenvolveu sua própria solução distribuída baseada no Faiss chamada Vearch. No entanto, o Vearch ainda é um projeto em estágio de incubação e sua comunidade open-source é relativamente inativa.
Milvus
Milvus é um banco de dados vetorial open-source criado pela Zilliz. Ele é altamente flexível, confiável e extremamente rápido. Ao encapsular várias bibliotecas de indexação amplamente adotadas, como Faiss, NMSLIB e Annoy, o Milvus fornece um conjunto abrangente de APIs intuitivas, permitindo que os desenvolvedores escolham o tipo de índice ideal para seu cenário. Ele também fornece soluções distribuídas e serviços de monitoramento. O Milvus tem uma comunidade open-source altamente ativa e mais de 5,5 mil estrelas no Github.
Milvus supera a concorrência
Compilamos uma série de diferentes resultados de testes das várias soluções de busca por similaridade vetorial mencionadas acima. Como podemos ver na tabela de comparação a seguir, o Milvus foi significativamente mais rápido do que a concorrência, apesar de ter sido testado em um conjunto de dados de 1 bilhão de vetores de 128 dimensões.
| Mecanismo | Desempenho (ms) | Tamanho do conjunto de dados (milhões) |
|---|---|---|
| ES | 600 | 1 |
| ES + Alibaba Cloud | 900 | 20 |
| Milvus | 27 | 1000+ |
| SPTAG | Não bom | |
| ES + nmslib, faiss | 90 | 150 |
Uma comparação de soluções de busca por similaridade vetorial.
Depois de pesar os prós e contras de cada solução, a Trend Micro optou pelo Milvus para seu modelo de recuperação vetorial. Com desempenho excepcional em conjuntos de dados massivos, na escala de bilhões, é óbvio por que a empresa escolheu o Milvus para um serviço de segurança móvel que requer busca por similaridade vetorial em tempo real.
Projetando um sistema para detecção de vírus em tempo real
A Trend Micro tem mais de 10 milhões de APKs maliciosos armazenados em seu banco de dados MySQL, com 100 mil novos APKs adicionados por dia. O sistema funciona extraindo e calculando valores Thash de diferentes componentes de um arquivo APK, depois usa o algoritmo Sha256 para transformá-lo em arquivos binários e gerar valores Sha256 de 256 bits que diferenciam o APK dos outros. Como os valores Sha256 variam de acordo com os arquivos APK, um APK pode ter um valor Thash combinado e um valor Sha256 exclusivo.
Os valores Sha256 são usados apenas para diferenciar APKs, e os valores Thash são usados para recuperação por similaridade vetorial. APKs semelhantes podem ter os mesmos valores Thash, mas valores Sha256 diferentes.
Para detectar APKs com código nefasto, a Trend Micro desenvolveu seu próprio sistema para recuperar valores Thash semelhantes e valores Sha256 correspondentes. A Trend Micro escolheu o Milvus para realizar busca instantânea por similaridade vetorial em conjuntos massivos de dados vetoriais convertidos a partir de valores Thash. Depois que a busca por similaridade é executada, os valores Sha256 correspondentes são consultados no MySQL. Uma camada de cache Redis também é adicionada à arquitetura para mapear valores Thash para valores Sha256, reduzindo significativamente o tempo de consulta.
Abaixo está o diagrama de arquitetura do sistema de segurança móvel da Trend Micro.
Diagrama de arquitetura do Trend Micro Mobile Security.
Escolher uma métrica de distância apropriada ajuda a melhorar o desempenho da classificação e do agrupamento de vetores. A tabela a seguir mostra as métricas de distância e os índices correspondentes que funcionam com vetores binários.
| Métricas de distância | Tipos de índice |
|---|---|
| - Jaccard - Tanimoto - Hamming | - FLAT - IVF_FLAT |
| - Superestrutura - Subestrutura | FLAT |
Métricas de distância e índices para vetores binários.
A Trend Micro converte valores Thash em vetores binários e os armazena no Milvus. Para este cenário, a Trend Micro está usando a distância de Hamming para comparar vetores.
Em breve, o Milvus oferecerá suporte a ID de vetor em string, e IDs inteiros não precisarão ser mapeados para o nome correspondente em formato de string. Isso torna a camada de cache do Redis desnecessária e a arquitetura do sistema menos volumosa.
A Trend Micro adota uma solução baseada em nuvem e implanta muitas tarefas no Kubernetes. Para alcançar alta disponibilidade, a Trend Micro usa o Mishards, um middleware de sharding de cluster Milvus desenvolvido em Python.
Arquitetura do Mishards no Milvus.
A Trend Micro separa o armazenamento e o cálculo de distância armazenando todos os vetores no EFS (Elastic File System) fornecido pela AWS. Essa prática é uma tendência popular no setor. O Kubernetes é usado para iniciar vários nós de leitura e desenvolve serviços LoadBalancer nesses nós de leitura para garantir alta disponibilidade.
Para manter a consistência dos dados, o Mishards oferece suporte a apenas um nó de escrita. No entanto, uma versão distribuída do Milvus com suporte a vários nós de escrita estará disponível nos próximos meses.
Funções de Monitoramento e Alerta
O Milvus é compatível com sistemas de monitoramento criados com o Prometheus e usa o Grafana, uma plataforma open-source para análises de séries temporais, para visualizar várias métricas de desempenho.
O Prometheus monitora e armazena as seguintes métricas:
- Métricas de desempenho do Milvus, incluindo velocidade de inserção, velocidade de consulta e tempo de atividade do Milvus.
- Métricas de desempenho do sistema, incluindo uso de CPU/GPU, tráfego de rede e velocidade de acesso ao disco.
- Métricas de armazenamento de hardware, incluindo tamanho dos dados e número total de arquivos.
O sistema de monitoramento e alerta funciona da seguinte forma:
- Um cliente Milvus envia dados de métricas personalizadas para o Pushgateway.
- O Pushgateway garante que dados de métricas efêmeros e de curta duração sejam enviados com segurança para o Prometheus.
- O Prometheus continua coletando dados do Pushgateway.
- O Alertmanager define o limite de alerta para diferentes métricas e emite alarmes por e-mails ou mensagens.
Desempenho do Sistema
Alguns meses se passaram desde que o serviço ThashSearch criado com o Milvus foi lançado pela primeira vez. O gráfico abaixo mostra que a latência de consulta de ponta a ponta é inferior a 95 milissegundos.
Latência de consulta para o serviço de pesquisa Thash criado com o Milvus.
A inserção também é rápida. Leva cerca de 10 segundos para inserir 3 milhões de vetores de 192 dimensões. Com a ajuda do Milvus, o desempenho do sistema conseguiu atender aos critérios de desempenho definidos pela Trend Micro.
Mantenha contato
Continue lendo

Top 10 Context Engineering Techniques You Should Know for Production RAG
A practical guide to context engineering for production LLM systems, covering RAG, context processing, memory, agents, and multimodal context.

Zilliz Cloud Delivers Better Performance and Lower Costs with Arm Neoverse-based AWS Graviton
Zilliz Cloud adopts Arm-based AWS Graviton3 CPUs to cut costs, speed up AI vector search, and power billion-scale RAG and semantic search workloads.

Democratizing AI: Making Vector Search Powerful and Affordable
Zilliz democratizes AI vector search with Milvus 2.6 and Zilliz Cloud for powerful, affordable scalability, cutting costs in infrastructure, operations, and development.



