🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI

O que há no Milvus 1.0?

  • Engineering
April 29, 2021
milvus

Milvus.jpeg Milvus.jpeg

O Milvus é uma base de dados vetorial de código aberto concebida para gerir conjuntos de dados vectoriais massivos de milhões, biliões ou mesmo triliões. O Milvus tem amplas aplicações que abrangem a descoberta de novos medicamentos, visão computacional, condução autónoma, motores de recomendação, chatbots e muito mais.

Em março de 2021, a Zilliz, a empresa por detrás do Milvus, lançou a primeira versão de suporte a longo prazo da plataforma - Milvus v1.0. Após meses de testes exaustivos, uma versão estável e pronta para produção da base de dados vetorial mais popular do mundo está pronta para o horário nobre. Este artigo do blogue aborda alguns fundamentos do Milvus, bem como as principais funcionalidades da v1.0.


Distribuições do Milvus

O Milvus está disponível em distribuições somente para CPU e habilitadas para GPU. A primeira depende exclusivamente da CPU para a construção e pesquisa de índices; a segunda permite a pesquisa híbrida de CPU e GPU e a construção de índices que acelera ainda mais o Milvus. Por exemplo, usando a distribuição híbrida, a CPU pode ser usada para pesquisa e a GPU para criação de índices, melhorando ainda mais a eficiência da consulta.

Ambas as distribuições do Milvus estão disponíveis no Docker. Pode compilar o Milvus a partir do Docker (se o seu sistema operativo o suportar) ou compilar o Milvus a partir do código fonte no Linux (outros sistemas operativos não são suportados).


Incorporação de vectores

Os vetores são armazenados no Milvus como entidades. Cada entidade tem um campo de identificação do vetor e um campo do vetor. O Milvus v1.0 suporta apenas IDs de vectores inteiros. Ao criar uma coleção no Milvus, os IDs dos vectores podem ser gerados automaticamente ou definidos manualmente. O Milvus garante que os IDs de vetor gerados automaticamente são únicos, no entanto, os IDs definidos manualmente podem ser duplicados no Milvus. Se definir manualmente os IDs, os utilizadores são responsáveis por garantir que todos os IDs são únicos.


Partições

O Milvus suporta a criação de partições numa coleção. Em situações em que os dados são inseridos regularmente e os dados históricos não são significativos (por exemplo, dados de streaming), as partições podem ser utilizadas para acelerar a pesquisa de semelhanças vectoriais. Uma coleção pode ter até 4.096 partições. Especificar uma pesquisa de vectores dentro de uma partição específica limita a pesquisa e pode reduzir significativamente o tempo de consulta, particularmente para colecções que contêm mais de um trilião de vectores.


Optimizações do algoritmo de índice

O Milvus é construído sobre várias bibliotecas de índices amplamente adotadas, incluindo Faiss, NMSLIB e Annoy. O Milvus é muito mais do que um invólucro básico para essas bibliotecas de índices. Aqui estão alguns dos principais aprimoramentos que foram feitos nas bibliotecas subjacentes:

  • Optimizações de desempenho do índice IVF utilizando o algoritmo Elkan k-means.
  • Optimizações de pesquisa FLAT.
  • Suporte ao índice híbrido IVF_SQ8H, que pode reduzir o tamanho dos arquivos de índice em até 75% sem sacrificar a precisão dos dados. O IVF_SQ8H foi desenvolvido com base no IVF_SQ8, com recuperação idêntica, mas velocidade de consulta muito mais rápida. Ele foi projetado especificamente para o Milvus para aproveitar a capacidade de processamento paralelo das GPUs e o potencial de sinergia entre o co-processamento CPU/GPU.
  • Compatibilidade dinâmica do conjunto de instruções.


Pesquisa, criação de índices e outras optimizações do Milvus

As seguintes otimizações foram feitas no Milvus para melhorar o desempenho da pesquisa e da criação de índices.

  • O desempenho da pesquisa é otimizado em situações em que o número de consultas (nq) é menor que o número de threads da CPU.
  • O Milvus combina os pedidos de pesquisa de um cliente que utilizam o mesmo topK e parâmetros de pesquisa.
  • A construção do índice é suspensa quando chegam pedidos de pesquisa.
  • O Milvus pré-carrega automaticamente as colecções para a memória no início.
  • Vários dispositivos GPU podem ser atribuídos para acelerar a pesquisa de similaridade de vectores.


Métricas de distância

O Milvus é uma base de dados de vectores criada para alimentar a pesquisa por semelhança de vectores. A plataforma foi criada com MLOps e aplicações de IA de nível de produção em mente. O Milvus suporta uma vasta gama de métricas de distância para calcular a semelhança, como a distância euclidiana (L2), o produto interno (IP), a distância Jaccard, Tanimoto, a distância Hamming, a superestrutura e a subestrutura. As duas últimas métricas são normalmente utilizadas na pesquisa molecular e na descoberta de novos fármacos através de IA.


Registo

Milvus suporta rotação de logs. No ficheiro de configuração do sistema, milvus.yaml, é possível definir o tamanho de um único ficheiro de registo, o número de ficheiros de registo e a saída de registo para stdout.


Solução distribuída

Mishards, um middleware de sharding Milvus, é a solução distribuída para Milvus Com um nó de escrita e um número ilimitado de nós de leitura, Mishards liberta o potencial computacional do cluster de servidores. As suas caraterísticas incluem encaminhamento de pedidos, divisão de leitura/escrita, escalonamento dinâmico/horizontal e muito mais.


Monitorização

O Milvus é compatível com o Prometheus, um conjunto de ferramentas de monitorização de sistemas e alertas de código aberto. O Milvus adiciona suporte ao Pushgateway no Prometheus, possibilitando que o Prometheus adquira métricas de lote de curta duração. O sistema de monitoramento e alertas funciona da seguinte forma:

  • O servidor Milvus envia dados de métricas personalizados para o Pushgateway.
  • O Pushgateway garante que os dados de métricas efémeras sejam enviados com segurança para o Prometheus.
  • O Prometheus continua a extrair dados do Pushgateway.
  • O Alertmanager é utilizado para definir o limiar de alerta para diferentes indicadores e enviar alertas por correio eletrónico ou mensagem.


Gestão de metadados

Por defeito, o Milvus utiliza o SQLite para a gestão dos metadados. O SQLite está implementado no Milvus e não necessita de configuração. Num ambiente de produção, recomenda-se a utilização do MySQL para a gestão de metadados.


Participe na nossa comunidade de código aberto:

  • Encontre ou contribua para o Milvus no GitHub.
  • Interaja com a comunidade através do Slack.
  • Ligue-se a nós no Twitter.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Continue Lendo