Visualizza Reverse Image Search con Feder
La ricerca inversa di immagini è una delle applicazioni più diffuse della ricerca vettoriale o della ricerca approssimata del vicino più prossimo. Quando un utente carica un'immagine nel motore di ricerca, verranno restituite diverse immagini simili. Durante il processo, vengono creati indici per accelerare la ricerca su grandi dataset, in particolare quelli su scala di miliardi o persino trilioni.
Nel blog precedente, abbiamo introdotto come visualizzare la tua ricerca approssimata del vicino più prossimo con Feder utilizzando l'esempio della visualizzazione dell'indice HNSW. In questo articolo, prenderemo come esempio la ricerca inversa di immagini e continueremo a spiegare come puoi usare Feder per visualizzare la creazione dell'indice e il processo di ricerca. In questo articolo, utilizziamo l'indice IVF_FLAT poiché è l'indice più comunemente usato nelle applicazioni di ricerca inversa di immagini.
Come visualizzare la ricerca inversa di immagini con Feder
Feder è realizzato con JavaScript. Per usare Feder per la visualizzazione, devi prima creare un indice e salvare il file dell'indice da Faiss o Hnswlib. Poi Feder analizza il file caricato per ottenere le informazioni sull'indice e si prepara alla visualizzazione. Durante una ricerca di similarità vettoriale, devi fornire un vettore target e la configurazione dei parametri di ricerca. Poi Feder visualizza per te l'intero processo di ricerca.
Scopri di più su come usare Feder leggendo la guida utente di Feder.
Un caso d'uso di visualizzazione della ricerca con indice IVF_FLAT
In questo caso d'uso, utilizziamo VOC 2012, il classico dataset di immagini per ML che contiene più di 17.000 immagini.
Per prima cosa, usiamo Towhee, una pipeline ML open-source, per codificare in vettori le immagini del dataset VOC 2012. Poi creiamo un indice IVF_FLAT con Faiss e salviamo il file dell'indice. Infine, usiamo Feder per la visualizzazione.
Creare un indice IVF_Flat
Gli indici vengono creati per accelerare il processo di ricerca. Si può fare un'analogia con un dizionario. Tutte le parole sono organizzate in base alle loro iniziali. Più nello specifico, le parole con le stesse iniziali sono raggruppate insieme. E sappiamo tutti che il numero di voci sotto ogni iniziale è diverso. Abbiamo più parole che iniziano con la lettera "E" rispetto a quelle che iniziano con "Z". Quando cerchiamo una parola, possiamo navigare rapidamente alla sezione che contiene solo parole con la stessa iniziale. Questo aiuta ad aumentare drasticamente la velocità di ricerca.
Allo stesso modo, l'indice IVF_FLAT divide i vettori nello spazio vettoriale in diversi cluster in base alla distanza vettoriale. I vettori vicini tra loro hanno maggiori probabilità di essere inseriti nello stesso cluster. E i vettori non sono necessariamente distribuiti in modo uniforme in ogni cluster. Pertanto, ogni cluster contiene una quantità diversa di vettori.
In questo caso d'uso, abbiamo usato Faiss per creare un indice IVF_FLAT sulle 17.000 immagini del dataset VOC 2012, con un nlist di 256. I 17.000 vettori di immagini sono divisi in 256 cluster in base al metodo di clustering K-means.
Con Feder, puoi visualizzare il clustering dello spazio vettoriale ad alta dimensionalità in una vista 2D. Feder supporta la visualizzazione dei dettagli di ciascun cluster offrendo al contempo un'esperienza utente interattiva. Per comprendere meglio l'indice IVF_FLAT, puoi fare clic su uno dei cluster in Feder, e quindi vedrai un massimo di nove immagini rappresentate da vettori all'interno di questo cluster.
Ricerca grossolana
Quando inserisci un'immagine target e la converti in un vettore target per la ricerca inversa di immagini, il sistema calcola prima la distanza tra il vettore target e il centroide di ciascun cluster per trovare i cluster più vicini.
In questo caso d'uso, nlist è uguale a 256, il che significa che l'intero spazio vettoriale è diviso in 265 unità di cluster. Pertanto, nel processo di ricerca grossolana, il sistema confronta la distanza tra il vettore target e 256 centroidi di cluster.
Negli indici IVF, i vettori vengono raggruppati in base alla loro distanza relativa l'uno dall'altro. Ciò significa che è molto probabile che i nearest neighbor del vettore target si trovino nei suoi cluster più vicini. Possiamo controllare il numero di unità di cluster da interrogare con il parametro nprobe. In questo caso d'uso, nprobe è uguale a 8, il che significa che il sistema cercherà il nearest neighbor del vettore target all'interno dei primi otto cluster più vicini.
Lo screenshot qui sotto è una vista dettagliata dei cluster più vicini. In cluster-186 (l'ottavo cluster più vicino al vettore target) possiamo vedere che contiene alcuni vettori di immagini di auto. Sebbene le auto non siano affatto simili all'aereo nella nostra immagine target, le immagini in cluster-186 e il target condividono una certa somiglianza, poiché le piste per auto nelle immagini di cluster-186 assomigliano molto alla pista aeroportuale nell'immagine target. In un cluster molto più vicino, cluster-96, possiamo vedere che contiene immagini di aeromobili nel cielo.
Ricerca grossolana.
I cluster in questo caso d'uso dimostrano che durante l'embedding, il modello di machine learning estrae accuratamente le caratteristiche tra cui aeromobile, pista e cielo nell'immagine target. Quindi divide i vettori nello spazio vettoriale in base a queste caratteristiche. Cluster-186 condivide la caratteristica di "pista" mentre cluster-96 condivide la caratteristica di "aeromobile".
Ricerca fine
Dopo una ricerca grossolana, possiamo riservare un certo numero di cluster nprobe per una ricerca fine. In questa fase, il sistema confronta la distanza tra il vettore target e tutti i vettori nei cluster nprobe. Quindi i vettori topK più vicini vengono restituiti come risultati finali.
In questo caso d'uso, il sistema calcola la distanza tra il vettore target e un totale di 742 vettori in 8 cluster durante il processo di ricerca fine.
Feder fornisce due modalità di visualizzazione per il processo di ricerca fine. Una modalità è la visualizzazione basata su cluster e distanza vettoriale. L'altra è la modalità di proiezione per la riduzione della dimensionalità.
Nello screenshot qui sotto, diversi cluster sono mostrati in colori diversi. Il cerchio bianco al centro rappresenta il vettore target. Con l'aiuto di Feder, puoi vedere la distanza tra ciascun vettore e il vettore target in modo più chiaro e diretto. Puoi fare clic su ciascun vettore per vedere informazioni più dettagliate come la sua distanza dal vettore target, l'immagine che rappresenta, ecc.
Ricerca fine.
Lo screenshot qui sotto è la modalità di proiezione per la riduzione della dimensionalità. Anche qui, diversi cluster sono mostrati in colori diversi. Attualmente, supportiamo solo UMAP, uno dei metodi più popolari per la riduzione della dimensionalità. Altri metodi di proiezione saranno supportati nelle future versioni di Feder.
Ricerca fine.
Analisi delle prestazioni di ricerca
Quando si effettua una ricerca senza un indice, il sistema deve calcolare la distanza tra il vettore target e tutti i 17.000 vettori nel database. Tuttavia, al contrario, se costruiamo un indice IVF_FLAT, l'efficienza della ricerca aumenta notevolmente poiché il volume di calcolo viene significativamente ridotto (il sistema deve calcolare solo la distanza tra il vettore target e i 256 centroidi dei cluster nella ricerca grossolana e 742 vettori nella ricerca fine).
Inoltre, con la visualizzazione Feder, ci renderemo conto che il valore dei parametri di costruzione dell'indice influenzerà il modo in cui lo spazio vettoriale viene suddiviso. Il parametro nprobe può essere utilizzato per ottenere un compromesso tra efficienza e accuratezza della ricerca. Quanto più alto è il valore di nprobe, tanto più ampio è l'ambito della ricerca e tanto più accurati sono i risultati. Ma di conseguenza, l'efficienza della ricerca sarà compromessa poiché il volume di calcolo aumenta.
Cosa fare dopo
- Prova Attu per gestire il tuo database vettoriale con la semplicità di un solo clic.
- Scopri come visualizzare la tua ricerca del vicino più prossimo con Feder.
Continua a leggere

Why Teams Are Migrating from Weaviate to Zilliz Cloud — and How to Do It Seamlessly
Explore how Milvus scales for large datasets and complex queries with advanced features, and discover how to migrate from Weaviate to Zilliz Cloud.

Announcing the General Availability of Single Sign-On (SSO) on Zilliz Cloud
SSO is GA on Zilliz Cloud, delivering the enterprise-grade identity management capabilities your teams need to deploy vectorDB with confidence.

Introducing Zilliz MCP Server: Natural Language Access to Your Vector Database
Developers can easily manage and query vector databases with natural language via Zilliz MCP Server in AI-native environments.



