Una recensione della ricerca ibrida in Milvus
Milvus 2.4 ha esteso le sue capacità di ricerca ibrida con l'introduzione di colonne multi-vettore all'interno di una singola raccolta. Questo aggiornamento consente ricerche di dati più avanzate e flessibili, permettendo query simultanee su più tipi e campi vettoriali. I risultati di ricerca di ciascun campo vengono quindi integrati e riordinati usando molteplici algoritmi di reranking per fornire risultati più accurati.
Perché questa capacità è importante e quali vantaggi offre? Quali sono le strategie di progettazione alla base di questa funzionalità? In questo post esploreremo queste domande. Forniremo anche un esempio pratico che confronta i risultati delle ricerche a vettore singolo e ibride, dimostrando come questa potente nuova funzionalità possa produrre risultati più accurati.
Che cos'è la ricerca ibrida?
Cominciamo dalle basi: che cos'è la ricerca ibrida in Milvus?
Milvus supporta la creazione di fino a 10 campi vettoriali per lo stesso set di dati all'interno di una singola raccolta. Sulla base di questo supporto, la ricerca ibrida consente agli utenti di effettuare ricerche su più colonne vettoriali contemporaneamente. Questa capacità permette di combinare ricerca multimodale, ricerca ibrida sparsa e densa, e ricerca ibrida densa e full-text, offrendo funzionalità di ricerca versatili e flessibili.
Questi vettori in colonne diverse rappresentano diversi aspetti dei dati, provenienti da diversi modelli di embedding o sottoposti a metodi di elaborazione distinti. I risultati delle ricerche ibride vengono integrati utilizzando varie strategie di riordinamento.
come funziona la ricerca ibrida
Come funziona la ricerca ibrida in Milvus
Questa funzionalità consente a colonne diverse di:
Rappresentare molteplici prospettive delle informazioni. Ad esempio, nell'e-commerce, le immagini dei prodotti includono viste frontali, laterali e dall'alto. Viste diverse possono essere rappresentate con diversi tipi o dimensioni di vettori.
Utilizzare vari tipi di embedding vettoriali. Questo include embedding densi da modelli come BERT e Transformers ed embedding sparsi da algoritmi come BM25, BGE-M3, e SPLADE.
Supportare la fusione di vettori multimodali da vari tipi di dati non strutturati come immagini, video, audio e file di testo. Ad esempio, nelle indagini penali, i sospetti possono essere rappresentati tramite modalità biometriche come impronte digitali, impronte vocali e riconoscimento facciale, contribuendo a identificare individui attraverso diverse modalità.
Supportare la fusione della ricerca vettoriale e della ricerca full-text.
Perché abbiamo migliorato la ricerca ibrida
Il recente annuncio di OpenAI del suo modello multimodale GPT-4o ha riacceso le discussioni sul futuro dell'IA. Gestire dati multimodali è sempre più necessario per raggiungere l'Intelligenza Artificiale Generale (AGI). La sua comparsa sottolinea anche la nozione che "tutto può essere vettorializzato." I vettori, il metodo di codifica dell'era dell'IA, sono il perno che collega modalità disparate. Le informazioni che incapsulano stanno diventando più diversificate e intricate, ponendo richieste più elevate ai database vettoriali per l'archiviazione e il recupero dei dati vettoriali.
Pertanto, l’evoluzione verso la ricerca ibrida è fondamentale. Ecco perché Milvus introduce il supporto per la ricerca ibrida nelle sue versioni più recenti, per soddisfare queste esigenze crescenti. Questo miglioramento strategico consente a Milvus di gestire rappresentazioni di dati complesse e multimodali e potenzia le capacità dei sistemi di IA nel comprendere ed elaborare dataset sempre più intricati.
Con questa nuova funzionalità, Milvus consente agli sviluppatori di esplorare nuove possibilità nelle applicazioni basate sull’IA, colmando ulteriormente il divario tra complessità dei dati e insight utilizzabili.
Come abbiamo progettato la ricerca ibrida in Milvus
Supportare la ricerca vettoriale su più colonne vettoriali ha richiesto un’ampia ristrutturazione del design di Milvus. Ad esempio, abbiamo eliminato le limitazioni di archiviazione e scrittura per garantire compatibilità e stabilità del sistema e introdotto metodi di ricerca avanzati per più colonne vettoriali per gestire query complesse.
Come funziona la ricerca ibrida?
In precedenza, Milvus consentiva una sola colonna vettoriale per collection nel percorso di scrittura. Abbiamo rimosso questa limitazione e introdotto un valore predefinito di quattro colonne vettoriali per collection, che può essere esteso fino a un massimo di dieci. Ogni colonna vettoriale all’interno di una collection può supportare tipi di metrica e indice diversi.
Nota importante: Per la compatibilità del sistema, è possibile interrogare una collection solo quando gli indici per tutte le colonne vettoriali sono creati e caricati in memoria.
Abbiamo implementato il recupero vettoriale multi-route e una strategia di riordinamento ibrido per eseguire ricerche su più colonne vettoriali nel percorso di lettura. Il processo è il seguente:
Recupero: Definiamo parametri interni per controllare i risultati recuperati per ogni route di ricerca vettoriale (ogni colonna). Questo passaggio supporta parametri intermedi come filter e limit, ma non parametri di output come
output_fieldegroup_by_field.Riordinamento: Dopo aver ottenuto i risultati da ogni route di recupero, il passaggio successivo consiste nel fondere questi risultati in un processo di riordinamento. Milvus supporta due strategie classiche di riordinamento: Ranked Retrieval Fusion (RRF) e WeightedRanker. Inoltre, Milvus consente anche agli utenti di sfruttare modelli di riordinamento lato client per riordinare i risultati.
qual è il processo di ricerca ibrida all’interno di Milvus
Qual è il processo di ricerca ibrida all’interno del sistema Milvus?
Questa architettura assicura che Milvus possa gestire efficacemente le complessità dell’archiviazione e del recupero di informazioni in ambienti in cui più colonne vettoriali sono essenziali.
Strategie di riordinamento
Attualmente, Milvus supporta le seguenti strategie di riordinamento:
Ranked Retrieval Fusion (RRF): Questa strategia combina i risultati in base ai loro ranking su diverse colonne vettoriali.
WeightedRanker: Questo approccio fonde i risultati calcolando una media ponderata dei punteggi (o distanze vettoriali) provenienti da diverse ricerche vettoriali. Assegna pesi in base alla significatività di ciascun campo vettoriale.
Il seguente grafico illustra come funziona il processo di riordinamento in Milvus.
come funziona il riordinamento
Come funziona il riordinamento in Milvus
Ranked Retrieval Fusion (RRF)
RRF è un algoritmo di fusione dei dati che combina i risultati del recupero in base al reciproco dei loro ranking. Bilancia l’influenza di ciascun campo vettoriale, soprattutto quando non esiste una chiara precedenza di importanza. Questa strategia viene utilizzata quando si desidera considerare in egual misura tutti i campi vettoriali o quando l’importanza relativa di ciascun campo è incerta.
Il processo di base di RRF è il seguente:
Raccogliere i ranking durante il recupero: I retriever su più campi vettoriali recuperano e ordinano i risultati.
Fusione dei ranking: L’algoritmo RRF pesa e combina i ranking provenienti da ciascun retriever. La formula è la seguente:
formula RRF
Qui, 𝑁 rappresenta il numero di diversi percorsi di recupero, rank𝑖(𝑑) è la posizione in classifica del documento recuperato 𝑑 dal recuperatore 𝑖-esimo, e 𝑘 è un parametro di smoothing, tipicamente impostato a 60.
- Classificazione completa: Riordina i risultati recuperati in base ai punteggi combinati per produrre i risultati finali.
WeightedRanker
La strategia WeightedRanker assegna pesi diversi ai risultati provenienti da ciascun percorso di recupero vettoriale in base all'importanza di ciascun campo vettoriale. Questa strategia di reranking viene applicata quando l'importanza di ciascun campo vettoriale varia, consentendo di enfatizzare alcuni campi vettoriali rispetto ad altri assegnando loro pesi più elevati. Ad esempio, in una ricerca multimodale, la descrizione testuale potrebbe essere considerata più importante della distribuzione dei colori nelle immagini.
Il processo di base di WeightedRanker è il seguente:
Raccolta dei punteggi durante il recupero: Raccogli i risultati e i relativi punteggi da diversi percorsi di recupero vettoriale.
Normalizzazione dei punteggi: Normalizza i punteggi di ciascun percorso in un intervallo [0,1], dove valori più vicini a 1 indicano una maggiore pertinenza. Questa normalizzazione è fondamentale perché le distribuzioni dei punteggi variano a seconda dei diversi tipi di metrica. Ad esempio, la distanza per IP varia da [-∞,+∞], mentre la distanza per L2 varia da [0,+∞]. Milvus impiega la funzione arctan, trasformando i valori nell'intervallo [0,1] per fornire una base standardizzata per diversi tipi di metrica.
Allocazione dei pesi: Assegna un peso
w𝑖a ciascun percorso di recupero vettoriale. Gli utenti specificano i pesi, che riflettono l'affidabilità, l'accuratezza o altre metriche pertinenti della fonte dati. Ogni peso varia da [0,1].Fusione dei punteggi: Calcola una media ponderata dei punteggi normalizzati per derivare il punteggio finale. I risultati vengono quindi classificati in base a questi punteggi, dal più alto al più basso, per generare i risultati finali ordinati.
formula weightedranker
Confronto tra ricerca ibrida e ricerca a vettore singolo con un esempio
In questa sezione, confronteremo i risultati della ricerca di immagini utilizzando rispettivamente la ricerca a vettore singolo e quella ibrida, dimostrando come la ricerca ibrida possa migliorare la qualità dei risultati di ricerca. Per maggiori dettagli, consulta gli snippet di codice completi in questo notebook.
Il dataset
Abbiamo scaricato immagini contenenti semafori da fonti pubbliche come nostro dataset.
il dataset
Immagine di query
In questa demo, l'immagine qui sotto è l'immagine di query che vogliamo trovare all'interno del dataset.
immagine di query
Estrazione delle feature con ResNet e CLIP
Dobbiamo creare una collection con più colonne vettoriali prima di eseguire l'estrazione delle feature e inserire le immagini in Milvus. Nello snippet di codice qui sotto, abbiamo creato due colonne vettoriali per archiviare i vettori di feature delle immagini estratti utilizzando diversi modelli di embedding.
Creare una collection con più colonne vettoriali
Per questa demo, usiamo ResNet e CLIP come nostri modelli di embedding.
- ResNet (Residual Network): Un modello popolare per il riconoscimento e la classificazione delle immagini.
resnet.png
- CLIP (Contrastive Language–Image Pre-training): Un modello di embedding bimodale testo-immagine che colma il divario tra dati visivi e testuali. Lo usiamo per estrarre feature dalle didascalie per la ricerca di immagini.
clip
Risultati della ricerca a vettore singolo con vettori ResNet
Se il dataset contiene un’immagine identica alla query nella ricerca per immagini, una ricerca vettoriale densa a colonna singola può restituire rapidamente il risultato corretto. Tuttavia, nei casi reali, le immagini di query spesso differiscono da quelle nel dataset a causa di angolazioni variabili o sfondi ambientali, influenzando i risultati della ricerca vettoriale. In questo esempio, utilizziamo caratteristiche specifiche dell’immagine di query, concentrandoci in particolare sul semaforo, per eseguire la ricerca per immagini.
caratteristiche specifiche dell'immagine di query - il semaforo
Come puoi vedere dai risultati qui sotto, tutte le immagini restituite evidenziano principalmente l’oggetto semaforo. Tuttavia, l’immagine di query (n.3) stessa non è classificata come la più simile. Se limitiamo i risultati della ricerca solo alle prime due immagini, l’immagine di query non apparirà affatto nei risultati.
risultati della ricerca - resnet.png
Risultati della ricerca a vettore singolo con vettori CLIP
Successivamente, esaminiamo un’altra ricerca a vettore singolo. Grazie alla capacità di comprensione multimodale di CLIP, possiamo cercare immagini utilizzando un input testuale. Qui, l’input di ricerca è "images with buildings in the background."
risultati della ricerca - clip
I risultati indicano che le immagini restituite si concentrano sull’elemento di sfondo degli edifici. Tuttavia, l’immagine di query continua a non risultare la corrispondenza migliore.
Risultati della ricerca ibrida
I risultati delle due precedenti ricerche vettoriali a percorso singolo non erano ideali, quindi abbiamo eseguito una ricerca ibrida su più colonne vettoriali. In questa ricerca ibrida, i risultati dei due percorsi AnnSearchRequest vengono fusi utilizzando un metodo di media ponderata. I pesi per le colonne ResNet e CLIP sono stati impostati rispettivamente su 0,7 e 0,8.
risultati della ricerca ibrida
Come puoi vedere dai risultati sopra, questa volta l’immagine di query è stata restituita come l’immagine più simile (Top 1).
Questo esempio illustra come la ricerca ibrida integri efficacemente input multimodali da immagini e testo. Rispetto alle ricerche a vettore singolo, la ricerca ibrida dimostra un miglioramento sostanziale nei risultati finali.
Conclusione
Hybrid Search è una funzionalità fondamentale in Milvus che migliora le capacità di ricerca dei dati consentendo query simultanee su più campi vettoriali. Questa funzionalità combina ricerca ibrida sparsa e densa, ricerca multimodale e ricerca ibrida densa e full-text; tutti questi risultati di ricerca vengono integrati e riclassificati utilizzando strategie efficienti di re-ranking per ottenere un risultato finale più accurato e pertinente.
In futuro, ci concentreremo sull’espansione di Hybrid Search in vari domini. Ad esempio, può essere estesa per sfruttare il reranking basato sul tempo per casi d’uso come consigliare argomenti social di tendenza per Twitter o TikTok. Prevediamo inoltre di introdurre algoritmi di fusione e modelli di reranking più robusti per offrire un’esperienza di ricerca più raffinata.
Il potenziale della ricerca ibrida va oltre quanto trattato qui. Restate sintonizzati per ulteriori aggiornamenti da parte nostra.
Continua a leggere

Top 10 Context Engineering Techniques You Should Know for Production RAG
A practical guide to context engineering for production LLM systems, covering RAG, context processing, memory, agents, and multimodal context.

Cosmos World Foundation Model Platform for Physical AI
NVIDIA's Cosmos platform enables safe, digital twin training of GenAI models for physical applications, overcoming data scarcity and safety challenges.

Similarity Metrics for Vector Search
Exploring five similarity metrics for vector search: L2 or Euclidean distance, cosine distance, inner product, and hamming distance.



