Căutare Hibridă (Sparse + Dense) & Reciprocal Rank Fusion (RRF) în Baze de Date Vectoriale & Căutare Semantică

Combinarea celor două lumi: precizia pe cuvinte cheie exacte (BM25 / Sparse) cu înțelegerea conceptuală profundă (Dense Vectors) prin algoritmul RRF.

Sintaxă & interogare
# Formula Reciprocal Rank Fusion (RRF):
# RRF_Score(d) = Σ [ 1 / (k + Rank_dense(d)) ] + Σ [ 1 / (k + Rank_sparse(d)) ]
# unde constanta k = 60 este standardul industrial

Descriere & Utilizare

Căutarea pur vectorială (Dense Retrieval) are o slăbiciune binecunoscută: are dificultăți la identificarea exactă a codurilor de produs, a numerelor de articole de lege, a acronimelor rare sau a numelor proprii specifice (de exemplu, un model poate confunda codul de eroare ERR_404_AUTH cu un text general despre autentificare).

Soluția de producție de elită este Căutarea Hibridă (Hybrid Search): interoghezi simultan două sisteme — un căutător pe cuvinte cheie (Sparse / BM25 / SPLADE) și un căutător semantic dens (Dense Vectors).

Rezultatele celor două liste sunt fuzionate prin Reciprocal Rank Fusion (RRF): un algoritm elegant care acordă puncte fiecărui document pe baza poziției sale în ambele clasamente, garantând că un document care apare sus în ambele metode va urca pe primul loc fără a necesita calibrarea scorurilor numerice brute.

Cum să o reții ușor

💡 Ca doi inspectori care verifică un dosar: unul verifică riguros codul numeric și ștampila exactă (Sparse/BM25), iar celălalt citește conținutul și înțelege sensul general (Dense Vector). RRF este ședința în care combină rapoartele.

Opțiuni și parametri tehnici

  • k = 60: constanta de netezire standard în algoritmul RRF; previne ca primele poziții dintr-o listă să domine disproporționat clasamentul.
  • Sparse Vectors (BM25 / BM42 / SPLADE): vectori rari în care fiecare dimensiune corespunde unui cuvânt specific din vocabular.
  • Alpha (pondere hibridă): în sistemele cu ponderare liniară (ex: Qdrant / Weaviate), alpha=0.7 acordă 70% greutate vectorilor denși și 30% cuvintelor cheie.

Exemple practice și cazuri de utilizare

  • Căutare hibridă nativă în Qdrant cu BM42: folosește parametrul prefetch pentru a combina două căutări într-un singur apel.
  • Căutare hibridă în PostgreSQL: combină to_tsvector('romanian', continut) @@ to_tsquery('...') cu embedding query_vec.
  • Implementare RRF în Python: construiește un dicționar cu scor[id] += 1 / (60 + pozitie) pentru fiecare listă de rezultate.

Sfaturi de configurare & capcane

Folosește întotdeauna căutare hibridă în aplicații juridice, medicale sau e-commerce: utilizatorii caută frecvent după coduri exacte (SKU, articole de lege) unde căutarea pur semantică dă greș.

Comenzi și ghiduri înrudite