माझे RAG ॲप चुकीची माहिती (hallucinate) का देऊ लागले आणि मी ते कसे सुधारले
मी एकदा माझ्या एका सहकाऱ्याला माझा RAG सपोर्ट बॉट डेमो म्हणून दाखवला.
त्या बॉटने तिला सांगितले की आमची रिफंड पॉलिसी ३० दिवसांची आहे.
आमची खरी पॉलिसी १४ दिवसांची आहे.
बॉटने हे सांगितले नाही की त्याला खात्री नाही. त्याने पूर्ण आत्मविश्वासाने एक उत्तर तयार केले.
RAG मुळे हॅलुसिनेशन्स (hallucinations) थांबायला हवेत. माझ्या सेटअपमुळे ते फक्त एका जागीतून दुसऱ्या जागी सरकले होते.
मी पाच पायऱ्यांचा अवलंब करून हे सुधारले.
- तुमची चंकिंग (chunking) स्ट्रॅटेजी सुधारा
मी आधी डॉक्युमेंट्स कॅरेक्टर काउंटनुसार विभाजित करायचो. ही एक चूक होती.
एका चंकमध्ये अनेकदा शिपिंग आणि रिटर्न्स यांसारखे वेगवेगळे विषय एकत्र येत असत. मॉडेलने या गोष्टी एकत्र करून चुकीची उत्तरे दिली.
उपाय: मी 'सेमँटिक चंकिंग' (semantic chunking) कडे वळलो. आता मी मजकूर हेडिंग्स आणि परिच्छेदानुसार विभाजित करतो.
- केवळ सिमिलॅरिटी स्कोअरवर (similarity scores) विश्वास ठेवणे थांबवा
माझा रिट्रिव्हर (retriever) कोसाइन सिमिलॅरिटीच्या (cosine similarity) आधारावर टॉप तीन चंक्स शोधून आणत असे.
'समान' (similar) असणे म्हणजे 'सुसंगत' (relevant) असणे नव्हे. एखादा चंक प्रश्नाशी साधर्म्य दाखवू शकतो, पण त्यात उत्तर नसू शकते.
उपाय: मी क्रॉस-एनकोडरसह (cross-encoder) एक रीरँकिंग (reranking) स्टेप जोडली. यामुळे सिस्टमकडे जेव्हा वास्तविक डेटा नसेल, तेव्हा ते ओळखण्यास मला मदत झाली.
- मॉडेलला चुकण्याची परवानगी द्या
माझ्या जुन्या प्रॉम्प्टमध्ये फक्त इतकेच होते: प्रश्नाचे उत्तर देण्यासाठी संदर्भाचा (context) वापर करा.
जर संदर्भात उत्तर नसेल, तर मॉडेलने स्वतःच्या मनाने अंदाज लावून ती पोकळी भरून काढली.
उपाय: मी एक थेट सूचना जोडली. जर उत्तर संदर्भात नसेल, तर "मला माहित नाही" असे सांगा. केवळ यामुळेच बहुतेक हॅलुसिनेशन्स थांबले.
- रिट्रिव्हल थ्रेशोल्ड (retrieval threshold) सेट करा
कधीकधी रिट्रिव्हल अयशस्वी झाल्यावर मॉडेल सामान्य ज्ञानाचा वापर करायचे. मला वाटले होते की प्रॉम्प्ट काम करेल, पण केवळ आशेवर अवलंबून राहणे ही कोणतीही रणनीती नाही.
उपाय: मी एक स्कोअर कटऑफ (score cutoff) जोडला. जर रिट्रिव्हल स्कोअर खूप कमी असेल, तर सिस्टम एक 'फॉलबॅक रिस्पॉन्स' (fallback response) देते. संदर्भाशिवाय उत्तर नाही.
- यशासाठी नाही, तर अपयशासाठी चाचणी घ्या
मी फक्त सोप्या प्रश्नांची चाचणी घेत असे. मी संदिग्ध प्रश्न आणि अपूर्ण माहितीकडे दुर्लक्ष केले होते.
उपाय: मी 'ट्रॅप क्वेश्चन्स'चा (trap questions) एक इव्हॅल्युएशन सेट तयार केला. हे असे प्रकरणांमधील प्रश्न आहेत जिथे उत्तर उपलब्ध नाही. या चाचण्या नियमितपणे केल्यामुळे तुमची सिस्टम नेमकी कुठे चुकते, हे तुम्हाला स्पष्टपणे समजते.
RAG हॅलुसिनेशन्स पूर्णपणे काढून टाकत नाही. ते फक्त नियंत्रणाखाली आणते.
माझ्या बॉटला अजूनही प्रत्येक तपशील माहित नाही. पण आता, जेव्हा त्याला खात्री नसते, तेव्हा तो ते मान्य करतो. यामुळे तो वापरण्यायोग्य बनला आहे.
Source: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10
Optional learning community: https://t.me/GyaanSetuAi