Descriere & Utilizare
Căutarea pur vectorială are un punct slab cunoscut: înțelege excelent sensul general al cuvintelor, dar se descurcă slab la coduri exacte de produs (ex: SKU-9941-B), numere de articole de lege (Art. 415 alin. 2), acronime sau nume proprii rare.
Pe de altă parte, algoritmul clasic BM25 (Best Matching 25 – folosit în Elasticsearch) este imbatabil la potrivirea exactă a cuvintelor cheie, dar nu înțelege sinonimele.
QueryFusionRetriever le unește pe amândouă într-un sistem de Hybrid Search: interoghează simultan ambii retrieveri și combină clasamentele folosind formula matematică Reciprocal Rank Fusion (RRF), promovând în top documentele confirmate de ambele metode.
Cum să o reții ușor
💡 Ca o echipă de căutare formată dintr-un detectiv intuitiv care înțelege contextul poveștii (Vector Search) și un arhivar pedant care verifică la literă fiecare serie de buletin și număr de dosar (BM25).
Opțiuni și parametri tehnici
- Execută în paralel căutarea în spațiul de embedding-uri și căutarea TF-IDF/BM25 peste
docstore. - Dacă
num_queries > 1, folosește LLM-ul pentru a genera automat și 3-4 reformulări ale întrebării utilizatorului. - Unifică și deduplică nodurile aplicând algoritmul
reciprocal_rerank.
Exemple practice și cazuri de utilizare
- Construire QueryEngine hibrid:
from llama_index.core.query_engine import RetrieverQueryEngine
qe = RetrieverQueryEngine.from_args(hybrid_retriever) - Activare multi-query expansion (4 variante ale întrebării):
QueryFusionRetriever([vector_retriever, bm25_retriever], num_queries=4)
Sfaturi de configurare & capcane
Setează num_queries=1 în QueryFusionRetriever dacă vrei viteză maximă fără niciun apel suplimentar la LLM înainte de căutare (pur BM25 + Vectori).
Comenzi și ghiduri înrudite
reranker-postprocessor: Resursă asociată din acest modul.query-engine: Resursă asociată din acest modul.vector-store-integrations: Resursă asociată din acest modul.