पाठ 11 / 27

Hybrid Search और Reciprocal Rank Fusion

Keyword और vector परिणामों को एक ranking में जोड़ें।

दो कमज़ोर संकेत एक से बेहतर

Keyword search सटीक शब्दों पर सटीक है; vector search अर्थ समझता है। Hybrid search दोनों चलाकर सूचियाँ मिलाता है। दोनों systems के scores अलग पैमानों पर हैं, इसलिए मिलाने का मज़बूत तरीक़ा Reciprocal Rank Fusion (RRF) है: हर दस्तावेज़ को हर उस सूची से 1 / (k + rank) मिलता है जिसमें वह आता है (k अक्सर 60), और योग अंतिम क्रम तय करते हैं। जो दस्तावेज़ दोनों सूचियों में ऊँचे हैं वे ऊपर आते हैं, और score calibration नहीं चाहिए। कई vector databases और search engines में hybrid search अंतर्निहित है।

RRF, चलाकर

मैंने यह सादा-Python (सिर्फ़ standard library) उदाहरण चलाया। दस्तावेज़ A keyword सूची में पहला और vector सूची में दूसरा है, C उल्टा। A और C शीर्ष पर लगभग बराबर आते हैं, E (सिर्फ़ vector सूची में) और D (सिर्फ़ keyword सूची में) पीछे रहते हैं।

def rrf(rankings, k=60):
    scores = {}
    for ranking in rankings:
        for rank, doc in enumerate(ranking, start=1):
            scores[doc] = scores.get(doc, 0) + 1 / (k + rank)
    return sorted(scores.items(), key=lambda x: -x[1])

keyword = ["A", "B", "C", "D"]
vector  = ["C", "A", "E", "B"]
for doc, s in rrf([keyword, vector]):
    print(doc, round(s, 4))

Output:

A 0.0325
C 0.0323
B 0.0318
E 0.0159
D 0.0156

ज़रूरी हो तो भार दें

RRF दोनों सूचियों को बराबर मानता है। आपके golden set पर एक retriever साफ़ मज़बूत हो तो उसका योगदान ज़्यादा भार दें और दोबारा मापें।

त्वरित जाँच: Results मिलाने के लिए RRF लोकप्रिय क्यों है?

  • यह सिर्फ़ duplicates हटाता है
  • इसे कोई ranking नहीं चाहिए
  • यह नया मॉडल प्रशिक्षित करता है
  • यह ranks उपयोग करता है, इसलिए असंगत score पैमाने मायने नहीं रखते
Answer

यह ranks उपयोग करता है, इसलिए असंगत score पैमाने मायने नहीं रखते — Scores न सही, ranks systems के बीच तुलनीय हैं।