Planejando adotar um banco de dados vetorial para o seu projeto? Como você deve ter descoberto, esta é uma tarefa digna, mas não fácil.
Primeiro, você precisa navegar por um vasto cenário de opções de mercado para selecionar a solução que melhor atende às suas necessidades de negócios. Isto, por si só, é uma tarefa árdua, mas é apenas o começo.
Os desenvolvedores devem considerar uma variedade de considerações técnicas e outras para implementar adequadamente um banco de dados vetorial. Entre estes, escolher o algoritmo de busca vetorial correto pode ser um desafio. Esses algoritmos requerem um conhecimento profundo de conceitos matemáticos para estabelecer o equilíbrio adequado entre precisão e velocidade de recuperação de vetores.
Este artigo desmistifica os conceitos fundamentais da pesquisa vetorial e os detalhes de implementação necessários para configurar seu banco de dados vetorial com sucesso.
O que é um banco de dados vetorial?
Um banco de dados vetorial é uma solução de última geração para armazenamento eficiente, recuperação rápida e processamento contínuo de representações de dados numéricos de alta dimensão (HD) em escala.
Esses vetores HD, também conhecidos como embeddings, são a estrutura de dados eficiente e eficaz por trás da recuperação de informações (por exemplo, alimentando mecanismos de pesquisa rápida), bem como para aplicações de IA (por exemplo, sistemas de recomendação em tempo real ou resumo de documentos).
Informações de todos os tipos – desde texto e estatísticas até imagens e música – podem ser incorporadas em vetores. A partir disso, os bancos de dados vetoriais podem permitir casos de uso multimodais perfeitamente.
Como funcionam os bancos de dados vetoriais?
Embora os modelos de aprendizado de máquina (ML) forneçam recursos de inferência, os bancos de dados vetoriais fornecem uma solução para armazenar e pesquisar um grande número de vetores, conhecido como espaço vetorial. Com vetores de alta dimensão, o número de possibilidades torna-se incompreensivelmente grande.
Para obter desempenho de pesquisa, um banco de dados vetorial faz o seguinte:
Grava vetores na camada de armazenamento (de preferência com características de alto desempenho).
Calcula a distância entre novos vetores e alguma amostragem de vetores já no espaço vetorial.
Usa essas distâncias para construir um índice para otimizar o desempenho da pesquisa.
Finalmente, quando uma solicitação de busca é feita, ele executa um algoritmo para obter os resultados do vizinho mais próximo.
Para garantir operações confiáveis e eficazes em torno da indexação vetorial, os bancos de dados vetoriais incorporam recursos dos bancos de dados clássicos. Esses incluem:
Melhorando a eficiência da pesquisa por meio de técnicas como pré-processamento (por exemplo, normalização de dados, redução de dimensionalidade), pós-processamento (por exemplo, reclassificação), cache, reescrita de consultas, controle de simultaneidade e gerenciamento de transações.
Ampliando soluções por meio de particionamento de dados, replicação, remoção e outras otimizações.
Monitoramento e manutenção do banco de dados com atividades como análise de sistema, otimização de índices, backup de dados e segurança por meio de criptografia e autenticação.
Facilitando integrações para exibir informações perfeitamente para sistemas externos.
O que é pesquisa por similaridade vetorial?
Uma pesquisa de similaridade vetorial envolve procurar os vetores em um banco de dados mais semelhantes a um vetor de consulta específico com base em uma métrica de similaridade definida ou medida de distância.
Você precisa escolher sua abordagem de pesquisa por similaridade vetorial ao configurar sua solução vetorial.
Como funciona a pesquisa por similaridade vetorial?
Um vetor resume as informações mais significativas dos dados de origem em um valor numérico compacto e de alta dimensão. Quanto mais dimensões, mais complexos serão os dados que podem ser incorporados de forma significativa.
O mapeamento dos dados de origem para a representação vetorial significativa é obtido usando um modelo de incorporação treinado com IA para criar um espaço vetorial no qual conceitos semelhantes são mapeados próximos uns dos outros. Mais geralmente, o espaço vetorial é tal que a distância relativa entre os vetores representa a distância conceitual entre eles.
A imagem a seguir mostra um exemplo bidimensional (2D) simplificado para visualizar o conceito, onde uma dimensão representa o gênero e a outra representa a idade.
Representação de conceitos incorporados num espaço vetorial 2D.
Neste espaço vetorial, “avô” está mais próximo de “homem” do que “menino”, “homem” e “mulher” são equidistantes de “criança” e “homem” está longe de “mulher”, mas simétrico na relação com idade.
Digamos que agora você queira consultar “bebê” e recuperar o conceito mais relevante associado a ele, você precisa calcular a distância trigonométrica – mais comumente uma distância euclidiana, similaridade de cosseno e produto escalar – entre “bebê” e outros vetores no espaço e, em seguida, recupere os N vetores mais próximos.
Uma solução simples, embora ineficiente, é calcular a distância entre todos os vetores. Na prática, usar um índice é a melhor prática. Um índice é uma estrutura de dados, como uma árvore ou um gráfico, que codifica inerentemente informações espaciais, permitindo que a recuperação convirja mais rapidamente para o local correto do espaço vetorial. No momento da consulta, sua pesquisa é incorporada em um vetor, e os vetores indexados mais semelhantes em seus bancos de dados são recuperados para você, com algum pós-processamento opcional disponível, como refinamento de candidato ou reclassificação.
Por que existe uma compensação entre precisão e velocidade?
No exemplo 2D acima, calcular a distância entre os vetores é simples: você pode recuperar os resultados mais precisos com latência próxima de zero. No entanto, ao passar para representações vetoriais HD, o cálculo das pontuações de similaridade torna-se complexo.
A maldição da dimensionalidade – aumento dos requisitos computacionais e de memória – e a perda da geometria intuitiva e da visualização aparecem em espaços de alta dimensão.
Isto significa que, embora seja possível realizar uma pesquisa exata que retorna com precisão os vetores mais semelhantes à consulta, esses métodos não são apenas caros, mas também têm tempos de processamento mais longos (potencialmente horas!) que normalmente tornam sua execução em sistemas de produção típicos.
Uma busca exata é possível para pequenos conjuntos de dados e útil para uma comparação de desempenho com implementações do vizinho mais próximo aproximado (ANN). Mas, na prática, um pesquisa aproximada é desempenhado.
Existem diferentes algoritmos aproximados, cada um fornecendo uma compensação única de desempenho entre precisão e velocidade. Compreender e escolher a implementação correta do algoritmo de pesquisa vetorial é, portanto, fundamental para otimizar a solução de banco de dados vetorial para cada caso de uso.
O que são algoritmos populares de pesquisa vetorial?
Os algoritmos mais populares – e quase únicos – por trás da pesquisa vetorial são os algoritmos do vizinho mais próximo. É por isso que a pesquisa vetorial é frequentemente chamada de pesquisa do vizinho mais próximo, e o nome de um índice vetorial é baseado no algoritmo do vizinho mais próximo que ele suporta, o índice Hierarchical Navigable Small World (HNSW).
Os algoritmos do vizinho mais próximo encontram os pontos de dados mais próximos de um determinado ponto de consulta com base na métrica de distância escolhida, organizando o conjunto de dados em uma árvore, um hash ou um gráfico, que são todas estruturas de dados com reconhecimento espacial. Técnicas como quantização e agrupamento também podem ser introduzidas para melhorar a otimização compactando representações vetoriais, melhorando assim a eficiência da pesquisa.
As duas categorias de algoritmos de vizinhos mais próximos são k-vizinhos mais próximos (KNN) para pesquisas exatas e ANN para pesquisas aproximadas.
Algoritmos KNN e RNA
Para uma pesquisa exata, KNN retorna os k vetores mais próximos do vetor de consulta, comparando todos os vetores no banco de dados. A complexidade é O(n): Ao consultar um vetor Word2vec de dimensão 300 em um banco de dados de 100 milhões de vetores, você precisa de 30 bilhões de operações para recuperar seus (exatos!) vetores k mais semelhantes.
Com uma complexidade de O(log(n)), os algoritmos RNA são mais comumente usados para aplicações do mundo real. As RNAs podem ser baseadas em árvore, baseadas em gráficos ou baseadas em hash.
Os algoritmos do vizinho mais próximo incluem:
Vizinhos mais próximos aproximados Oh Yeah (ANNOY) e Biblioteca rápida para vizinho mais próximo aproximado (FLANN): Implementações comuns de RNAs baseadas em árvores; melhor quando você precisa ser o mais rápido possível, por exemplo, uma busca interativa por similaridade de imagens em tempo real para uma plataforma de compartilhamento de fotos.
Mundo Pequeno Navegável Hierárquico (HNSW) e Mundo Pequeno Navegável (NSW): Implementações comuns de RNAs baseadas em gráficos; melhor para aplicações que precisam ser tão precisas quanto possível em escala, como um sistema de recomendação para uma grande plataforma mundial de comércio eletrônico.
Hashing sensível à localidade (LSH) e hash semântico (SH): Implementações comuns de RNAs baseadas em hash; melhor para a relação custo-benefício em cenários onde a precisão é menos crítica do que a eficiência de recursos, por exemplo, uma solução de desduplicação de conteúdo para um sistema interno de gerenciamento de documentos.
Por que escolher o algoritmo de pesquisa vetorial correto é importante?
A escolha do algoritmo de pesquisa vetorial correto é crucial para otimizar o desempenho da pesquisa e a eficiência geral do sistema, contribuindo, em última análise, para uma melhor experiência do usuário e melhores resultados para o aplicativo.
Primeiro, a seleção do seu algoritmo deve estar alinhada com os seus requisitos de dados e, em seguida, ser adaptada para fornecer requisitos de desempenho ideais. Além da precisão e da latência, outras métricas a serem consideradas ao definir as compensações de desempenho incluem rendimento, custo e escalabilidade.
A seleção de um banco de dados vetorial envolve navegar por uma infinidade de soluções e considerações, especialmente ao procurar o algoritmo de pesquisa vetorial correto.
A ideia básica por trás da pesquisa vetorial é simples: representações de dados de alta dimensão podem ser incorporadas em um espaço vetorial onde a distância reflete semelhança conceitual. Ao estruturar seus vetores em uma árvore, gráfico ou hashes, você pode navegar com eficiência no espaço vetorial no momento da consulta para atingir um equilíbrio exclusivo entre precisão e velocidade, alinhando-se aos requisitos de dados e às necessidades de escalabilidade.
Optar por uma solução de banco de dados vetorial que permite personalizar com flexibilidade os detalhes da implementação, como um algoritmo de pesquisa vetorial, pode ser uma virada de jogo para uma aplicação bem-sucedida.
As soluções de pesquisa vetorial dependem de bancos de dados em tempo real com escalabilidade ilimitada e ingestão rápida para processar grandes quantidades de dados. Saiba mais sobre como você pode construir o aplicações de IA de maior desempenho, mais precisas e econômicas com Aerospike.
YOUTUBE.COM/THENEWSTACK
A tecnologia avança rápido, não perca um episódio. Inscreva-se em nosso canal no YouTube para transmitir todos os nossos podcasts, entrevistas, demonstrações e muito mais.
SE INSCREVER
Adam Hevenor é Diretor de Gerenciamento de Produto, IA, da Aerospike. Adam traz mais de uma década como profissional de tecnologia focado no desenvolvimento de produtos para banco de dados e produtos de infraestrutura. Sua vasta experiência inclui projetar, planejar e executar trabalhos em um…
Este site utiliza cookies para melhorar sua experiência de navegação. Ao continuar, você concorda com o uso de cookies. Para mais informações, consulte nossa Política de Privacidade.
Funcional
Sempre ativo
O armazenamento ou acesso técnico é estritamente necessário para a finalidade legítima de permitir a utilização de um serviço específico explicitamente solicitado pelo assinante ou utilizador, ou com a finalidade exclusiva de efetuar a transmissão de uma comunicação através de uma rede de comunicações eletrónicas.
Preferências
O armazenamento ou acesso técnico é necessário para o propósito legítimo de armazenar preferências que não são solicitadas pelo assinante ou usuário.
Estatísticas
O armazenamento ou acesso técnico que é usado exclusivamente para fins estatísticos.O armazenamento técnico ou acesso que é usado exclusivamente para fins estatísticos anônimos. Sem uma intimação, conformidade voluntária por parte de seu provedor de serviços de Internet ou registros adicionais de terceiros, as informações armazenadas ou recuperadas apenas para esse fim geralmente não podem ser usadas para identificá-lo.
Marketing
O armazenamento ou acesso técnico é necessário para criar perfis de usuário para enviar publicidade ou para rastrear o usuário em um site ou em vários sites para fins de marketing semelhantes.