Visualize a Pesquisa Reversa de Imagens com Feder
A busca reversa de imagens é uma das aplicações mais predominantes da busca vetorial ou da busca aproximada pelo vizinho mais próximo. Quando um usuário envia uma imagem para o mecanismo de busca, um conjunto de imagens semelhantes será retornado. Durante o processo, índices são construídos para acelerar a busca em grandes conjuntos de dados, especialmente aqueles em escala de bilhões ou até trilhões.
No blog anterior, apresentamos como visualizar sua busca aproximada pelo vizinho mais próximo com o Feder usando o exemplo da visualização do índice HNSW. Neste artigo, usaremos o exemplo da busca reversa de imagens e continuaremos explicando como você pode usar o Feder para visualizar a construção do índice e o processo de busca. Neste artigo, usamos o índice IVF_FLAT, pois ele é o índice mais comumente usado em aplicações de busca reversa de imagens.
Como visualizar a busca reversa de imagens com o Feder
Feder é construído com JavaScript. Para usar o Feder para visualização, primeiro você precisa construir um índice e salvar o arquivo de índice do Faiss ou Hnswlib. Em seguida, o Feder analisa o arquivo enviado para obter informações do índice e se prepara para a visualização. 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ê.
Saiba mais sobre como usar o Feder lendo o guia do usuário do Feder.
Um caso de uso de visualização de busca com o índice IVF_FLAT
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 o Towhee, um pipeline de ML open-source, para codificar as imagens do conjunto de dados VOC 2012 em vetores. Em seguida, construímos um índice IVF_FLAT com o Faiss e salvamos o arquivo de índice. Por fim, usamos o Feder para visualização.
Construir um índice IVF_Flat
Índices são construídos para acelerar o processo de busca. Uma analogia pode ser feita com um dicionário. Todas as palavras são organizadas com base em suas iniciais. Mais especificamente, palavras com as mesmas iniciais são agrupadas. E todos sabemos que o número de entradas sob cada inicial é desigual. Temos mais palavras começando com a letra "E" do que aquelas começando com "Z". Ao procurar uma palavra, podemos navegar rapidamente até a seção que contém apenas palavras com a mesma inicial. Isso ajuda a aumentar drasticamente a velocidade da busca.
Da mesma forma, o índice IVF_FLAT divide vetores no espaço vetorial em diferentes clusters com base na distância vetorial. Vetores próximos entre si têm maior probabilidade de serem colocados no mesmo cluster. E os vetores não são necessariamente distribuídos uniformemente em cada cluster. Portanto, cada cluster contém uma quantidade diferente de vetores.
Neste caso de uso, usamos o Faiss para construir um índice IVF_FLAT nas 17.000 imagens do conjunto de dados VOC 2012, com um nlist de 256. Os 17.000 vetores de imagem são divididos em 256 clusters com base no método de clusterização K-means.
Com Feder, você pode visualizar o agrupamento do espaço vetorial de alta dimensionalidade em uma visualização 2D. Feder permite visualizar os detalhes de cada cluster enquanto oferece uma experiência de usuário interativa. Para ter uma melhor compreensão do índice IVF_FLAT, você pode clicar em um dos clusters no Feder e, então, verá no máximo nove imagens representadas por vetores dentro desse cluster.
Busca grosseira
Quando você insere uma imagem-alvo e a converte em um vetor-alvo para busca reversa de imagens, o sistema primeiro calcula a distância entre o vetor-alvo e o centroide de cada cluster para encontrar os clusters mais próximos.
Neste caso de uso, nlist é igual a 256, o que significa que todo o espaço vetorial é dividido em 265 unidades de cluster. Portanto, no processo de busca grosseira, o sistema compara a distância entre o vetor-alvo e 256 centroides de cluster.
Em índices IVF, os vetores são agrupados com base em sua distância relativa entre si. Isso significa que é altamente provável que os vizinhos mais próximos do vetor-alvo estejam localizados em seus clusters mais próximos. Podemos controlar o número de unidades de cluster a consultar com o parâmetro nprobe. Neste caso de uso, nprobe é igual a 8, o que significa que o sistema procurará o vizinho mais próximo do vetor-alvo dentro dos oito clusters mais próximos.
A captura de tela abaixo é uma visualização detalhada dos clusters mais próximos. No cluster-186 (o oitavo cluster mais próximo do vetor-alvo), podemos ver que ele contém alguns vetores de imagens de carros. Embora os carros não sejam nada semelhantes ao avião em nossa imagem-alvo, as imagens no cluster-186 e o alvo compartilham alguma semelhança, pois as pistas de carros nas imagens do cluster-186 se parecem muito com a pista do aeroporto na imagem-alvo. Em um cluster muito mais próximo, o cluster-96, podemos ver que ele contém imagens de aeronaves no céu.
Busca grosseira.
Os clusters neste caso de uso demonstram que, durante o embedding, o modelo de machine learning extrai com precisão os recursos, incluindo aeronave, pista e céu na imagem-alvo. Em seguida, ele divide os vetores no espaço vetorial com base nesses recursos. O cluster-186 compartilha o recurso de "pista", enquanto o cluster-96 compartilha o recurso de "aeronave".
Busca refinada
Após uma busca grosseira, podemos garantir um número de clusters nprobe para uma busca refinada. Nesta etapa, o sistema compara a distância entre o vetor-alvo e todos os vetores nos clusters nprobe. Então, os vetores topK mais próximos são retornados como os resultados finais.
Neste caso de uso, o sistema calcula a distância entre o vetor-alvo e um total de 742 vetores em 8 clusters durante o processo de busca refinada.
Feder oferece dois modos de visualização para o processo de busca refinada. Um modo é a visualização baseada em distância de cluster e vetor. O outro é o modo de projeção para redução de dimensionalidade.
Na captura de tela abaixo, diferentes clusters são mostrados em cores diferentes. O círculo branco no centro representa o vetor-alvo. Com a ajuda do Feder, você pode ver a distância entre cada vetor e o vetor-alvo de uma forma mais clara e direta. Você pode clicar em cada vetor para ver informações mais detalhadas, como sua distância até o vetor-alvo, a imagem que ele representa etc.
Busca refinada.
A captura de tela abaixo é o modo de projeção para redução de dimensionalidade. Ainda assim, diferentes clusters são mostrados em cores diferentes. Atualmente, oferecemos suporte apenas a UMAP, um dos métodos mais populares para redução de dimensionalidade. Mais métodos de projeção serão suportados em versões futuras do Feder.
Busca refinada.
Análise de desempenho da busca
Ao buscar sem um índice, o sistema precisa calcular a distância entre o vetor-alvo e todos os 17.000 vetores no banco de dados. No entanto, em contraste, se construirmos um índice IVF_FLAT, a eficiência da busca é bastante aumentada, pois o volume de cálculo é significativamente reduzido (o sistema só precisa calcular a distância entre o vetor-alvo e os 256 centroides de clusters na busca grosseira e 742 vetores na busca refinada).
Também com a visualização do Feder, perceberemos que o valor dos parâmetros de construção do índice influenciará como o espaço vetorial é dividido. O parâmetro nprobe pode ser usado para alcançar um equilíbrio entre eficiência e precisão da busca. Quanto maior o valor de nprobe, mais amplo o escopo da busca, e mais precisos serão os resultados. Mas, consequentemente, a eficiência da busca será comprometida à medida que o volume de cálculo aumenta.
O que vem a seguir
- Experimente o Attu para gerenciar seu banco de dados vetorial com simplicidade de um clique.
- Aprenda como visualizar sua busca pelo vizinho mais próximo com o Feder.
Continue lendo

My Wife Wanted Dior. I Spent $600 on Claude Code to Vibe-Code a 2M-Line Database Instead.
Write tests, not code reviews. How a test-first workflow with 6 parallel Claude Code sessions turns a 2M-line C++ codebase into a daily shipping pipeline.

A Developer's Guide to Exploring Milvus 2.6 Features on Zilliz Cloud
Milvus 2.6 marks a shift from “vector search + glue code” to a more advanced retrieval engine, and it is now Generally Available (GA) on Zilliz Cloud (a managed Milvus service).

Zilliz Cloud Now Available in AWS Europe (Ireland)
Zilliz Cloud launches in AWS eu-west-1 (Ireland) — bringing low-latency vector search, EU data residency, and full GDPR-ready infrastructure to European AI teams. Now live across 30 regions on five cloud providers.



