O que é o Milvus?
O Milvus é uma base de dados vetorial de alto desempenho e altamente escalável que funciona de forma eficiente numa vasta gama de ambientes, desde um computador portátil a sistemas distribuídos de grande escala. Está disponível como software de código aberto e como um serviço na nuvem.
O Milvus é um projeto de código aberto da LF AI & Data Foundation, distribuído ao abrigo da licença Apache 2.0. A maioria dos colaboradores são especialistas da comunidade de computação de alto desempenho (HPC), especializados na construção de sistemas de grande escala e na otimização de código sensível ao hardware. Os principais colaboradores incluem profissionais da Zilliz, ARM, NVIDIA, AMD, Intel, Meta, IBM, Salesforce, Alibaba e Microsoft.
Dados não estruturados, Embeddings e Milvus
Dados não estruturados, como texto, imagens e áudio, variam em formato e carregam uma rica semântica subjacente, o que torna sua análise desafiadora. Para gerir esta complexidade, os embeddings são utilizados para converter dados não estruturados em vectores numéricos que captam as suas caraterísticas essenciais. Estes vectores são depois armazenados numa base de dados vetorial, permitindo pesquisas e análises rápidas e escaláveis.
Milvus oferece capacidades robustas de modelação de dados, permitindo-lhe organizar os seus dados não estruturados ou multimodais em colecções estruturadas. Suporta uma vasta gama de tipos de dados para diferentes modelações de atributos, incluindo tipos numéricos e de caracteres comuns, vários tipos de vectores, matrizes, conjuntos e JSON, poupando-lhe o esforço de manter vários sistemas de bases de dados.
Dados não estruturados, embeddings e Milvus
O Milvus oferece três modos de implantação, cobrindo uma ampla gama de escalas de dados - desde a prototipagem local em Jupyter Notebooks até clusters Kubernetes massivos que gerenciam dezenas de bilhões de vetores:
- O Milvus Lite é uma biblioteca Python que pode ser facilmente integrada nas suas aplicações. Como uma versão leve do Milvus, é ideal para prototipagem rápida em Jupyter Notebooks ou execução em dispositivos de borda com recursos limitados. Saiba mais.
- O Milvus Standalone é uma implantação de servidor de máquina única, com todos os componentes agrupados em uma única imagem Docker para uma implantação conveniente. Saiba mais.
- O Milvus Distributed pode ser implementado em clusters Kubernetes, apresentando uma arquitetura nativa da cloud concebida para cenários à escala de mil milhões ou ainda maiores. Essa arquitetura garante redundância em componentes críticos. Saiba mais.
O que torna o Milvus tão rápido?
Milvus foi concebido desde o primeiro dia para ser um sistema de base de dados vetorial altamente eficiente. Na maioria dos casos, Milvus supera outros bancos de dados vetoriais em 2-5x (veja os resultados do VectorDBBench). Esse alto desempenho é o resultado de várias decisões importantes de projeto:
Otimização sensível ao hardware: Para acomodar o Milvus em vários ambientes de hardware, optimizámos o seu desempenho especificamente para muitas arquitecturas e plataformas de hardware, incluindo AVX512, SIMD, GPUs e SSD NVMe.
Algoritmos de pesquisa avançados: O Milvus suporta uma vasta gama de algoritmos de indexação/pesquisa na memória e no disco, incluindo IVF, HNSW, DiskANN, entre outros, todos profundamente optimizados. Em comparação com implementações populares como FAISS e HNSWLib, Milvus oferece desempenho 30%-70% melhor.
Mecanismo de pesquisa em C++: Mais de 80% do desempenho de uma base de dados vetorial é determinado pelo seu motor de pesquisa. O Milvus utiliza C++ para este componente crítico devido ao elevado desempenho da linguagem, à otimização de baixo nível e à gestão eficiente dos recursos. Mais importante ainda, Milvus integra numerosas optimizações de código sensíveis ao hardware, que vão desde a vectorização ao nível da montagem até à paralelização e programação multi-thread, para tirar o máximo partido das capacidades do hardware.
Orientado a colunas: Milvus é um sistema de banco de dados vetorial orientado a colunas. As principais vantagens vêm dos padrões de acesso aos dados. Ao efetuar consultas, uma base de dados orientada por colunas lê apenas os campos específicos envolvidos na consulta, em vez de linhas inteiras, o que reduz consideravelmente a quantidade de dados acedidos. Além disso, as operações em dados baseados em colunas podem ser facilmente vectorizadas, permitindo que as operações sejam aplicadas em todas as colunas de uma só vez, melhorando ainda mais o desempenho.
O que torna o Milvus tão escalável
Em 2022, Milvus suportou vetores de escala de bilhões e, em 2023, escalou até dezenas de bilhões com estabilidade consistente, alimentando cenários de grande escala para mais de 300 grandes empresas, incluindo Salesforce, PayPal, Shopee, Airbnb, eBay, NVIDIA, IBM, AT&T, LINE, ROBLOX, Inflection, etc.
A arquitetura de sistema nativa da nuvem e altamente desacoplada de Milvus garante que o sistema pode expandir-se continuamente à medida que os dados crescem:
Arquitetura de sistema altamente dissociada de Milvus
O próprio Milvus é totalmente sem estado, pelo que pode ser facilmente escalado com a ajuda de Kubernetes ou nuvens públicas. Além disso, os componentes do Milvus são bem desacoplados, com as três tarefas mais críticas - pesquisa, inserção de dados e indexação/compactação - projetadas como processos facilmente paralelizados, com lógica complexa separada. Isto assegura que o nó de consulta correspondente, o nó de dados e o nó de índice podem ser escalados independentemente, optimizando o desempenho e a eficiência de custos.
Tipos de pesquisas suportadas pelo Milvus
Milvus suporta vários tipos de funções de pesquisa para satisfazer as exigências de diferentes casos de utilização:
- Pesquisa ANN: Encontra os K vectores de topo mais próximos do seu vetor de consulta.
- Pesquisa de filtragem: Executa a pesquisa ANN sob condições de filtragem especificadas.
- Pesquisa de intervalo: Encontra vetores dentro de um raio especificado a partir do vetor de consulta.
- Pesquisa híbrida: Realiza a pesquisa ANN com base em vários campos vetoriais.
- Pesquisa de palavras-chave: Pesquisa de palavras-chave com base no BM25.
- Reranking: Ajusta a ordem dos resultados da pesquisa com base em critérios adicionais ou num algoritmo secundário, refinando os resultados iniciais da pesquisa ANN.
- Buscar: Recupera dados pelas suas chaves primárias.
- Consulta: Recupera dados utilizando expressões específicas.
Conjunto abrangente de funcionalidades
Para além das principais funcionalidades de pesquisa mencionadas acima, o Milvus também fornece um conjunto de funcionalidades implementadas em torno das pesquisas ANN para que possa utilizar plenamente as suas capacidades.
API e SDK
- API RESTful (oficial)
- PyMilvus (Python SDK) (oficial)
- Go SDK (oficial)
- Java SDK (oficial)
- Node.js (JavaScript) SDK (oficial)
- C# (contribuição da Microsoft)
Tipos de dados avançados
Para além dos tipos de dados primitivos, o Milvus suporta vários tipos de dados avançados e as respectivas métricas de distância aplicáveis.
Aceleração
Algoritmos de Busca O Milvus suporta um conjunto de algoritmos de indexação e busca ajustáveis. Para obter detalhes, consulte Índice na memória, Índice no disco e Índice de GPU.
Partições e chaves de partição As partições são subdivisões de uma coleção Milvus. É possível escolher um campo escalar como chave de partição para um melhor desempenho de pesquisa. Para obter detalhes, consulte Gerenciar partições e Usar chave de partição.
Modelo de consistência ajustável A consistência garante que cada nó ou réplica do Milvus tenha a mesma visão dos dados ao escrever ou ler dados em um determinado momento. É possível ajustar facilmente o nível de consistência ao realizar pesquisas ANN no Milvus. Para obter detalhes, consulte Consistência.
Importação de dados de alto rendimento Para importar um grande volume de dados para o Milvus em vez de inseri-los um após o outro, considere usar nossas ferramentas de importação de dados de alto rendimento. Para mais detalhes, consulte Preparar dados de origem e Importar dados.
Suporte Multi-tenancy Milvus implementou uma série de caraterísticas orientadas para cenários multi-tenancy, incluindo Partition Key, Clustering Key, e mais. Para obter detalhes, consulte Estratégias de multilocação.
Segurança e Autorização
Modelo de consistência ajustável A consistência garante que cada nó ou réplica do Milvus tenha a mesma visão dos dados ao escrever ou ler dados em um determinado momento. É possível ajustar facilmente o nível de consistência ao realizar pesquisas ANN no Milvus. Para obter detalhes, consulte Consistência.
Isolamento de dados e controlo de recursos Para cenários de multi-tenancy, o isolamento de dados é o requisito básico de segurança. Milvus implementa vários recursos para resolver suas preocupações de segurança. Para obter detalhes, consulte Gerenciar grupos de recursos e Compactação de clustering.
Integrações de IA
Integrações de modelos de incorporação Os modelos de incorporação convertem dados não estruturados para a sua representação numérica num espaço de dados de elevada dimensão para que os possa armazenar em Milvus. Atualmente, o PyMilvus, o SDK Python, integra vários modelos de incorporação para que possa preparar rapidamente os seus dados em incorporação de vectores. Para obter detalhes, consulte Visão geral da incorporação.
Integrações de modelos de ranqueamento No domínio da recuperação de informações e da IA generativa, um ranqueador é uma ferramenta essencial que otimiza a ordem dos resultados das pesquisas iniciais. O PyMilvus também integra vários modelos de reranking para otimizar a ordem dos resultados retornados das pesquisas iniciais. Para obter detalhes, consulte Visão geral dos ranqueadores.
LangChain e outras integrações de ferramentas de IA Na era da GenAI, as ferramentas, como a LangChain, ganham muita atenção dos programadores de aplicações. Como componente central, o Milvus serve normalmente como armazém de vectores nessas ferramentas. Para saber como integrar o Milvus nas suas ferramentas de IA favoritas, consulte as nossas Integrações e Tutoriais.
Ferramentas e Ecossistema
Attu Attu é um GUI intuitivo e tudo-em-um que o ajuda a gerir o Milvus e os dados que armazena. Para mais informações, consulte o repositório Attu.
Birdwatcher Birdwatcher é uma ferramenta de depuração para o Milvus. Usando-o para se conectar ao etcd, você pode verificar o estado do seu sistema Milvus ou configurá-lo em tempo real. Para obter detalhes, consulte BirdWatcher.
Integrações do Promethus e do Grafana O Prometheus é um kit de ferramentas de monitoramento e alerta de sistema de código aberto para o Kubernetes. Grafana é uma pilha de visualização de código aberto que pode se conectar a todas as fontes de dados. Você pode usar o Promethus e o Grafana como provedor de serviços de monitoramento para monitorar visualmente o desempenho do Milvus distribuído. Para obter detalhes, consulte Implantação de serviços de monitoramento.
Milvus Backup O Milvus Backup é uma ferramenta que permite aos utilizadores fazer cópias de segurança e restaurar dados do Milvus. Ele fornece tanto CLI e API para se encaixar em diferentes cenários de aplicação. Para mais informações, consulte Milvus Backup.
Milvus Capture Data Change (CDC) Milvus-CDC pode capturar e sincronizar dados incrementais em instâncias Milvus e garante a fiabilidade dos dados de negócios, transferindo-os perfeitamente entre instâncias de origem e de destino, permitindo fácil backup incremental e recuperação de desastres. Para mais informações, consulte Milvus CDC.
Conectores do Milvus O Milvus planeou um conjunto de conectores para que possa integrar o Milvus com ferramentas de terceiros, como o Apache Spark. Atualmente, pode utilizar o nosso Conector Spark para alimentar os dados do Milvus com o Apache Spark para processamento de aprendizagem automática. Para obter detalhes, consulte o Conector Spark-Milvus.
Vetor Transmission Services (VTS) O Milvus fornece um conjunto de ferramentas para transferir os seus dados entre uma instância Milvus e um conjunto de fontes de dados, incluindo clusters Zilliz, Elasticsearch, Postgres (PgVector) e outra instância Milvus. Para mais informações, consulte Migrações.