Visualização de Banco de Dados Vetorial: Feder, Uma Ferramenta Poderosa para Busca por Similaridade
Com a ajuda de modelos de machine learning (ML), podemos codificar facilmente dados não estruturados, como fotos e vídeos, em embeddings para busca por similaridade vetorial. Para acelerar a busca, vários índices, como IVF_FLAT e HNSW, são adotados. Para selecionar um índice mais adequado à aplicação, os usuários precisam equilibrar velocidade de busca e precisão.
Para poupar esse trabalho aos usuários, temos orgulho de anunciar o Feder, uma ferramenta para visualizar algoritmos ANNS. Com o Feder, os usuários podem entender diferentes tipos de índices e seus parâmetros de uma forma sem precedentes em termos de simplicidade. O Feder também ajuda a visualizar dados de bancos de dados vetoriais avançados, como o Pinecone, facilitando o gerenciamento de grandes volumes de dados.
O Feder permite que os usuários observem como diferentes índices são estruturados, como os dados são organizados usando cada tipo de índice e como diferentes configurações de parâmetros influenciam a estrutura de indexação. Além disso, o Feder também ajuda a visualizar todo o processo de busca por similaridade vetorial e fornece um registro detalhado do acesso aos dados durante a busca. Ele é particularmente útil para analisar e visualizar dados complexos, ajudando os usuários a identificar tendências e padrões para tomar decisões informadas.
Atualmente, o Feder oferece suporte apenas ao HNSW do hnswlib. Mais índices serão compatíveis em breve.
Introdução aos Bancos de Dados Vetoriais
Bancos de dados vetoriais são um tipo especializado de banco de dados projetado para armazenar, gerenciar e consultar com eficiência grandes volumes de dados vetoriais. Dados vetoriais representam informações complexas — como imagens, texto ou áudio — como vetores numéricos em um espaço vetorial de alta dimensionalidade. Esses bancos de dados são otimizados para busca por similaridade, permitindo que os usuários encontrem os vetores mais semelhantes a um determinado vetor de consulta. Essa capacidade é particularmente valiosa em aplicações como reconhecimento de imagens, processamento de linguagem natural e sistemas de recomendação, em que compreender as nuances dos dados é crucial.
Entendendo o Feder em Bancos de Dados Vetoriais
O Feder é construído com JavaScript. Para usar o Feder para visualização, primeiro você precisa criar um índice e salvar o arquivo de índice do Faiss ou do Hnswlib. O Feder pode ajudar no pré-processamento e na limpeza de dados antes da visualização. Em seguida, o Feder analisa o arquivo enviado para obter informações do índice e se prepara para a visualização. O Feder também gerencia e visualiza a qualidade dos dados armazenados em bancos de dados vetoriais. Durante uma busca por similaridade vetorial, você precisa fornecer um vetor-alvo e a configuração dos parâmetros de busca. Então, o Feder visualiza todo o processo de busca para você, incluindo a transformação de dados em vetores numéricos usando um modelo de embedding.
federjs consiste em duas partes:
- Feder-Core
- Analisa arquivos de índice para obter informações detalhadas sobre índices.
- Oferece suporte à consulta de índices e mantém um registro detalhado dos vetores acessados durante uma consulta de índice.
- Feder-View
- Permite a visualização da estrutura geral de diferentes índices.
- Permite a visualização de todo o processo de busca por similaridade com diferentes índices.
Além do federjs, o Feder também fornece o federpy, uma ferramenta em Python. Com o federpy, você pode visualizar diretamente a estrutura do índice e o processo de busca no IPython Notebook. Ou, alternativamente, pode exportar a visualização para um arquivo HTML e então usar um navegador para iniciar o serviço web.
Saiba mais sobre como usar o Feder lendo o guia do usuário do Feder.
Neste caso de uso, usamos o VOC 2012, o clássico conjunto de dados de imagens de ML que contém mais de 17.000 imagens.
Primeiro, usamos Towhee, um pipeline de ML de código aberto, para codificar as imagens no conjunto de dados VOC 2012 em vetores. Em seguida, construímos um índice com Hnswlib e salvamos o arquivo de índice. Por fim, usamos Feder para visualização. Feder otimiza o processo de busca sem precisar pesquisar todo o conjunto de dados.
O link aqui oferece uma experiência de usuário interativa para você ver a visualização para HNSW.
UM índice HNSW tem várias camadas e cada camada é uma rede interconectada. A camada inferior captura todos os objetos de dados no banco de dados, e os pontos/nós de dados se tornam mais esparsos à medida que se movem para a camada superior. Vamos fazer uma analogia com nosso sistema de transporte moderno. Se você está visitando uma boutique escondida no Upper East Side da cidade de Nova York a partir de São Francisco, provavelmente primeiro pegará um voo para JFK ou LaGuardia, onde encontrará o metrô mais conveniente para levá-lo a Manhattan, e então provavelmente trocará para um ônibus ou até mesmo uma Citi bike para chegar àquele bairro. Da mesma forma, se quisermos encontrar rapidamente o nó mais próximo do seu alvo, começaremos primeiro procurando na camada superior porque a busca aqui é mais rápida. No entanto, uma desvantagem é que, na maioria das vezes, as camadas e redes superiores não conseguem nos levar ao destino desejado ou nos ajudar a encontrar os resultados esperados. Portanto, recorremos à próxima camada abaixo para maior precisão.
Ao construir um índice HNSW, um nó na camada superior será selecionado pelo algoritmo como o ponto de entrada para iniciar a busca. Feder usa processamento paralelo para melhorar o desempenho das consultas.
Abaixo, é mostrada a visualização das Camadas 4, 3 e 2 em um índice HNSW de cinco camadas construído sobre o conjunto de dados VOC 2012.
Feder fornece uma experiência de usuário interativa. Portanto, você pode escolher qualquer nó para uma observação mais próxima. O caminho destacado em amarelo representa o caminho mais curto com o menor número de nós de trânsito a partir da entrada para alcançar o nó que você escolher. Os caminhos em branco mostram todos os outros nós que o nó escolhido pode alcançar. Ao aumentar o zoom, você pode ver mais detalhes e perceberá que, quanto mais camadas, mais semelhantes são os objetos conectados. Feder também transforma dados brutos em formatos visuais.
Você pode visualizar estatísticas relevantes no painel de visão geral no lado superior esquerdo. O parâmetro M decide quantos outros nós o nó escolhido pode alcançar em cada camada. Como podemos ver na captura de tela, m= 8. Isso significa que, a partir de qualquer nó aleatório, o número máximo de nós que esse nó aleatório pode alcançar é 8.
Podemos modificar o valor dos parâmetros para observar como a estrutura do índice é afetada.
À medida que o valor de M aumenta, a estrutura HNSW se torna mais plana. O resultado da modificação do valor de ef é menos óbvio na visualização. Na verdade, o parâmetro ef influencia os links gerados durante a construção do índice.
Depois que você carrega uma imagem-alvo para busca, Feder exibirá todo o processo de busca com animação.
A animação que visualiza todo o processo de busca por similaridade vetorial.
A visualização exibe um registro dos dados acessados em uma busca por similaridade vetorial. Ou seja, você pode ver todos os vetores que foram comparados em termos de sua distância até o vetor-alvo, enquanto aqueles não envolvidos nesse processo não são exibidos na animação.
Como podemos ver na visualização, para índices HNSW, a busca começa na camada mais alta, encontra o nó mais próximo do alvo nessa camada e, em seguida, desce para a próxima camada se todos os nós acessíveis nessa camada não estiverem próximos o suficiente do alvo.
Deve-se observar que a busca na camada inferior prossegue por múltiplos caminhos. O parâmetro ef decide a escolha do caminho de busca. Para uma introdução detalhada ao HNSW, leia o artigo "Efficient and robust approximate nearest neighbor search using hierarchical navigable small world graphs".
Por meio da visualização interativa, podemos ver que os nós no início do caminho de busca são menos relevantes. Mas, à medida que a busca pelo vizinho mais próximo avança, a precisão da busca aumenta rapidamente. O painel de estatísticas à esquerda demonstra que apenas cerca de 1% das imagens (aproximadamente 170 imagens) de um total de 17.000 imagens no conjunto de dados VOC 2012 são realmente acessadas durante a busca. A enorme aceleração na busca é possível graças ao índice HNSW.
Você também pode definir valores diferentes para os parâmetros do índice e gerar novos arquivos de índice para comparar a estrutura e a eficiência da busca. O Feder visualiza o uso de embeddings vetoriais em buscas por similaridade.
- Experimente o Attu para gerenciar seu banco de dados vetorial com simplicidade de um clique
Principais recursos do Feder
O Feder é uma ferramenta poderosa que oferece vários recursos principais, tornando-o uma escolha ideal para gerenciar e consultar grandes quantidades de dados vetoriais:
Busca vetorial avançada: O Feder oferece suporte a algoritmos sofisticados de busca vetorial, incluindo similaridade de cosseno e distância euclidiana, permitindo que os usuários encontrem os vetores mais semelhantes a um determinado vetor de consulta com alta precisão.
Escalabilidade: Projetado para escalar horizontalmente, o Feder pode lidar sem esforço com enormes quantidades de dados e altos volumes de consultas, garantindo desempenho robusto mesmo à medida que seu conjunto de dados cresce.
Gerenciamento de dados: O Feder fornece um sistema abrangente de gerenciamento de dados, permitindo que os usuários gerenciem, atualizem e mantenham facilmente seus dados vetoriais, garantindo integridade e acessibilidade dos dados.
Busca semântica: Com suporte à busca semântica, o Feder permite que os usuários busquem vetores com base em seu significado e contexto, melhorando a relevância e a precisão dos resultados de busca.
Casos de uso do Feder
A versatilidade do Feder o torna adequado para uma ampla gama de aplicações, incluindo:
Reconhecimento de imagens: O Feder pode ser usado para desenvolver sistemas de reconhecimento de imagens capazes de identificar objetos, pessoas e cenas em imagens, tornando-o inestimável para aplicações em segurança, varejo e muito mais.
Processamento de linguagem natural: O Feder pode impulsionar sistemas de processamento de linguagem natural que entendem e geram linguagem humana, facilitando aplicações como chatbots, serviços de tradução e análise de sentimentos.
Sistemas de recomendação: O Feder pode ser empregado para criar sistemas de recomendação que sugerem produtos, serviços ou conteúdo aos usuários com base em suas preferências e comportamento, melhorando a experiência e o engajamento do usuário.
Integração do Feder com bancos de dados vetoriais
O Feder pode ser integrado perfeitamente a outros bancos de dados vetoriais para criar um sistema de gerenciamento de dados vetoriais mais abrangente e robusto. Os métodos de integração incluem:
Importação/exportação de dados: O Feder pode importar e exportar dados de outros bancos de dados vetoriais, permitindo que os usuários transfiram dados facilmente entre sistemas e mantenham a consistência entre plataformas.
Integração de API: O Feder oferece uma API robusta, permitindo que os desenvolvedores o integrem a outros bancos de dados vetoriais e aplicações, facilitando a interoperabilidade fluida e a funcionalidade estendida.
Federação de Consultas: O Feder pode federar consultas em vários bancos de dados vetoriais, permitindo que os usuários pesquisem vetores em diferentes sistemas, aumentando assim o escopo e a profundidade de sua análise de dados.
Ao aproveitar esses recursos de integração, os usuários podem melhorar seu gerenciamento de dados e o desempenho das consultas, tomando decisões mais informadas e orientadas por dados.
Continue lendo

The AWS Outage Was a Wake-Up Call for Vector Database Cross-Region Disaster Recovery
Zilliz Cloud Had the Answer Before the Crisis. Zilliz Cloud is the world's first vector database with native cross-region disaster recovery.

Optimizing Embedding Model Selection with TDA Clustering: A Strategic Guide for Vector Databases
Discover how Topological Data Analysis (TDA) reveals hidden embedding model weaknesses and helps optimize vector database performance.

OpenAI o1: What Developers Need to Know
In this article, we will talk about the o1 series from a developer's perspective, exploring how these models can be implemented for sophisticated use cases.



