Visualizzazione del database vettoriale: Feder, uno strumento potente per la ricerca per similarità
Con l'aiuto dei modelli di machine learning (ML), possiamo facilmente codificare dati non strutturati come foto e video in embedding per la ricerca di similarità vettoriale. Per accelerare la ricerca, vengono adottati vari indici come IVF_FLAT e HNSW. Per selezionare un indice più adatto all'applicazione, gli utenti devono trovare un compromesso tra velocità di ricerca e accuratezza.
Per risparmiare agli utenti questa difficoltà, siamo orgogliosi di annunciare Feder, uno strumento per visualizzare gli algoritmi ANNS. Con Feder, gli utenti possono comprendere diversi tipi di indici e i relativi parametri in un modo senza precedenti per immediatezza. Feder aiuta anche a visualizzare dati provenienti da database vettoriali avanzati, come Pinecone, rendendo più semplice gestire grandi volumi di dati.
Feder consente agli utenti di osservare come sono strutturati i diversi indici, come i dati sono organizzati usando ciascun tipo di indice e come le diverse configurazioni dei parametri influenzano la struttura di indicizzazione. Inoltre, Feder aiuta anche a visualizzare l'intero processo di ricerca di similarità vettoriale e fornisce una registrazione dettagliata dell'accesso ai dati durante la ricerca. È particolarmente utile per analizzare e visualizzare dati complessi, aiutando gli utenti a identificare tendenze e pattern per prendere decisioni informate.
Attualmente, Feder supporta solo HNSW da hnswlib. Altri indici saranno supportati presto.
Introduzione ai database vettoriali
I database vettoriali sono un tipo specializzato di database progettato per archiviare, gestire e interrogare in modo efficiente grandi volumi di dati vettoriali. I dati vettoriali rappresentano informazioni complesse—come immagini, testo o audio—come vettori numerici in uno spazio vettoriale ad alta dimensionalità. Questi database sono ottimizzati per la ricerca di similarità, consentendo agli utenti di trovare i vettori più simili a un determinato vettore di query. Questa capacità è particolarmente preziosa in applicazioni come il riconoscimento delle immagini, l'elaborazione del linguaggio naturale e i sistemi di raccomandazione, dove comprendere le sfumature dei dati è cruciale.
Comprendere Feder nei database vettoriali
Feder è sviluppato con JavaScript. Per usare Feder per la visualizzazione, devi prima costruire un indice e salvare il file dell'indice da Faiss o Hnswlib. Feder può aiutare nella preelaborazione e nella pulizia dei dati prima della visualizzazione. Quindi Feder analizza il file caricato per ottenere informazioni sull'indice e si prepara alla visualizzazione. Feder gestisce e visualizza anche la qualità dei dati archiviati nei database vettoriali. Durante una ricerca di similarità vettoriale, devi fornire un vettore target e la configurazione dei parametri di ricerca. Quindi Feder visualizza per te l'intero processo di ricerca, inclusa la trasformazione dei dati in vettori numerici usando un modello di embedding.
federjs consiste di due parti:
- Feder-Core
- Analizza i file di indice per ottenere informazioni dettagliate sugli indici.
- Supporta l'interrogazione degli indici e mantiene una registrazione dettagliata dei vettori a cui si accede durante una query sull'indice.
- Feder-View
- Consente la visualizzazione della struttura complessiva di diversi indici.
- Consente la visualizzazione dell'intero processo di ricerca di similarità con diversi indici.
Oltre a federjs, Feder fornisce anche federpy, uno strumento Python. Con federpy, puoi visualizzare direttamente la struttura dell'indice e il processo di ricerca in IPython Notebook. Oppure puoi in alternativa esportare la visualizzazione in un file HTML e poi usare un browser per avviare il servizio web.
Scopri di più su come usare Feder leggendo la guida utente di Feder.
In questo caso d'uso, usiamo VOC 2012, il classico dataset di immagini ML che contiene più di 17.000 immagini.
Per prima cosa, utilizziamo Towhee, una pipeline ML open-source, per codificare le immagini del dataset VOC 2012 in vettori. Poi costruiamo un indice con Hnswlib e salviamo il file dell’indice. Infine, usiamo Feder per la visualizzazione. Feder ottimizza il processo di ricerca senza la necessità di cercare nell’intero dataset.
Il link qui offre un’esperienza utente interattiva per vedere la visualizzazione di HNSW.
Un indice HNSW è multistrato e ogni strato è una rete interconnessa. Lo strato inferiore acquisisce tutti gli oggetti di dati nel database, e i punti dati/nodi diventano più radi man mano che si sale verso lo strato più alto. Facciamo un’analogia con il nostro moderno sistema di trasporti. Se stai viaggiando da San Francisco a una boutique nascosta nell’Upper East Side di New York City, probabilmente prenderai prima un volo per JFK o LaGuardia, dove troverai la metropolitana più comoda per raggiungere Manhattan, e poi probabilmente passerai a un autobus o persino a una Citi bike per arrivare in quel quartiere. Allo stesso modo, se vogliamo trovare rapidamente il nodo più vicino al tuo obiettivo, inizieremo prima cercando nello strato più alto perché la ricerca qui è più veloce. Tuttavia, un limite è che, il più delle volte, gli strati e le reti superiori non possono portarci alla destinazione desiderata o aiutarci a trovare i risultati attesi. Pertanto, passiamo allo strato successivo sottostante per una maggiore accuratezza.
Quando si costruisce un indice HNSW, un nodo nello strato più alto verrà selezionato dall’algoritmo come punto di ingresso da cui iniziare la ricerca. Feder utilizza l’elaborazione parallela per migliorare le prestazioni delle query.
Di seguito è mostrata la visualizzazione degli strati 4, 3 e 2 in un indice HNSW a cinque strati costruito sul dataset VOC 2012.
Feder offre un’esperienza utente interattiva. Pertanto, puoi scegliere qualsiasi nodo per osservarlo più da vicino. Il percorso evidenziato in giallo rappresenta il percorso più breve con il minor numero di nodi di transito dall’ingresso per raggiungere il nodo che scegli. I percorsi in bianco mostrano tutti gli altri nodi che il nodo scelto può raggiungere. Ingrandendo, puoi vedere più dettagli e ti renderai conto che più sono gli strati, più simili sono gli oggetti connessi. Feder trasforma anche i dati grezzi in formati visivi.
Puoi visualizzare le statistiche rilevanti nel pannello di panoramica in alto a sinistra. Il parametro M decide quanti altri nodi il nodo scelto può raggiungere in ogni strato. Come possiamo vedere dallo screenshot, m= 8. Ciò significa che, partendo da qualsiasi nodo casuale, il numero massimo di nodi che questo nodo casuale può raggiungere è 8.
Possiamo modificare il valore dei parametri per osservare come viene influenzata la struttura dell’indice.
All’aumentare del valore di M, la struttura HNSW diventa più piatta. Il risultato della modifica del valore di ef è meno evidente nella visualizzazione. In effetti, il parametro ef influenza i link generati durante la costruzione dell’indice.
Dopo aver caricato un’immagine target per la ricerca, Feder mostrerà l’intero processo di ricerca con un’animazione.
L’animazione che visualizza l’intero processo di ricerca per similarità vettoriale.
La visualizzazione mostra un registro dei dati consultati in una ricerca per similarità vettoriale. Vale a dire che puoi vedere tutti i vettori che sono stati confrontati in termini di distanza dal vettore target, mentre quelli non coinvolti in questo processo non vengono mostrati nell’animazione.
Come possiamo vedere nella visualizzazione, per gli indici HNSW, la ricerca parte dal livello più alto, trova il nodo più vicino al target in questo livello e poi scende al livello successivo se tutti i nodi accessibili in questo livello non sono abbastanza vicini al target.
Va notato che la ricerca nel livello inferiore procede lungo più percorsi. Il parametro ef decide la scelta del percorso di ricerca. Per un’introduzione dettagliata a HNSW, leggi il paper "Efficient and robust approximate nearest neighbor search using hierarchical navigable small world graphs".
Attraverso la visualizzazione interattiva, possiamo vedere che i nodi all’inizio del percorso di ricerca sono meno rilevanti. Ma man mano che la ricerca del nearest neighbor procede, l’accuratezza della ricerca aumenta rapidamente. Il pannello delle statistiche a sinistra dimostra che solo circa l’1% delle immagini (circa 170 immagini) su un totale di 17.000 immagini nel dataset VOC 2012 viene effettivamente accesso durante la ricerca. La straordinaria accelerazione nella ricerca è resa possibile grazie all’indice HNSW.
Puoi anche impostare valori diversi per i parametri dell’indice e generare nuovi file di indice per confrontare la struttura e l’efficienza della ricerca. Feder visualizza l’uso dei vector embeddings nelle ricerche di similarità.
- Prova Attu per gestire il tuo database vettoriale con semplicità in un clic
Caratteristiche principali di Feder
Feder è uno strumento potente che offre diverse funzionalità chiave, rendendolo una scelta ideale per gestire e interrogare grandi quantità di dati vettoriali:
Ricerca vettoriale avanzata: Feder supporta sofisticati algoritmi di ricerca vettoriale, inclusi la similarità del coseno e la distanza euclidea, consentendo agli utenti di trovare con alta precisione i vettori più simili a un dato vettore di query.
Scalabilità: Progettato per scalare orizzontalmente, Feder può gestire senza sforzo enormi quantità di dati e volumi elevati di query, garantendo prestazioni robuste anche con la crescita del dataset.
Gestione dei dati: Feder fornisce un sistema completo di gestione dei dati, consentendo agli utenti di gestire, aggiornare e mantenere facilmente i propri dati vettoriali, assicurando integrità e accessibilità dei dati.
Ricerca semantica: Con il supporto per la ricerca semantica, Feder consente agli utenti di cercare vettori in base al loro significato e contesto, migliorando la rilevanza e l’accuratezza dei risultati di ricerca.
Casi d’uso di Feder
La versatilità di Feder lo rende adatto a un’ampia gamma di applicazioni, tra cui:
Riconoscimento delle immagini: Feder può essere utilizzato per sviluppare sistemi di riconoscimento delle immagini in grado di identificare oggetti, persone e scene nelle immagini, rendendolo prezioso per applicazioni in ambito sicurezza, retail e altro ancora.
Elaborazione del linguaggio naturale: Feder può alimentare sistemi di elaborazione del linguaggio naturale che comprendono e generano il linguaggio umano, facilitando applicazioni come chatbot, servizi di traduzione e analisi del sentiment.
Sistemi di raccomandazione: Feder può essere impiegato per creare sistemi di raccomandazione che suggeriscono prodotti, servizi o contenuti agli utenti in base alle loro preferenze e al loro comportamento, migliorando l’esperienza e il coinvolgimento degli utenti.
Integrazione di Feder con database vettoriali
Feder può essere integrato senza soluzione di continuità con altri database vettoriali per creare un sistema di gestione dei dati vettoriali più completo e robusto. I metodi di integrazione includono:
Importazione/Esportazione dei dati: Feder può importare ed esportare dati da altri database vettoriali, consentendo agli utenti di trasferire facilmente dati tra sistemi e mantenere la coerenza tra le piattaforme.
Integrazione API: Feder offre una API robusta, consentendo agli sviluppatori di integrarlo con altri database vettoriali e applicazioni, facilitando una fluida interoperabilità e funzionalità estese.
Federazione delle query: Feder può federare query su più database vettoriali, consentendo agli utenti di cercare vettori in sistemi diversi, ampliando così l’ambito e la profondità della loro analisi dei dati.
Sfruttando queste capacità di integrazione, gli utenti possono migliorare la gestione dei dati e le prestazioni delle query, prendendo decisioni più informate e basate sui dati.
Continua a leggere

Vector Lakebase: End the AI Data Silo
Learn how Vector Lakebase unifies vector search, data lakes, and AI data operations so teams can serve RAG and agents without copy-and-sync pipelines.

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.

DeepSeek Always Busy? Deploy It Locally with Milvus in Just 10 Minutes—No More Waiting!
Learn how to set up DeepSeek-R1 on your local machine using Ollama, AnythingLLM, and Milvus in just 10 minutes. Bypass busy servers and enhance AI responses with custom data.



