Milvus foi criado para pesquisa de similaridade de vectores em grande escala (pense em triliões)
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:
- Milvus foi criado para pesquisa de similaridade de vetores em grande escala (pense em trilhões)
- As árvores LSM mantêm a gestão dinâmica de dados eficiente em escalas massivas- Um segmento de vectores de 10 dimensões em Milvus.
- A gestão de dados é optimizada para um acesso rápido e uma fragmentação limitada- Uma ilustração da inserção de vectores em Milvus- Ficheiros de dados consultados antes da fusão- Ficheiros de dados consultados após a fusão
- A pesquisa por semelhança é acelerada pela indexação dos dados vectoriais
- Saiba mais sobre o Milvus
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 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:
- Intervalos de tempo: Os dados são regularmente descarregados para o disco em intervalos definidos (1 segundo por defeito).
- Tamanho do buffer: Os dados acumulados atingem o limite superior do buffer mutável (128 MB).
- Acionamento manual: Os dados são descarregados manualmente para o disco quando o cliente chama a função de descarga.
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 foi criado para pesquisa de similaridade de vectores em grande escala (Think Trillion)_4.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 StartedLike the article? Spread the word