Milvus é um banco de dados de vetores de código aberto desenvolvido pela Zilliz. É conhecido por fornecer armazenamento escalável para grandes quantidades de incorporações vetoriais e permitir pesquisas de similaridade de dados vetoriais de alto desempenho.
A Zilliz desenvolveu o Milvus pela primeira vez em 2017 e contribuiu com o projeto para a Linux® Foundation em 2020. O Milvus agora está disponível tanto como um software de código aberto sob a Apache License 2.0 quanto como um serviço de nuvem totalmente gerenciado da Zilliz.
Os bancos de dados de vetores armazenam e gerenciam conjuntos de dados na forma de vetores. Eles ajudam as organizações a gerenciar dados não estruturados e são críticos para os esforços avançados em inteligência artificial (IA) e aprendizado de máquina (ML).
Vetores são matrizes de números que representam conceitos e objetos complexos, como palavras e imagens.
Dados não estruturados, como texto, vídeo e áudio, constituem uma parte significativa dos dados empresariais atualmente, mas os bancos de dados tradicionais costumam não ser adequados para organizar e gerenciar esses dados.
As organizações podem alimentar esses dados com modelos especializados de incorporação de deep learning, que produzem representações vetoriais chamadas “incorporações”. Por exemplo, a palavra “cat” (gato) pode ser representada pelo vetor [0,2, -0,4, 0,7], enquanto a palavra “dog” (cachorro) pode ser representada por [0,6, 0,1, 0,5].
A transformação de dados em vetores permite que as organizações armazenem diferentes tipos de dados não estruturados em um formato compartilhado em um banco de dados de vetores.
Os vetores também ajudam as organizações a liberar o valor desses dados para IA e ML. Eles capturam as relações semânticas entre elementos, permitindo o processamento eficaz por grandes modelos de linguagem (LLMs) e ferramentas de IA generativa. A maioria das aplicações avançadas de IA e ML atualmente depende de vetores para treinamento e geração de conteúdo.
Assim como outros bancos de dados de vetores, o Milvus oferece às organizações uma maneira de gerenciar e organizar vetores de incorporação. O armazenamento altamente escalável e os recursos de pesquisa de vetores eficientes do banco de dados de vetores Milvus o tornaram uma escolha popular para geração aumentada de recuperação (RAG), sistemas de recomendação e outras aplicações de IA.
O Milvus é um banco de dados de vetores nativo da nuvem com uma arquitetura de várias camadas baseada em microsserviços. O Milvus separa armazenamento e recursos de computação, o que permite que as organizações escalem cada camada de forma independente e horizontal.
O Milvus é compatível com vários modelos de incorporação diferentes. As organizações podem conectar seus modelos ao Milvus, que realiza a ingestão das incorporações juntamente com metadados e outras informações pertinentes. O Milvus aceita uploads de streaming e incorporação em lote.
O Milvus possui quatro camadas:
Camada de acesso: esta é a camada externa, que aceita inputs de usuários e serviços e retorna produções.
Serviço de coordenação: a Zilliz se refere a essa camada como o “cérebro” do sistema, pois coordena o balanceamento de carga, o gerenciamento de dados, a execução de consultas e outras tarefas importantes.
Nós de trabalho: essa camada executa consultas, atualiza dados e cria índices.
Camada de armazenamento de objetos: essa camada inclui um armazenamento de metadados, um intermediário de logs que registra mudanças de dados em tempo real e um armazenamento de objetos que contém instantâneos de logs, arquivos de índice e resultados de computação intermediários.
O Milvus permite pesquisas por similaridade vetorial de alto desempenho, um tipo de pesquisa vetorial que retorna resultados semanticamente semelhantes a uma consulta. O benefício da pesquisa por similaridade é que ela não se limita a correspondências exatas, como seria uma pesquisa tradicional por palavras-chave.
Por exemplo, uma pesquisa por palavra-chave de “melhor restaurante pizza” retornaria somente resultados contendo as palavras “melhor”, “restaurante” e “pizza”. Uma pesquisa por similaridade com a mesma palavra-chave encontraria qualquer resultado para pizzarias altamente recomendadas, mesmo que as palavras exatas “melhor restaurante pizza” não fossem usadas no conteúdo
.O Milvus aceita vários tipos de pesquisa por similaridade, incluindo pesquisa aproximada dos k vizinhos mais próximos (ANN) e ANN dentro de um intervalo.
O Milvus também permite pesquisas híbridas, que combinam pesquisas vetoriais semânticas com outros critérios, como filtragem de metadados ou pesquisa de palavras-chave.
Pesquisas híbridas podem ser mais eficientes e relevantes. Considere uma pesquisa que combine pesquisa por palavra-chave e vetorial. A pesquisa pode primeiro usar palavras-chave específicas para filtrar os resultados com base em correspondências exatas e, em seguida, usar a pesquisa por similaridade vetorial para pesquisar esses resultados filtrados pelo conteúdo mais semanticamente relevante
.O Milvus aceita vários tipos de indexação, incluindo mundo pequeno navegável hierárquico (HNSW), arquivo invertido (IVF) e índices baseados em GPU.
A indexação de vetores ajuda a acelerar as pesquisas. Por exemplo, o HNSW agrupa vetores semelhantes durante o processo de construção do índice, facilitando a localização mais rápida de resultados relevantes.
As camadas do Milvus podem ser escaladas de forma independente umas das outras, o que pode proporcionar às organizações uma maneira eficiente em termos de custo e recursos para lidar com grandes volumes de dados vetoriais e pesquisas intensivas.
O Milvus oferece vários kits de desenvolvimento de software (SDKs) para permitir o desenvolvimento em várias linguagens, incluindo Python (pymilvus), Java e Go.
O Milvus também pode se integrar a ferramentas de análise de dados, como Apache Spark, frameworks como LangChain e modelos de IA generativa, como IBM® watsonx, Llama da Meta e modelos GPT da OpenAI.
Uma grande comunidade de código aberto contribui com correções de bugs, atualizações e outras melhorias para os repositórios do GitHub do Milvus.
Tanto o Pinecone quanto o Milvus oferecem pesquisa de baixa latência e armazenamento escalável, mas o Pinecone é um banco de dados de vetores proprietário e está disponível apenas como um serviço gerenciado.
Assim como o Milvus, o Weaviate é de código aberto e permite pesquisas híbridas. Uma diferença fundamental é que o Milvus oferece mais tipos de indexação do que o Weaviate.
Outro banco de dados de vetores de código aberto é o Qdrant, conhecido por seus sólidos recursos de filtragem de metadados. Embora o Qdrant seja adequado para usos em escala moderada, o Milvus geralmente pode lidar com volumes maiores de dados vetoriais.
O Chroma se concentra na facilidade de uso e na rápida implementação local. Ele não possui uma arquitetura distribuída, o que o torna menos escalável. Enquanto o Chroma é muito usado para prototipagem e testes, o Milvus possibilita uma maior variedade de casos de uso.
As organizações utilizam o Milvus para várias aplicações de IA, incluindo:
Geração aumentada de recuperação (RAG)
Sistemas de recomendação
Pesquisas de mídia
Detecção de anomalias e fraudes
RAG é uma arquitetura que conecta modelos de IA a bases de conhecimento externas para ajudá-los a fornecer resultados mais relevantes e precisos.
O Milvus é comum em implementações de RAG devido à sua compatibilidade com pesquisas híbridas eficientes. Ao combinar a compreensão contextual da pesquisa semântica com a precisão da pesquisa de palavras-chave e da filtragem de metadados, o Milvus ajuda a exibir documentos relevantes, trechos de código e outras informações de fontes de RAG.
CacheGPT, um cache semântico de código aberto para LLMs desenvolvido pela Zilliz, também ajuda o Milvus a viabilizar implementações de RAG. O CacheGPT armazena respostas de aplicações de IA generativa como incorporações de vetores.
Os serviços conectados, como as interfaces RAG, não precisam fazer uma chamada de API para a IA generativa a cada pesquisa. Em vez disso, eles podem verificar o cache primeiro e solicitar a IA generativa somente se a resposta não estiver lá.
O Milvus é popular em sistemas de recomendação que combinam conteúdo, produtos e anúncios com usuários de acordo com comportamentos anteriores.
As preferências do usuário podem ser representadas como vetores, e uma pesquisa por similaridade pode apresentar as representações vetoriais de produtos, anúncios e conteúdo que estão próximos das preferências do usuário.
Os recursos de pesquisa por similaridade do Milvus ajudam a otimizar a pesquisa de imagens, áudio, vídeo e outras pesquisas de mídia.
O Milvus pode ser usado para detectar defeitos em produtos, comparando os vetores de imagens de produtos com outros que representam as formas adequadas desses produtos. Diferenças entre os vetores podem indicar defeitos.
O Milvus também serve para detectar anomalias em outros contextos. Na cibersegurança, os vetores que representam atividades de rede autorizadas podem ser comparados àqueles que representam atividades maliciosas conhecidas. Da mesma forma, em finanças, os vetores que representam transações podem ser analisados para identificar desvios indicativos de fraude.