मी माझ्या RAG Pipeline मध्ये एक Reranker जोडला — आणि त्यामुळे सर्व काही बिघडले
मी माझ्या RAG pipeline मध्ये एक reranker जोडला. यामुळे माझे सर्व टेस्ट्स (tests) लगेच फेल झाले.
दुसऱ्या व्हर्जनमध्ये (version 2), मी FAISS आणि BM25 वापरून hybrid retrieval वापरले होते. त्यामध्ये माझ्या १९ च्या १९ टेस्ट प्रश्नांची उत्तरे अचूक मिळाली होती. त्यानंतर, अचूकता (precision) वाढवण्यासाठी मी एक cross-encoder reranker जोडला.
यामागचा सिद्धांत सोपा आहे:
- Stage 1: उमेदवारांचा (candidates) एक मोठा संच मिळवण्यासाठी जलद retrieval वापरा.
- Stage 2: त्यातील सर्वोत्तम पर्याय निवडण्यासाठी एक स्मार्ट reranker वापरा.
हे लागू करण्यासाठी २० मिनिटे लागली. पण यामुळे माझे १९ पैकी २ टेस्ट्स लगेच फेल झाल्या.
हे अपयश डेटा फॉरमॅटमुळे (data format) आले. माझ्या डेटामध्ये अशा प्रकारचे घन (dense) आणि टेबल स्वरूपातील चंक्स (tabular chunks) आहेत: "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"
cross-encoder मॉडेलला नैसर्गिक भाषेतील परिच्छेदांवर (natural language paragraphs) प्रशिक्षित करण्यात आले होते. जेव्हा त्याने टेबलची ओळ पाहिली, तेव्हा त्याने त्याला खूप कमी स्कोअर दिला. मॉडेलला वाटले की तो चंक (chunk) अप्रासंगिक (irrelevant) आहे.
Hybrid retrieval ने उत्तर शोधले होते, पण reranker ने ते काढून टाकले.
हे सुधारण्यासाठी मी ७ वेगवेगळ्या पद्धती वापरून पाहिल्या:
- मोठा candidate pool वापरणे.
- reranker आणि retriever चे स्कोअर एकत्र करणे (blending scores).
- rank fusion वापरणे.
यापैकी एकही पद्धत यशस्वी ठरली नाही. reranker चा स्कोअर इतका नकारात्मक होता की त्याने इतर सर्व गोष्टींना मागे टाकले. मॉडेल फक्त रँकिंग कमी करत नव्हते, तर ते सक्रियपणे टेबल फॉरमॅट नाकारत होते.
मी गणित सुधारण्याचा प्रयत्न करणे थांबवले आणि स्ट्रक्चर (structure) बदलले.
सर्व काही ठरवण्याची जबाबदारी reranker वर न सोडता, मी माझे सर्वोत्तम रिझल्ट्स सुरक्षित ठेवले. मी "guaranteed slot" स्ट्रॅटेजी वापरली:
- जर तुम्हाला टॉप ३ रिझल्ट्स हवे असतील, तर पहिल्या स्टेजमधील टॉप २ रिझल्ट्स तसेच ठेवा.
- फक्त ३ रा रिझल्ट निवडण्यासाठी reranker चा वापर करा.
यामुळे hybrid search चे रिझल्ट्स अंतिम यादीत राहतील याची खात्री मिळते. reranker फक्त उर्वरित स्लॉट्समध्ये सुधारणा करतो.
परिणाम: १९/१९ टेस्ट्स पास झाल्या.
शिकलेले धडे:
- Rerankers म्हणजे त्वरित मिळणारे अपग्रेड नाहीत. ते स्ट्रक्चर्ड किंवा टेबल डेटाच्या कामगिरीवर परिणाम करू शकतात.
- तुमचा evaluation set हा तुमचा सुरक्षा कवच (safety net) आहे. माझ्या १९ टेस्ट्स नसत्या, तर मी एक बिघडलेली सिस्टीम लाँच केली असती.
- जे काम करत आहे त्याचे संरक्षण करा. जर तुमचे पहिले-स्टेज retrieval चांगले असेल, तर reranker ला ते ओव्हरराइड (override) करू देऊ नका.
Reranker वापरण्यापूर्वी एक मजबूत retriever तयार करा.
Optional learning community: https://t.me/GyaanSetuAi
