Algoritmul Reciprocal Rank Fusion (RRF): Matematică și Implementare în Baze de Date Vectoriale & Căutare Semantică

Sintaxă & interogare
score = sum(1 / (k + rank_i))

Când combinăm rezultatele dintr-un motor lexical (BM25, unde scorurile pot varia între 0 și 40) cu rezultatele unui motor vectorial (similitudine cosinus, între 0.0 și 1.0), normalizarea simplă a scorurilor eșuează adesea din cauza scalelor incomparabile. Reciprocal Rank Fusion (RRF) rezolvă elegant această problemă bazându-se strict pe poziția (rangul) documentului în fiecare clasament.

Formula matematică RRF pentru fiecare document d:

RRF_Score(d) = Σ [ 1 / (k + rank(d, m)) ]

unde constanta standard k = 60 atenuează impactul diferențelor dintre primele poziții.

def reciprocal_rank_fusion(rankings, k=60):
    rrf_scores = {}
    for rank_list in rankings:
        for rank, doc_id in enumerate(rank_list, start=1):
            if doc_id not in rrf_scores:
                rrf_scores[doc_id] = 0.0
            rrf_scores[doc_id] += 1.0 / (k + rank)
    
    # Sortare descrescătoare după scorul combinat RRF
    return sorted(rrf_scores.items(), key=lambda x: x[1], reverse=True)

bm25_res = ["doc_A", "doc_B", "doc_C"]
vector_res = ["doc_B", "doc_A", "doc_D"]

print("Clasament final RRF:", reciprocal_rank_fusion([bm25_res, vector_res]))

RRF este nativ implementat în Elasticsearch, OpenSearch, Weaviate și Qdrant, devenind standardul de facto în căutarea hibridă de întreprindere.

Învață AI • Comunitate & Q&A

Întrebări & Exemple practice: Algoritmul Reciprocal Rank Fusion (RRF): Matematică și Implementare

Ai o întrebare despre Algoritmul Reciprocal Rank Fusion (RRF): Matematică și Implementare sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!

🤖

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.

Comunitate AI Adaugă o întrebare sau distribuie un cod / prompt

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.