मैंने अपने RAG पाइपलाइन में एक reranker जोड़ा — और इसने सब कुछ बिगाड़ दिया

मैंने अपने RAG पाइपलाइन में एक reranker जोड़ा। इसने तुरंत मेरे टेस्ट्स को फेल कर दिया।

वर्ज़न 2 में, मैंने FAISS और BM25 के साथ hybrid retrieval का उपयोग किया था। इसने मेरे सभी 19 टेस्ट सवालों को पास कर लिया था। फिर, मैंने precision सुधारने के लिए एक cross-encoder reranker जोड़ा।

सिद्धांत सरल है:

  • स्टेज 1: उम्मीदवारों (candidates) का एक विस्तृत सेट प्राप्त करने के लिए तेज़ retrieval का उपयोग करें।
  • स्टेज 2: सबसे अच्छे परिणामों को चुनने के लिए एक स्मार्ट reranker का उपयोग करें।

इसे लागू करने में 20 मिनट लगे। इसने तुरंत मेरे 19 में से 2 टेस्ट फेल कर दिए।

यह विफलता डेटा फॉर्मेट के कारण हुई। मेरे डेटा में इस तरह के घने, टैबुलर चंक्स (tabular chunks) शामिल हैं: "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"

cross-encoder मॉडल को नेचुरल लैंग्वेज पैराग्राफ पर ट्रेन किया गया था। जब इसने एक टेबल रो (table row) देखी, तो इसने उसे बहुत कम स्कोर दिया। इसे लगा कि वह चंक अप्रासंगिक (irrelevant) है।

Hybrid retrieval ने उत्तर ढूँढ लिया था, लेकिन reranker ने उसे हटा दिया।

मैंने इसे ठीक करने के लिए 7 अलग-अलग तरीके आजमाए:

  • एक बड़ा candidate pool उपयोग करना।
  • reranker और retriever के स्कोर को मिलाना (blending)।
  • rank fusion का उपयोग करना।

इनमें से कोई भी काम नहीं आया। reranker का स्कोर इतना नेगेटिव था कि उसने बाकी सब कुछ दबा दिया। मॉडल केवल कम रैंक नहीं दे रहा था, बल्कि वह सक्रिय रूप से टेबल फॉर्मेट को रिजेक्ट कर रहा था।

मैंने गणित (math) को ठीक करने की कोशिश करना छोड़ दिया और स्ट्रक्चर बदल दिया।

reranker को सब कुछ तय करने देने के बजाय, मैंने अपने सबसे अच्छे परिणामों को सुरक्षित कर लिया। मैंने एक "guaranteed slot" रणनीति का उपयोग किया:

  • यदि आप टॉप 3 परिणाम चाहते हैं, तो पहले स्टेज से टॉप 2 को बनाए रखें।
  • केवल तीसरे परिणाम को चुनने के लिए reranker का उपयोग करें।

यह सुनिश्चित करता है कि hybrid search के परिणाम अंतिम सूची में बने रहें। reranker केवल शेष स्लॉट्स में सुधार करता है।

परिणाम: 19/19 टेस्ट पास हो गए।

सीखे गए सबक:

  • Rerankers कोई इंस्टेंट अपग्रेड नहीं हैं। वे स्ट्रक्चर्ड या टैबुलर डेटा पर परफॉरमेंस बिगाड़ सकते हैं।
  • आपका इवैल्यूएशन सेट (evaluation set) आपका सेफ्टी नेट है। मेरे 19 टेस्ट के बिना, मैं एक खराब सिस्टम शिप कर देता।
  • जो काम कर रहा है उसे सुरक्षित रखें। यदि आपका फर्स्ट-स्टेज रिट्रीवल अच्छा है, तो reranker को उसे ओवरराइड न करने दें।

Reranker का उपयोग करने से पहले एक मजबूत retriever बनाएं।

Source: https://dev.to/santanu_mohanta_29/i-added-a-reranker-to-my-rag-pipeline-it-broke-everything-then-i-fixed-it-1c9i

Optional learning community: https://t.me/GyaanSetuAi