milvus-logo
LFAI
Casa
  • Guida per l'utente

Reranking

Milvus abilita le funzionalità di ricerca ibrida utilizzando l'API hybrid_search(), che incorpora sofisticate strategie di reranking per affinare i risultati della ricerca da più istanze di AnnSearchRequest. Questo argomento tratta il processo di reranking, spiegandone il significato e l'implementazione di diverse strategie di reranking in Milvus.

Panoramica

La figura seguente illustra l'esecuzione di una ricerca ibrida in Milvus ed evidenzia il ruolo del reranking nel processo.

reranking_process

Il reranking nella ricerca ibrida è una fase cruciale che consolida i risultati di diversi campi vettoriali, assicurando che l'output finale sia pertinente e accuratamente prioritario. Attualmente, Milvus offre queste strategie di reranking:

  • WeightedRanker: Questo approccio unisce i risultati calcolando una media ponderata dei punteggi (o distanze vettoriali) di diverse ricerche vettoriali. Assegna pesi in base alla rilevanza di ciascun campo vettoriale.

  • RRFRanker: Questa strategia combina i risultati in base ai loro ranghi nelle diverse colonne vettoriali.

Punteggio ponderato (WeightedRanker)

La strategia WeightedRanker assegna pesi diversi ai risultati di ogni percorso di reperimento vettoriale in base alla significatività di ogni campo vettoriale. Questa strategia di reranking si applica 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 del testo potrebbe essere considerata più importante della distribuzione dei colori nelle immagini.

Il processo di base di WeightedRanker è il seguente:

  • Raccogliere i punteggi durante il recupero: Raccoglie i risultati e i loro punteggi da diversi percorsi di recupero vettoriale.

  • Normalizzazione dei punteggi: Normalizza i punteggi di ogni percorso in un intervallo [0,1], dove i valori più vicini a 1 indicano una maggiore rilevanza. Questa normalizzazione è fondamentale perché le distribuzioni dei punteggi variano in base ai diversi tipi di metrica. Ad esempio, la distanza per IP varia da [-∞,+∞], mentre la distanza per L2 varia da [0,+∞]. Milvus utilizza la funzione arctan, trasformando i valori nell'intervallo [0,1] per fornire una base standardizzata per i diversi tipi di metrica.

    arctan-function

  • Allocazione dei pesi: Assegna un peso w𝑖 a ogni percorso di recupero vettoriale. Gli utenti specificano i pesi, che riflettono l'affidabilità, l'accuratezza o altre metriche pertinenti della fonte di dati. Ogni peso varia da [0,1].

  • Fusione del punteggio: Calcola una media ponderata dei punteggi normalizzati per ottenere 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.

weighted-reranker reranker ponderato

Per utilizzare questa strategia, applicare un'istanza di WeightedRanker e impostare i valori dei pesi passando un numero variabile di argomenti numerici.

from pymilvus import WeightedRanker

# Use WeightedRanker to combine results with specified weights
rerank = WeightedRanker(0.8, 0.8, 0.7) 

Si noti che:

  • Ogni valore di peso varia da 0 (meno importante) a 1 (più importante), influenzando il punteggio finale aggregato.

  • Il numero totale di valori di peso forniti in WeightedRanker deve essere uguale al numero di istanze di AnnSearchRequest create in precedenza.

  • Vale la pena notare che, a causa delle diverse misure dei vari tipi di metrica, normalizziamo le distanze dei risultati di richiamo in modo che siano comprese nell'intervallo [0,1], dove 0 significa diverso e 1 significa simile. Il punteggio finale sarà la somma dei valori di peso e delle distanze.

Fusione di rango reciproco (RRFRanker)

RRF è un metodo di fusione dei dati che combina le liste di classificazione in base al reciproco dei loro ranghi. È un modo efficace per bilanciare l'influenza di ciascun campo vettoriale, soprattutto quando non esiste una chiara precedenza di importanza. Questa strategia si usa in genere quando si vuole dare la stessa considerazione a tutti i campi vettoriali o quando c'è incertezza sull'importanza relativa di ciascun campo.

Il processo di base della RRF è il seguente:

  • Raccogliere le classifiche durante il recupero: I recuperatori di più campi vettoriali recuperano e ordinano i risultati.

  • Fusione delle classifiche: L'algoritmo RRF pondera e combina le classifiche di ciascun retriever. La formula è la seguente:

    rrf-ranker rrf-ranker

    In questo caso, 𝑁 rappresenta il numero di percorsi di recupero diversi, rank𝑖(𝑑) è la posizione di rango del documento recuperato 𝑑 da parte dell'𝑖esimo retriever e 𝑘 è un parametro di smussamento, in genere impostato a 60.

  • Classifica completa: Classifica nuovamente i risultati recuperati in base ai punteggi combinati per produrre i risultati finali.

Per utilizzare questa strategia, applicare un'istanza di RRFRanker.

from pymilvus import RRFRanker

# Default k value is 60
ranker = RRFRanker()

# Or specify k value
ranker = RRFRanker(k=100)

La RRF permette di bilanciare l'influenza tra i campi senza specificare pesi espliciti. Le migliori corrispondenze concordate da più campi avranno la priorità nella classifica finale.

Tradotto daDeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Questa pagina è stata utile?