O que é o Banco de Dados de Vetores Milvus?

O Milvus foi criado em 2019 com o principal objetivo de armazenar, indexar e gerenciar vetores de incorporação em larga escala gerados por redes neurais profundas e outros modelos de aprendizado de máquina (ML).

Como um banco de dados especificamente projetado para lidar com consultas de vetores de entrada, o Milvus pode indexar vetores em uma escala de dezenas de bilhões. Ao contrário dos bancos de dados relacionais existentes que lidam principalmente com padrões predefinidos e dados estruturados, o Milvus é projetado desde o início para lidar com vetores de incorporação derivados de dados não estruturados.

Com a expansão contínua da internet, os dados não estruturados se tornaram cada vez mais comuns, incluindo e-mails, artigos, dados de sensores IoT, fotos do Facebook, estruturas de proteínas e outros. Para permitir que os computadores compreendam e processem dados não estruturados, esses dados precisam ser transformados em vetores usando técnicas de incorporação. O Milvus armazena e indexa esses vetores. O Milvus pode analisar a distância de similaridade entre dois vetores calculando sua distância de similaridade, inferindo sua correlação. Se dois vetores de incorporação forem muito semelhantes, isso indica que as fontes de dados originais também são semelhantes.

Fluxo de Trabalho do Milvus:

Fluxo de Trabalho

Conceitos Chave

Se você não está familiarizado com o mundo dos bancos de dados de vetores e busca de similaridade, os seguintes conceitos chave podem ser úteis.

Saiba mais sobre os termos do Milvus.

Dados Não Estruturados

Dados não estruturados, incluindo imagens, vídeos, áudio e linguagem natural, referem-se a informações que não seguem um modelo ou estrutura organizacional pré-definida. Este tipo de dados representa aproximadamente 80% dos dados globais e pode ser transformado em vetores usando vários modelos de inteligência artificial (IA) e aprendizado de máquina (ML).

Vetores de Incorporação

Vetores de incorporação são as abstrações de características de dados não estruturados (como e-mails, dados de sensores IoT, fotos do Instagram, estruturas de proteínas, etc.). Do ponto de vista matemático, os vetores de incorporação consistem em números de ponto flutuante ou matrizes binárias. Técnicas modernas de incorporação são utilizadas para transformar dados não estruturados em vetores de incorporação.

Busca de Similaridade de Vetores

A busca de similaridade de vetores envolve a comparação de um vetor com um banco de dados para encontrar o vetor mais similar ao vetor de consulta. O uso de algoritmos de busca de vizinho mais próximo aproximado (ANN) pode acelerar o processo de busca. Se dois vetores de incorporação forem muito semelhantes, isso indica que a fonte de dados original também é semelhante.

Por que Escolher o Milvus?

  • Alto desempenho para busca de vetores em conjuntos de dados em larga escala.
  • Suporte da comunidade centrado no desenvolvedor com suporte multilíngue e de cadeia de ferramentas.
  • Alcança escalabilidade e alta confiabilidade na nuvem, mantendo a estabilidade mesmo em caso de falhas.
  • Possibilita busca mista ao combinar filtragem escalar com busca de similaridade de vetores.

Que Índices e Padrões Métricos São Suportados?

Os índices são as unidades organizacionais de dados. Antes de pesquisar ou consultar as entidades inseridas, é necessário declarar o tipo de índice e o padrão métrico de similaridade. Se você não especificar o tipo de índice, o Milvus usará a busca de força bruta por padrão.

Tipos de Índices

O Milvus suporta a maioria dos tipos de índice de vetor para busca de vizinho mais próximo aproximado (ANNS), incluindo:

  • FLAT: Adequado para cenários que buscam resultados de busca completamente precisos e precisos em conjuntos de dados em pequena escala (milhões).
  • IVF_FLAT: Com base no índice de quantização, adequado para cenários que buscam um equilíbrio ideal entre precisão e velocidade de consulta. Há também uma versão para GPU chamada GPU_IVF_FLAT.
  • IVF_SQ8: Com base no índice de quantização, adequado para cenários que buscam uma redução significativa no consumo de disco, CPU e memória GPU devido a recursos muito limitados.
  • IVF_PQ: Com base no índice de quantização, adequado para cenários que buscam alta velocidade de consulta, mesmo à custa da precisão. Há também uma versão para GPU chamada GPU_IVF_PQ.
  • HNSW: Com base no índice de grafo, adequado para cenários com requisitos muito altos para eficiência de busca.

Para obter informações mais detalhadas, consulte Índice de Vetor.

Métricas de Similaridade

No Milvus, as métricas de similaridade são usadas para medir a similaridade entre vetores. Escolher uma boa métrica de distância pode melhorar significativamente o desempenho de classificação e agrupamento. Dependendo da forma dos dados de entrada, métricas de similaridade específicas são escolhidas para obter o melhor desempenho.

Métricas comuns usadas para incorporações de ponto flutuante são:

  • Distância Euclidiana (L2): Esta métrica é comumente usada no campo de visão computacional.
  • Produto Interno (IP): Esta métrica é comumente usada no campo de processamento de linguagem natural.

Métricas comuns usadas para incorporações binárias são:

  • Distância de Hamming: Esta métrica é comumente usada no campo de processamento de linguagem natural.
  • Similaridade de Jaccard: Esta métrica é comumente usada para busca de similaridade molecular.

Aplicações de Exemplo

O Milvus facilita a adição de pesquisa de similaridade às suas aplicações. As aplicações de exemplo do Milvus incluem:

  • Pesquisa de similaridade de imagens: Torna as imagens pesquisáveis e retorna as imagens mais similares de um grande banco de dados quase instantaneamente.
  • Pesquisa de similaridade de vídeos: Ao converter quadros-chave em vetores e depois inserir os resultados no Milvus, é possível pesquisar e recomendar bilhões de vídeos em tempo quase real.
  • Pesquisa de similaridade de áudio: Consulta rápida de grandes quantidades de dados de áudio, como fala, música, efeitos sonoros e sons similares.
  • Sistemas de recomendação: Recomenda informações ou produtos com base no comportamento e nas necessidades do usuário.
  • Sistemas de perguntas e respostas: Chatbots interativos de perguntas e respostas digitais que podem responder automaticamente às perguntas do usuário.
  • Classificação de sequência de DNA: Classifica com precisão genes em milissegundos, comparando sequências de DNA similares.
  • Motores de busca de texto: Ajuda os usuários a encontrar as informações que estão procurando, comparando palavras-chave com um banco de dados de texto.

Conceito de Design do Milvus

Como um banco de dados de vetores baseado em nuvem, o Milvus separa o armazenamento da computação em seu design. Para melhorar a elasticidade e flexibilidade, todos os componentes do Milvus são sem estado.

O sistema é dividido em quatro camadas:

  • Camada de Acesso: Compreende um grupo de proxies sem estado que servem como a camada frontal do sistema e os pontos de extremidade para os usuários.
  • Serviço de Coordenação: Este serviço atribui tarefas aos nós trabalhadores e atua como o hub central do sistema.
  • Nós Trabalhadores: Esses nós agem como os braços e pernas do sistema, seguindo instruções do serviço de coordenação e executando comandos DML/DDL acionados pelos usuários de forma automatizada.
  • Armazenamento: Este é o suporte do sistema responsável pela persistência de dados. Inclui armazenamento de metadados, agentes de log e armazenamento de objetos.

Arquitetura do Milvus.

Ferramentas para Desenvolvedores

O Milvus fornece um conjunto amplo de APIs e ferramentas para desenvolvimento e operação.

Acesso à API

O Milvus fornece bibliotecas de cliente envolvendo a API do Milvus, que podem ser usadas para inserir, excluir e consultar dados programaticamente a partir do código da aplicação:

  • PyMilvus
  • Node.js SDK
  • Go SDK
  • Java SDK

Ferramentas do Ecossistema do Milvus

O ecossistema do Milvus oferece várias ferramentas úteis, incluindo:

  • Milvus CLI
  • Attu: Um sistema de gerenciamento gráfico para o Milvus.
  • MilvusDM (Migração de Dados do Milvus): Uma ferramenta de código aberto específica para importar e exportar dados com o Milvus.
  • Ferramenta de Planejamento de Capacidade do Milvus: Ajuda a estimar o tamanho de arquivo bruto necessário, o tamanho de memória e o tamanho estável do disco através de vários tipos de índices.

Limitações do Milvus

O Milvus está empenhado em fornecer o melhor banco de dados de vetores para impulsionar aplicações de IA e pesquisas de similaridade de vetores. No entanto, a equipe está em constante trabalho para introduzir mais recursos e ferramentas ideais para aprimorar a experiência do usuário. Esta página lista algumas limitações conhecidas que os usuários podem encontrar ao usar o Milvus.

Comprimento dos Nomes dos Recursos

Recurso Limite
Coleção 255 caracteres
Campo 255 caracteres
Índice 255 caracteres
Partição 255 caracteres

Regras de Nomenclatura

Os nomes de recursos podem ser compostos por números, letras e sublinhados (_). Os nomes devem começar com uma letra ou sublinhado.

Número de Recursos

Recurso Limite
Coleção 65.536
Conexões/Agentes 65.536

Número de Recursos em Coleções

Recurso Limite
Partição 4.096
Shard 64
Campo 64
Índice 1
Entidade Ilimitado

Comprimento de Texto

Tipo de Dados Limite
VARCHAR 65.535

Dimensão de Vetor

Atributo Limite
Dimensão 32.768

Entrada e Saída para Cada RPC

Operação Limite
Operação de Inserção 512 MB
Operação de Pesquisa 512 MB
Operação de Consulta 512 MB

Limitação de Carga

Na versão atual, os dados a serem carregados devem estar dentro de 90% dos recursos de memória totais de todos os nós de consulta, a fim de reservar recursos de memória para o mecanismo de execução.

Limitação de Pesquisa

Vetor Limite
topk (número de resultados mais similares a retornar) 16.384
nq (número de solicitações de pesquisa) 16.384