मेरा RAG ऐप बार-बार hallucinations क्यों दे रहा था और मैंने इसे कैसे ठीक किया
कुछ महीने पहले, मैंने अपने RAG सपोर्ट बॉट का डेमो दिया था। इसने एक सहकर्मी को बताया कि हमारी रिफंड पॉलिसी 30 दिनों की है। हमारी वास्तविक पॉलिसी 14 दिनों की है। बॉट ने हिचकिचाहट नहीं दिखाई। उसने यह नहीं कहा कि वह अनिश्चित है। उसने पूरे आत्मविश्वास के साथ एक उत्तर बना दिया।
RAG को hallucinations कम करने चाहिए। मेरे सेटअप ने केवल उन्हें इधर-उधर कर दिया। इस सिस्टम को डीबग करते समय मैंने पांच सबक सीखे।
चंक्स (chunks) के लिए फिक्स्ड कैरेक्टर काउंट का उपयोग करना बंद करें मैं थोड़े ओवरलैप के साथ 1000 कैरेक्टर वाले चंक्स का उपयोग कर रहा था। इससे समस्याएँ हुईं। एक चंक अक्सर शिपिंग नियमों को रिटर्न नियमों के साथ मिला देता था। मॉडल इन अलग-अलग सेक्शन को मिलाकर एक गलत उत्तर दे देता था। Fix: मैं semantic chunking पर स्विच हो गया। मैंने डेटा को हेडिंग्स और पैराग्राफ के आधार पर विभाजित किया। इससे संबंधित जानकारी एक साथ रहती है।
समानता (Similarity) का मतलब प्रासंगिकता (relevance) नहीं है मेरा रिट्रीवर cosine similarity के आधार पर टॉप 3 चंक्स निकालता था। एक चंक प्रश्न के समान दिख सकता है, लेकिन उसमें उत्तर नहीं हो सकता है। मॉडल यह मान लेता है कि कॉन्टेक्स्ट में दी गई हर चीज़ सच है। Fix: मैंने cross-encoder का उपयोग करके एक reranking स्टेप जोड़ा। मैंने retrieval scores को लॉग करना भी शुरू किया। इससे पता चलता है कि कब सिस्टम के पास वास्तविक उत्तर की कमी है।
मॉडल को बताएं कि असफल होना ठीक है मेरा मूल प्रॉम्प्ट सरल था: प्रश्न का उत्तर देने के लिए कॉन्टेक्स्ट का उपयोग करें। इसने मॉडल को यह निर्देश नहीं दिया था कि कॉन्टेक्स्ट न होने पर क्या करना है। मॉडल ने खाली जगहों को अनुमानों से भर दिया। Fix: मैंने एक विशिष्ट निर्देश जोड़ा। यदि उत्तर कॉन्टेक्स्ट में नहीं है, तो कहें कि आप नहीं जानते। इससे hallucinations तुरंत कम हो गए।
रिट्रीवल थ्रेशोल्ड (retrieval threshold) लागू करें जब रिट्रीवल विफल हो जाता था, तब भी मॉडल सामान्य ज्ञान का उपयोग करता था। मुझे उम्मीद थी कि प्रॉम्प्ट काम करेगा, लेकिन उम्मीद कोई रणनीति नहीं है। Fix: मैंने एक हार्ड स्कोर थ्रेशोल्ड सेट किया। यदि टॉप रिट्रीवल स्कोर बहुत कम है, तो सिस्टम रुक जाता है। यह मॉडल को अनुमान लगाने देने के बजाय एक fallback मैसेज देता है।
केवल सफलता के लिए नहीं, बल्कि विफलताओं के लिए भी परीक्षण करें मैंने केवल उन आसान सवालों का परीक्षण किया जिनके बारे में मुझे पता था कि वे दस्तावेज़ों में शामिल हैं। मैंने अस्पष्ट प्रश्नों और गायब जानकारी को नज़रअंदाज़ कर दिया। Hallucinations उन्हीं कमियों में पनपते हैं। Fix: मैंने 'ट्रैप' (trap) सवालों का एक इवैल्यूएशन सेट बनाया। ये ऐसे मामले हैं जहाँ सही उत्तर सिस्टम में नहीं होता है। जब भी मैं कोई बदलाव करता हूँ, मैं ये टेस्ट चलाता हूँ।
RAG hallucinations को पूरी तरह से नहीं रोकता है। यह उन्हें नियंत्रित करने योग्य बनाता है। मेरा बॉट अभी भी सब कुछ नहीं जानता। लेकिन अब, जब वह अनिश्चित होता है, तो वह ऐसा कह देता है। इससे टूल उपयोगी बन जाता है।
Source: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10