← Resources
By Sora Kashiwagi
— Senior Engineer, Vector Search
·
· TUTORIAL
हाइब्रिड सर्च: RAG के लिए BM25 और वेक्टर सर्च का संयोजन
कीवर्ड (BM25) और वेक्टर सर्च विपरीत तरीकों से विफल होते हैं, और यही ठीक वह कारण है जिससे प्रोडक्शन RAG उन्हें मिलाता है। यह गाइड दोनों विधियों, फ्यूज़न (RRF) उनके परिणामों को कैसे मर्ज करता है, रीरैंकिंग की भूमिका, और हाइब्रिड कब शुद्ध वेक्टर सर्च को सार्थक रूप से पछाड़ता है, यह समझाती है।
दो प्रकार की सर्च जो अलग-अलग तरीकों से विफल होती हैं
BM25 (लेक्सिकल या कीवर्ड सर्च) दस्तावेज़ों को सटीक-शब्द ओवरलैप के आधार पर स्कोर करती है, दुर्लभ शब्दों को अधिक वेट देती है और लंबाई के लिए दंडित करती है। यह निर्धारक है और एक इनवर्टेड इंडेक्स पर चलती है। वेक्टर (सिमेंटिक) सर्च क्वेरी और दस्तावेज़ों को डेंस एम्बेडिंग में एन्कोड करती है और निकटतम-पड़ोसी समानता के आधार पर रिट्रीव करती है, जिससे अर्थ, समानार्थक शब्द और पैराफ्रेज़ — यहाँ तक कि भाषाओं के पार भी — कैप्चर होते हैं।
इनकी कमज़ोरियाँ एक-दूसरे की दर्पण छवि हैं। BM25 समानार्थक शब्द और अवधारणाएँ चूक जाती है: "database memory issues" की क्वेरी "cache eviction policies" शीर्षक वाले पृष्ठ को नहीं ढूंढ पाएगी यदि शाब्दिक शब्द अलग हों। वेक्टर सर्च सटीक टोकन — संक्षिप्त रूप (acronym), SKU, एरर कोड, ID, मॉडल नंबर — चूक जाती है और सिमेंटिक ड्रिफ्ट से ग्रस्त होती है, जैसे "Nike running shoes" क्वेरी के लिए एम्बेडिंग-में-पास-लेकिन-गलत "Adidas running shoes" परिणाम लौटाना। चूँकि इनके विफलता के तरीके पूरक हैं, इसलिए अकेला कोई भी पर्याप्त नहीं है।
हाइब्रिड सर्च क्या करती है
हाइब्रिड सर्च लेक्सिकल (BM25) और डेंस (वेक्टर) रिट्रीवल को समानांतर में चलाती है, फिर उनकी दो रैंक्ड परिणाम सूचियों को एक में मर्ज कर देती है। मर्ज वाला चरण ही दिलचस्प हिस्सा है, क्योंकि BM25 स्कोर और वेक्टर समानता स्कोर बिल्कुल अलग-अलग पैमानों पर होते हैं — आप उन्हें यूँ ही जोड़ नहीं सकते।
इसीलिए प्रमुख फ्यूज़न विधि, Reciprocal Rank Fusion (RRF), कच्चे स्कोर के बजाय केवल रैंक स्थिति का उपयोग करती है। प्रत्येक दस्तावेज़ का फ्यूज़्ड स्कोर दोनों रिट्रीवर में 1 को (k प्लस उसकी रैंक) से विभाजित करने का योग होता है, जहाँ k एक छोटा स्थिरांक है (आमतौर पर 60; कुछ अध्ययन 20 का उपयोग करते हैं)। चूँकि यह स्कोर वितरण को पूरी तरह नज़रअंदाज़ कर देता है, RRF को नॉर्मलाइज़ेशन की ज़रूरत नहीं होती और यह "आउट ऑफ द बॉक्स" काम करता है — यही कारण है कि यह अधिकांश वेक्टर डेटाबेस में डिफ़ॉल्ट है।
RRF बनाम वेटेड फ्यूज़न
RRF एकमात्र विकल्प नहीं है। वेटेड (alpha) फ्यूज़न दोनों स्कोर सेट को नॉर्मलाइज़ करता है और उन्हें एक ट्यूनेबल वेट के साथ ब्लेंड करता है: alpha 0 का मतलब शुद्ध कीवर्ड, 1 का मतलब शुद्ध वेक्टर, 0.5 बराबर, और डिफ़ॉल्ट अक्सर सिमेंटिक की ओर लगभग 0.75 पर रहता है। कुछ इंजन रिलेटिव-स्कोर और डिस्ट्रीब्यूशन-आधारित फ्यूज़न भी देते हैं।
ट्रेड-ऑफ यह है: RRF मज़बूत और कम-पैरामीटर वाला है, जो तब आदर्श है जब आप प्रति-कॉर्पस ट्यूनिंग नहीं करना चाहते। वेटेड फ्यूज़न आपको एक डायल देता है — आइडेंटिफायर-भारी तकनीकी सामग्री के लिए सटीक-शब्द मिलान को प्राथमिकता देने हेतु (कम alpha), या प्राकृतिक-भाषा प्रश्नों के लिए सिमेंटिक्स को प्राथमिकता देने हेतु (उच्च alpha)। RRF से शुरुआत करें; वेटेड फ्यूज़न तब अपनाएँ जब किसी एक रिट्रीवर को पक्ष में करने का आपके पास स्पष्ट कारण हो।
रीरैंकिंग कहाँ फिट होती है
हाइब्रिड रिट्रीवल पहला चरण है; रीरैंकिंग दूसरा। एक तेज़ रिट्रीवर (BM25, वेक्टर, या हाइब्रिड) एक कैंडिडेट सेट खींचता है, फिर एक क्रॉस-एन्कोडर प्रत्येक कैंडिडेट को फिर से स्कोर करता है — क्वेरी और दस्तावेज़ को एक ही पास में, पूर्ण क्रॉस-अटेंशन के साथ संयुक्त रूप से एन्कोड करके। क्रॉस-एन्कोडर पहले-चरण के रिट्रीवर से कहीं अधिक सटीक होते हैं, लेकिन पूरे कॉर्पस पर चलाने के लिए बहुत महँगे हैं, इसलिए वे केवल टॉप-k कैंडिडेट को ही रिस्कोर करते हैं।
इसलिए कैनोनिकल प्रोडक्शन पाइपलाइन इस तरह है: हाइब्रिड रिट्रीवल (BM25 + वेक्टर, RRF से फ्यूज़्ड) → क्रॉस-एन्कोडर या LLM रीरैंकर → शीर्ष परिणाम मॉडल के कॉन्टेक्स्ट में। प्रत्येक चरण वही काम करता है जिसमें वह सबसे अच्छा है — पहले रिकॉल, अंत में प्रिसिज़न।
क्या यह वाकई मदद करता है? और osFoundry में इसे बनाना
लाभ वास्तविक हैं, लेकिन आपके डेटा पर निर्भर करते हैं। Elastic के BEIR अध्ययन में पाया गया कि RRF हाइब्रिड ने अकेले BM25 की तुलना में औसत NDCG@10 को लगभग 18% बढ़ाया और एक मज़बूत लर्नेड एन्कोडर से छोटे अंतर से आगे रहा, और परीक्षण किए गए हर डेटासेट पर BM25 के बराबर या बेहतर रहा। जैसे-जैसे डेंस मॉडल बेहतर हुए हैं, हाइब्रिड का सीमांत लाभ संकुचित हुआ है — इन-डोमेन डेटा पर अक्सर कुछ ही प्रतिशत — लेकिन आउट-ऑफ-डोमेन कॉर्पोरा, दुर्लभ शब्दों, और प्राकृतिक भाषा को सटीक आइडेंटिफायर के साथ मिलाने वाली क्वेरी पर यह सबसे बड़ा बना रहता है। हाइब्रिड प्रोडक्शन डिफ़ॉल्ट बना हुआ है।
osFoundry की कस्टम RAG पाइपलाइन इसे एक ब्लैक बॉक्स के बजाय कंपोज़ेबल स्टेज के रूप में एक्सपोज़ करती है: एक BM25 स्टेज और एक वेक्टर स्टेज समानांतर में चलते हैं, एक फ्यूज़न स्टेज (डिफ़ॉल्ट रूप से RRF, विकल्प के रूप में वेटेड) उन्हें मर्ज करती है, और एक रीरैंकिंग स्टेज मॉडल तक पहुँचने से पहले परिणाम को परिष्कृत करती है। आप config में प्रति नॉलेज बेस लेक्सिकल-बनाम-सिमेंटिक संतुलन को ट्यून करते हैं, और बिना कोई प्लंबिंग लिखे retrieve-fuse-rerank पैटर्न को अपना लेते हैं।
Frequently asked questions
- कीवर्ड और सिमेंटिक सर्च में क्या अंतर है?
- कीवर्ड (लेक्सिकल) सर्च, जैसे BM25, सटीक शब्दों से मेल खाती है और दुर्लभ शब्दों को वेट देती है — सटीक, लेकिन समानार्थक शब्दों के प्रति अंधी। सिमेंटिक (वेक्टर) सर्च अर्थ को एम्बेडिंग में एन्कोड करती है और समानता के आधार पर मिलान करती है, इसलिए यह पैराफ्रेज़ और संबंधित अवधारणाओं को पकड़ लेती है, लेकिन ID और एरर कोड जैसे सटीक टोकन चूक सकती है। दोनों विपरीत परिस्थितियों में मज़बूत होती हैं।
- हाइब्रिड सर्च क्या है?
- हाइब्रिड सर्च कीवर्ड (BM25) और वेक्टर रिट्रीवल दोनों को समानांतर में चलाती है और एक फ्यूज़न एल्गोरिदम से उनके रैंक्ड परिणामों को एक सूची में मर्ज कर देती है। यह इसलिए मौजूद है क्योंकि दोनों विधियाँ अलग-अलग तरीकों से विफल होती हैं — वेक्टर समानार्थक शब्द और अवधारणाएँ संभालता है, BM25 सटीक शब्दों, आइडेंटिफायर और दुर्लभ जार्गन को पकड़ता है — इसलिए इन्हें मिलाने से रिकॉल और प्रिसिज़न दोनों में सुधार होता है।
- Reciprocal Rank Fusion (RRF) क्या है?
- RRF कच्चे स्कोर के बजाय केवल रैंक स्थिति का उपयोग करके दो रैंक्ड सूचियों को मर्ज करता है। प्रत्येक दस्तावेज़ का फ्यूज़्ड स्कोर रिट्रीवर में 1 को (k प्लस उसकी रैंक) से विभाजित करने का योग होता है, जहाँ k एक छोटा स्थिरांक है (आमतौर पर 60)। चूँकि यह BM25 और वेक्टर सर्च के असंगत स्कोर पैमानों को नज़रअंदाज़ कर देता है, इसे कोई नॉर्मलाइज़ेशन नहीं चाहिए और यह आउट ऑफ द बॉक्स अच्छी तरह काम करता है।
- हाइब्रिड सर्च शुद्ध वेक्टर सर्च को कब पछाड़ती है?
- जब क्वेरी प्राकृतिक भाषा को सटीक आइडेंटिफायर के साथ मिलाती हैं, दुर्लभ या डोमेन-विशिष्ट जार्गन का उपयोग करती हैं, आउट-ऑफ-डोमेन सामग्री के विरुद्ध चलती हैं, या बहुभाषी होती हैं। अच्छी तरह एम्बेड किए गए, इन-डोमेन डेटा पर पूरी तरह वैचारिक प्रश्नों के लिए शुद्ध वेक्टर सर्च पर्याप्त हो सकती है। कोड और उत्पाद नामों से भरे तकनीकी नॉलेज बेस के लिए, हाइब्रिड स्पष्ट रूप से बेहतर है।
- वेक्टर सर्च सटीक शब्दों और ID को क्यों चूक जाती है?
- एम्बेडिंग टेक्स्ट को एक निश्चित आकार के वेक्टर में संपीड़ित करती है जो अर्थ कैप्चर करता है, सटीक स्पेलिंग नहीं — इसलिए एरर कोड, SKU और संक्षिप्त रूप जैसे दुर्लभ टोकन घिस-पिटकर ग़ायब हो जाते हैं — इस गुण को कभी-कभी स्ट्रक्चरल ब्लाइंडनेस कहा जाता है। मॉडल जानता है कि कोई पैसेज किस बारे में है, पर यह नहीं कि उसमें वही शाब्दिक स्ट्रिंग मौजूद है जिसे आपने खोजा — और यही ठीक वह चीज़ है जिसमें BM25 अच्छा है।
- RRF या वेटेड फ्यूज़न — मुझे कौन सा उपयोग करना चाहिए?
- RRF से शुरुआत करें: यह मज़बूत है, कम-पैरामीटर वाला है, और प्रति-कॉर्पस ट्यूनिंग की ज़रूरत नहीं होती। वेटेड (alpha) फ्यूज़न पर तब जाएँ जब किसी एक रिट्रीवर को पक्ष में करने का आपके पास स्पष्ट कारण हो — आइडेंटिफायर-भारी सामग्री पर सटीक-शब्द मिलान को प्राथमिकता देने के लिए कम alpha, प्राकृतिक-भाषा प्रश्नों पर सिमेंटिक्स को प्राथमिकता देने के लिए उच्च alpha।
- क्या हाइब्रिड सर्च लेटेंसी या लागत बढ़ाती है, और क्या यह इसके लायक है?
- यह दो रिट्रीवल और एक फ्यूज़न स्टेप चलाती है, इसलिए कुछ ओवरहेड होता है, और रीरैंकिंग और भी जोड़ती है। अधिकांश RAG सिस्टम के लिए रिकॉल और प्रिसिज़न का सुधार इसे उचित ठहराता है, खासकर तकनीकी या मिश्रित-सामग्री वाले कॉर्पोरा पर। यदि आप अच्छी तरह एम्बेड किए गए, पूरी तरह वैचारिक डेटा पर हैं और लेटेंसी अहम है, तो शुद्ध वेक्टर पर्याप्त हो सकता है — अपनी ही क्वेरी पर मापें।
Sources