Vai al contenuto

Recupero ibrido: vettore + parola chiave + metadati

Ingegnerizzare un recupero ibrido resiliente: fondere segnali vettoriali, lessicali, metadati e temporali per RAG su siti web.

retrieval • hybrid • search • rag

Il recupero a modalità singola fallisce sui casi limite: i vettori densi mancano token e ID rari; il lessicale puro manca parafrasi e somiglianza semantica. Il recupero ibrido fonde segnali complementari, semantica densa, lessicale sparso, metadati strutturati e freschezza temporale, per produrre insiemi candidati stabili e ad alta precisione. Questo articolo dettaglia architettura, normalizzazione, fusione dei punteggi, gestione dei fallimenti e valutazione.

Motivazione

Scenari di fallimento:

  • Nomi propri / codici SKU mancati dal modello denso.
  • Query su cambi di prezzo che recuperano snapshot obsoleti senza boost temporale.
  • Domande lunghe in linguaggio naturale sovrappesate su stopword in un sistema solo sparse.
  • Falsi positivi vettoriali su pagine semanticamente ampie, come testo marketing generico, senza ancoraggio lessicale.

L’ibrido mitiga catturando dimensioni ortogonali di evidenza.

Stratificazione dei componenti

Flusso consigliato:

  1. Query Embedding → ricerca ANN (k_vec)
  2. Ricerca lessicale (BM25 / SPLADE / Elasticsearch) (k_lex)
  3. Unione → normalizzazione punteggi (scaling per fonte)
  4. Passaggio filtro metadati (locale, access_tier, page_type)
  5. Aggiustamenti di diversità e freschezza
  6. Cross/Mono Re-Ranker opzionale
  7. Troncamento finale (top K)

Mantieni i punteggi grezzi pre-fusione per audit.

Normalizzazione della query

Passaggi:

  • Normalizza Unicode NFKC
  • Minuscolo, preservando uno snapshot del casing per formattare la risposta se necessario
  • Tokenizza e conserva le stopword, perché gli embedding semantici possono sfruttare il contesto
  • Espansione sinonimi / alias: aggiungi token alternativi per mappare codename interni di prodotto, non inseriti nel prompt del modello e usati solo per recupero sparse.
  • Estrazione numerica e versione: cattura pattern X.Y.Z per scoring lessicale mirato.

Metadati e filtri attributo

I filtri applicati dopo l’unione iniziale dei candidati minimizzano la perdita di recall. Campi comuni: locale, access_tier, page_type, product_area, updated_bucket. Applica i filtri di sicurezza, tenant / tier, PRIMA della fusione dei punteggi per impedire che leakage influenzi il re-ranking. Fornisci una modalità debug che restituisca l’insieme filtered_out per ispezione.

Strategia di re-ranking

Usa un cross-encoder leggero, modello distillato, sui primi N candidati, 10-20. Se la latenza supera il budget, degrada: salta il re-rank O riduci il numero di candidati aumentando il peso lessicale. Traccia re_rank_delta = MRR_post - MRR_pre per giustificare il costo. Metti in cache i risultati di re-rank per insiemi di unione identici entro un TTL breve.

Freschezza e segnali temporali

Calcola freshness_weight = exp(-lambda * age_days) con lambda tarata per tipo di contenuto, più alta per pricing, più bassa per API stabili. Combina: final_score = w_sem * sem_score + w_lex * lex_score + w_fresh * freshness_weight + w_meta * meta_priors. Normalizza prima ogni componente, z-score o min-max, per evitare dominanza.

Modalità di fallimento

FallimentoCausaMitigazione
Bias di popolaritàtf-idf lessicale sovrappesatoLimita il contributo della frequenza dei termini
Risultati obsoletiPeso di freschezza mal taratoRicalibra lambda usando il set di valutazione
Leakage di localeApplicazione tardiva dei filtriSposta prima i filtri di sicurezza
Drift semanticoUpgrade del modello di embeddingDual-index e confronto A/B prima del rollout
Rumore da over-fusionDimensione unione non limitataLimita l’unione, pruning di diversità

Framework di valutazione

Esperimenti:

  • Ablation: misura Recall@k e MRR per vector only, lexical only, hybrid senza rerank, full.
  • Tuning pesi di fusione: grid search dei pesi usando un validation gold set.
  • Budget di latenza: traccia media + P95 della latenza di recupero per configurazione.
  • Drift: monitora il cambiamento relativo settimanale del recall per query head e tail.

Mantieni un manifest di valutazione con hash di configurazione.

Ciclo di ottimizzazione

Ciclo:

  1. Registra tracce di recupero: query, candidati, punteggi, source_tag.
  2. Identifica mis-hit, bassa fedeltà a valle o basso conteggio citazioni, e classifica la causa radice: candidato lessicale mancante, falso positivo semantico, contenuto obsoleto.
  3. Regola pesi / soglie; esegui la suite offline.
  4. Metti in canary i nuovi pesi di fusione dietro feature flag.
  5. Promuovi su miglioramento statisticamente significativo.

Punti chiave

  • Il recupero ibrido è un sistema di manopole tarabili: strumenta senza sosta.
  • Applica presto i filtri di sicurezza e accesso; evita leakage nello scoring.
  • Il re-ranking deve giustificare la latenza tramite aumento misurabile di MRR / Recall.
  • Il decadimento temporale impedisce a pagine obsolete ma autorevoli di dominare.
  • Tratta i cambi di fusione come codice: versiona, valuta, porta avanti o indietro.