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

milvus-logo
LFAI
  • Home
  • Blog
  • Milvus foi criado para pesquisa de similaridade de vectores em grande escala (pense em triliões)

Milvus foi criado para pesquisa de similaridade de vectores em grande escala (pense em triliões)

  • Engineering
January 13, 2021
milvus

Todos os dias, um número incalculável de informações críticas para os negócios é desperdiçado porque as empresas não conseguem entender seus próprios dados. Estima-se que os dados não estruturados, como texto, imagem, vídeo e áudio, representem 80% de todos os dados, mas apenas 1% é analisado. Felizmente, a inteligência artificial (IA), o software de código aberto e a lei de Moore estão a tornar a análise à escala da máquina mais acessível do que nunca. Utilizando a pesquisa de semelhança de vectores, é possível extrair valor de enormes conjuntos de dados não estruturados. Esta técnica envolve a conversão de dados não estruturados em vectores de caraterísticas, um formato de dados numéricos de fácil utilização que pode ser processado e analisado em tempo real.

A pesquisa de semelhança de vectores tem aplicações que abrangem o comércio eletrónico, a segurança, o desenvolvimento de novos medicamentos e muito mais. Estas soluções baseiam-se em conjuntos de dados dinâmicos que contêm milhões, milhares de milhões ou mesmo triliões de vectores, e a sua utilidade depende frequentemente do retorno de resultados quase instantâneos. O Milvus é uma solução de gestão de dados vectoriais de código aberto criada de raiz para gerir e pesquisar eficazmente grandes conjuntos de dados vectoriais. Este artigo aborda a abordagem da Milvus à gestão de dados vectoriais, bem como a forma como a plataforma foi optimizada para a pesquisa de semelhanças vectoriais.

Ir para:

As árvores LSM mantêm a gestão dinâmica de dados eficiente em escalas massivas

Para proporcionar uma gestão de dados dinâmica e eficiente, o Milvus utiliza uma estrutura de dados de árvore de fusão estruturada por registo (árvore LSM). As árvores LSM são adequadas para aceder a dados com um elevado número de inserções e eliminações. Para obter informações pormenorizadas sobre atributos específicos das árvores LSM que ajudam a garantir uma gestão de dados dinâmica de elevado desempenho, consulte a investigação original publicada pelos seus inventores. As árvores LSM são a estrutura de dados subjacente utilizada por muitas bases de dados populares, incluindo BigTable, Cassandra e RocksDB.

Os vectores existem como entidades no Milvus e são armazenados em segmentos. Cada segmento contém de um a cerca de 8 milhões de entidades. Cada entidade tem campos para um ID único e entradas de vetor, com o último representando qualquer lugar de 1 a 32768 dimensões.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_2.png Blog_Milvus foi criado para pesquisa de similaridade de vetores em grande escala (pense em trilhões)_2.png

O gerenciamento de dados é otimizado para acesso rápido e fragmentação limitada

Ao receber um pedido de inserção, o Milvus escreve novos dados no registo de escrita antecipada (WAL). Depois que a solicitação é gravada com sucesso no arquivo de log, os dados são gravados em um buffer mutável. Por fim, um dos três gatilhos faz com que o buffer se torne imutável e seja transferido para o disco:

  1. Intervalos de tempo: Os dados são regularmente descarregados para o disco em intervalos definidos (1 segundo por defeito).
  2. Tamanho do buffer: Os dados acumulados atingem o limite superior do buffer mutável (128 MB).
  3. Acionamento manual: Os dados são descarregados manualmente para o disco quando o cliente chama a função de descarga.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_3.png Blog_Milvus foi criado para pesquisa de similaridade vetorial em grande escala (pense em trilhões)_3.png

Os usuários podem adicionar dezenas ou milhões de vetores de cada vez, gerando arquivos de dados de tamanhos diferentes à medida que novos vetores são inseridos. Isso resulta em fragmentação que pode complicar o gerenciamento de dados e tornar a pesquisa de similaridade de vetores mais lenta. Para evitar a fragmentação excessiva dos dados, o Milvus funde constantemente os segmentos de dados até que o tamanho combinado do ficheiro atinja um limite configurável pelo utilizador (por exemplo, 1 GB). Por exemplo, dado um limite superior de 1 GB, a inserção de 100 milhões de vectores de 512 dimensões resultará em apenas ~200 ficheiros de dados.

Em cenários de computação incremental em que os vectores são inseridos e pesquisados em simultâneo, o Milvus torna os dados vectoriais recentemente inseridos imediatamente disponíveis para pesquisa antes de os fundir com outros dados. Após a fusão dos dados, os ficheiros de dados originais serão removidos e o ficheiro fundido recém-criado será utilizado para pesquisa.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_4.png Blog_Milvus foi criado para pesquisa de similaridade de vectores em grande escala (Think Trillion)_4.png

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_5.png Blog_Milvus foi criado para pesquisa de semelhanças vectoriais em grande escala (pense em biliões)_5.png

A pesquisa por similaridade é acelerada pela indexação de dados vetoriais

Por predefinição, o Milvus baseia-se na pesquisa de força bruta quando consulta dados vectoriais. Também conhecida como pesquisa exaustiva, esta abordagem verifica todos os dados vetoriais cada vez que uma consulta é executada. Com conjuntos de dados que contêm milhões ou milhares de milhões de vectores multidimensionais, este processo é demasiado lento para ser útil na maioria dos cenários de pesquisa por semelhança. Para ajudar a acelerar o tempo de consulta, são utilizados algoritmos para construir um índice vetorial. Os dados indexados são agrupados de modo a que os vectores semelhantes fiquem mais próximos uns dos outros, permitindo que o motor de pesquisa por semelhança consulte apenas uma parte dos dados totais, reduzindo drasticamente os tempos de consulta sem sacrificar a precisão.

A maioria dos tipos de índices vectoriais suportados pelo Milvus utilizam algoritmos de pesquisa ANN (approximate nearest neighbor). Existem inúmeros índices ANN, e cada um vem com compensações entre desempenho, precisão e requisitos de armazenamento. O Milvus suporta índices baseados em quantização, gráficos e árvores, todos eles servindo diferentes cenários de aplicação. Consulte a documentação técnica do Milvus para obter mais informações sobre a criação de índices e os tipos específicos de índices vetoriais que ele suporta.

A criação de índices gera muitos metadados. Por exemplo, a indexação de 100 milhões de vectores de 512 dimensões guardados em 200 ficheiros de dados resultará em 200 ficheiros de índice adicionais. Para verificar eficazmente o estado dos ficheiros e eliminar ou inserir novos ficheiros, é necessário um sistema de gestão de metadados eficiente. O Milvus utiliza o processamento transacional em linha (OLTP), uma técnica de processamento de dados que é adequada para atualizar e/ou eliminar pequenas quantidades de dados numa base de dados. O Milvus utiliza SQLite ou MySQL para gerir os metadados.

Saiba mais sobre o Milvus

O Milvus é uma plataforma de gestão de dados vectoriais de código aberto atualmente em incubação na LF AI & Data, uma organização de cúpula da Linux Foundation. O Milvus foi tornado open source em 2019 pela Zilliz, a empresa de software de ciência de dados que iniciou o projeto. Mais informações sobre o Milvus podem ser encontradas em seu site. Se você estiver interessado em pesquisa de similaridade de vetor ou em usar a IA para desbloquear o potencial de dados não estruturados, junte-se à nossa comunidade de código aberto no GitHub.

    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