← Resources
By Sora Kashiwagi
— Senior Engineer, Vector Search
·
· TUTORIAL
Ricerca ibrida: combinare BM25 e ricerca vettoriale per il RAG
La ricerca per parole chiave (BM25) e la ricerca vettoriale falliscono in modi opposti, ed è esattamente per questo che il RAG in produzione le combina. Questa guida spiega entrambi i metodi, come la fusione (RRF) unisce i loro risultati, dove si inserisce il reranking e quando la ricerca ibrida supera in modo significativo quella vettoriale pura.
Due tipi di ricerca che falliscono in modo diverso
BM25 (ricerca lessicale o per parole chiave) assegna un punteggio ai documenti in base alla sovrapposizione esatta dei termini, dando più peso ai termini rari e penalizzando la lunghezza. È deterministica e opera su un indice invertito. La ricerca vettoriale (semantica) codifica query e documenti in embedding densi e recupera per similarità ai vicini più prossimi, catturando significato, sinonimi e parafrasi — anche tra lingue diverse.
Le loro debolezze sono immagini speculari. BM25 manca sinonimi e concetti: una query su «problemi di memoria del database» non troverà una pagina intitolata «politiche di eviction della cache» se le parole letterali differiscono. La ricerca vettoriale manca i token esatti — acronimi, SKU, codici di errore, ID, numeri di modello — e soffre di deriva semantica, restituendo risultati semanticamente vicini ma errati come «scarpe da corsa Adidas» per una query «scarpe da corsa Nike». Poiché le modalità di fallimento sono complementari, nessuna da sola è sufficiente.
Cosa fa la ricerca ibrida
La ricerca ibrida esegue il recupero lessicale (BM25) e quello denso (vettoriale) in parallelo, poi unisce le due liste di risultati classificati in una sola. Il passaggio di fusione è la parte interessante, perché i punteggi BM25 e i punteggi di similarità vettoriale si collocano su scale completamente diverse — non si possono semplicemente sommare.
Per questo il metodo di fusione dominante, Reciprocal Rank Fusion (RRF), usa solo la posizione nel ranking, non i punteggi grezzi. Il punteggio fuso di ogni documento è la somma, su entrambi i recuperatori, di 1 diviso per (k più il suo rank), dove k è una piccola costante (comunemente 60; alcuni studi usano 20). Poiché ignora completamente le distribuzioni dei punteggi, RRF non richiede normalizzazione e funziona «pronto all'uso» — motivo per cui è l'impostazione predefinita nella maggior parte dei database vettoriali.
RRF vs fusione ponderata
RRF non è l'unica opzione. La fusione ponderata (alpha) normalizza i due insiemi di punteggi e li combina con un peso regolabile: un alpha di 0 è ricerca pura per parole chiave, 1 è ricerca vettoriale pura, 0,5 è pari peso, e i valori predefiniti spesso si attestano intorno a 0,75 verso il semantico. Alcuni motori offrono anche la fusione basata su punteggio relativo e su distribuzione.
Il compromesso: RRF è robusto e ha pochi parametri, ideale quando non si vuole fare tuning per corpus. La fusione ponderata offre una manopola per favorire la corrispondenza esatta dei termini (alpha più basso) per contenuti tecnici ricchi di identificatori, o la semantica (alpha più alto) per domande in linguaggio naturale. Inizia con RRF; ricorri alla fusione ponderata quando hai un motivo chiaro per favorire uno dei recuperatori.
Dove si inserisce il reranking
Il recupero ibrido è la prima fase; il reranking è la seconda. Un recuperatore veloce (BM25, vettoriale o ibrido) estrae un insieme di candidati, poi un cross-encoder rivaluta ogni candidato codificando congiuntamente la query e il documento in un'unica passata con cross-attention completa. I cross-encoder sono molto più precisi dei recuperatori della prima fase, ma troppo costosi per operare sull'intero corpus, quindi rivalutano solo i migliori k candidati.
Il pipeline di produzione canonico è quindi: recupero ibrido (BM25 + vettoriale, fuso con RRF) → cross-encoder o reranker LLM → migliori risultati nel contesto del modello. Ogni fase svolge il lavoro in cui è migliore — prima il recall, alla fine la precisione.
Porta davvero benefici? E come costruirlo in osFoundry
I guadagni sono reali ma dipendono dai tuoi dati. Lo studio BEIR di Elastic ha rilevato che l'ibrido con RRF ha migliorato l'NDCG@10 medio di circa il 18% rispetto al solo BM25, e di un margine minore rispetto a un robusto encoder appreso, risultando uguale o migliore di BM25 su ogni dataset testato. Man mano che i modelli densi sono migliorati, il guadagno marginale dell'ibrido si è ridotto — spesso pochi punti percentuali su dati nel dominio — ma rimane maggiore su corpus fuori dominio, termini rari e query che mescolano linguaggio naturale con identificatori esatti. L'ibrido resta l'impostazione predefinita in produzione.
Il pipeline di RAG personalizzato di osFoundry espone tutto questo come fasi componibili anziché come una scatola nera: una fase BM25 e una fase vettoriale operano in parallelo, una fase di fusione (RRF per impostazione predefinita, ponderata come opzione) le unisce, e una fase di reranking affina il risultato prima che raggiunga il modello. Regoli l'equilibrio lessicale-semantico per base di conoscenza nella configurazione, seguendo il pattern recupera-fondi-riordina senza scrivere il codice di infrastruttura.
Frequently asked questions
- Qual è la differenza tra ricerca per parole chiave e ricerca semantica?
- La ricerca per parole chiave (lessicale), come BM25, corrisponde a termini esatti e pondera quelli rari — precisa ma cieca ai sinonimi. La ricerca semantica (vettoriale) codifica il significato in embedding e trova per similarità, catturando parafrasi e concetti correlati, ma può perdere token esatti come ID e codici di errore. Sono forti in situazioni opposte.
- Cos'è la ricerca ibrida?
- La ricerca ibrida esegue in parallelo sia il recupero per parole chiave (BM25) sia quello vettoriale e unisce i loro risultati classificati in un'unica lista con un algoritmo di fusione. Esiste perché i due metodi falliscono in modo diverso — il vettoriale gestisce sinonimi e concetti, BM25 eccelle sui termini esatti, sugli identificatori e sul gergo raro — quindi combinarli migliora sia il recall sia la precisione.
- Cos'è Reciprocal Rank Fusion (RRF)?
- RRF unisce due liste classificate usando solo la posizione nel ranking, non i punteggi grezzi. Il punteggio fuso di ogni documento è la somma, sui recuperatori, di 1 diviso per (k più il suo rank), dove k è una piccola costante (comunemente 60). Poiché ignora le scale di punteggio incompatibili di BM25 e della ricerca vettoriale, non necessita di normalizzazione e funziona bene pronto all'uso.
- Quando la ricerca ibrida supera quella vettoriale pura?
- Quando le query mescolano linguaggio naturale con identificatori esatti, usano gergo raro o specifico del dominio, operano su contenuti fuori dominio o sono multilingue. La ricerca vettoriale pura può bastare per domande puramente concettuali su dati ben incorporati e nel dominio. Per basi di conoscenza tecniche piene di codici e nomi di prodotti, l'ibrida è chiaramente migliore.
- Perché la ricerca vettoriale perde i termini esatti e gli ID?
- Gli embedding comprimono il testo in un vettore di dimensione fissa che cattura il significato, non l'ortografia esatta, quindi token rari come codici di errore, SKU e acronimi vengono levigati — una proprietà a volte chiamata cecità strutturale. Il modello sa di cosa parla un passaggio ma non che contiene la stringa letterale cercata, che è esattamente ciò in cui BM25 eccelle.
- RRF o fusione ponderata — quale usare?
- Inizia con RRF: è robusto, ha pochi parametri e non richiede tuning per corpus. Passa alla fusione ponderata (alpha) quando hai un motivo chiaro per favorire un recuperatore — un alpha più basso per favorire la corrispondenza esatta dei termini su contenuti ricchi di identificatori, un alpha più alto per favorire la semantica su domande in linguaggio naturale.
- La ricerca ibrida aggiunge latenza o costi, e ne vale la pena?
- Esegue due recuperi più una fase di fusione, quindi c'è un po' di overhead, e il reranking ne aggiunge altro. Per la maggior parte dei sistemi RAG i guadagni in recall e precisione lo giustificano, specialmente su corpus tecnici o a contenuto misto. Se hai dati ben incorporati e puramente concettuali e la latenza è critica, il vettoriale puro potrebbe bastare — misura sulle tue query.
Sources