RAG हैलुसिनेशन गार्डरेल: पाँच परतों वाला डिज़ाइन
पाँच गार्डरेल जो RAG सहायक को जवाब गढ़ने से रोकते हैं: रिट्रीवल से पहले इनकार, समानता की न्यूनतम सीमा, प्रॉम्प्ट, वाक्य-गेट और आवाज़ के नियम।
रिट्रीवल-ऑगमेंटेड जनरेशन (RAG) किसी मॉडल को जवाब गढ़ने से नहीं रोकता, और कमज़ोर संदर्भ उसे ज़्यादा सावधान करने के बजाय ज़्यादा आश्वस्त बना सकता है। RAG हैलुसिनेशन गार्डरेल की असली जगह ज़्यादातर मॉडल के इर्द-गिर्द चलने वाला कोड है। उन्हें एक तय क्रम में पाँच परतों के रूप में बनाएँ, ठीक जैसे इस साइट का सहायक काम करता है:
जिन सवालों का जवाब सहायक को कभी नहीं देना चाहिए, उन्हें रिट्रीवल से पहले ठुकराएँ।
मॉडल को सिर्फ़ वही साक्ष्य दें जिससे उसके जवाब को परखा जा सके: ऐसे पैसेज जो समानता की न्यूनतम सीमा पार करें, या पूरे काम के बारे में सवालों के लिए साइट के अपने रिकॉर्ड। दोनों में से कुछ न हो, तो मॉडल को कॉल किए बिना इनकार करें।
सिस्टम प्रॉम्प्ट को इकलौती ऐसी परत मानें जिसे मॉडल अनदेखा कर सकता है।
जवाब को वाक्य-दर-वाक्य, नियतात्मक जाँचों के बाद ही रिलीज़ करें।
सहायक को कभी उस व्यक्ति की आवाज़ में न बोलने दें जो उसके पीछे है।
मॉडल कॉल से पहले होने वाली एक ख़र्च-जाँच इस डिज़ाइन को पूरा करती है।
यह साइट, सहायक समेत, मैंने बनाई है और मैं ही इसे सँभालता हूँ। इसके लिए सटीकता का कोई आँकड़ा मैं प्रकाशित नहीं करता, और क्यों नहीं, यह मापन वाले अनुभाग में है।
RAG क्या है, और वह अब भी हैलुसिनेट क्यों करता है
RAG सिस्टम में एक रिट्रीवर कॉर्पस से कुछ पैसेज लौटाता है और भाषा मॉडल उन्हीं से अपना जवाब लिखता है। हैलुसिनेशन का मतलब है कोई ग़लत या बिना आधार वाला कथन, जो इस तरह पेश किया जाए मानो वह सच हो।
रिट्रीवल मॉडल के संभावित जवाबों का दायरा छोटा करता है। उसे बाँधता नहीं।
रिट्रीवल मॉडल को ज़्यादा आश्वस्त बना सकता है, ज़्यादा सही नहीं
Google के शोधकर्ताओं ने दो स्थितियाँ अलग कीं: रिट्रीव किया गया संदर्भ जो सवाल का जवाब देने के लिए पर्याप्त है, और जो नहीं है। ICLR 2025 में आए अपने पेपर का सार देते हुए लेखक साफ़ शब्दों में कहते हैं: “RAG आम तौर पर कुल प्रदर्शन तो सुधारता है, लेकिन विरोधाभासी रूप से, उचित स्थिति में उत्तर देने से परहेज़ करने की मॉडल की क्षमता घटा देता है।” एक उदाहरण में, Gemma बिना किसी संदर्भ के 10.2% सवालों पर ग़लत जवाब देता था, और अपर्याप्त संदर्भ के साथ यह हिस्सा 66.1% तक पहुँच गया।
यह जानना कि कब जवाब नहीं देना है, फ़ायदे का सौदा है: लेखकों की selective generation विधि ने, उन मौक़ों में जब मॉडल ने जवाब दिया, सही जवाबों का हिस्सा Gemini, GPT और Gemma के लिए 2–10% बढ़ा दिया।
top-k रिट्रीवर k पैसेज लौटाता है, चाहे उनमें से कोई प्रासंगिक हो या न हो। अगर यह फ़ैसला कि वे पर्याप्त हैं या नहीं, अकेले मॉडल पर छोड़ दिया जाए, तो परहेज़ करने की ज़िम्मेदारी उसी कंपोनेंट पर आ जाती है जिसके बारे में यह शोध दिखाता है कि वह अक्सर ग़लती करता है।
मॉडल को अंदाज़ा लगाने का इनाम मिलता है
Kalai और उनके सहयोगियों का तर्क है कि “भाषा मॉडल इसलिए हैलुसिनेट करते हैं क्योंकि ट्रेनिंग और मूल्यांकन की प्रक्रियाएँ अनिश्चितता स्वीकार करने के बजाय अंदाज़ा लगाने को इनाम देती हैं”। जब मूल्यांकन “मुझे नहीं पता” के लिए कोई अंक नहीं देता, तो अंदाज़ा लगाने से स्कोर बढ़ता है। अनिश्चितता स्वीकार करने का निर्देश इसी प्रोत्साहन के ख़िलाफ़ काम करता है। वह मदद करता है। वह नियंत्रण नहीं है।
व्यावसायिक लीगल टूल्स ने भी हैलुसिनेट किया
क़ानूनी शोध के कुछ प्रदाताओं ने RAG को हैलुसिनेशन “ख़त्म करने” वाले उपाय के रूप में प्रचारित किया था। AI क़ानूनी शोध टूल्स के पहले पूर्व-पंजीकृत (preregistered) मूल्यांकन में पाया गया कि LexisNexis और Thomson Reuters के प्रोडक्ट्स में से हर एक ने 17% और 33% के बीच मामलों में हैलुसिनेट किया। लीगल प्रोडक्ट्स के लिए इसका क्या मतलब है, यह लीगल AI हैलुसिनेशन: क्या बनाना चाहिए में है।
पाँच परतें, एक नज़र में
परत | किसे रोकती है | कहाँ चलती है | सक्रिय होने पर |
|---|---|---|---|
1. इनकार के पैटर्न | ऐसे जवाब जो सहायक को कभी नहीं देने चाहिए | कोड | रिट्रीवल से पहले तय इनकार |
2. समानता की न्यूनतम सीमा | कमज़ोर साक्ष्य पर खड़े जवाब | कोड | तय इनकार, कोई मॉडल कॉल नहीं |
3. सिस्टम प्रॉम्प्ट | नियम तोड़ना, जब मॉडल मान ले | मॉडल | अपने आप कुछ भी इसे लागू नहीं कराता |
4. वाक्य-गेट | बिना स्रोत के दावे, गढ़े हुए मान, उत्तम पुरुष | कोड | स्ट्रीम रुकती है, बाक़ी रोक लिया जाता है |
5. आवाज़ के नियम | किसी और के नाम पर किए गए वादे | कोड और प्रॉम्प्ट | परत 1, 3 और 4 के ज़रिये |
क्रम उतना ही मायने रखता है जितनी परतें। दोनों इनकार वाली परतें भाषा मॉडल को कॉल करने से पहले चलती हैं, और प्रॉम्प्ट — इकलौती परत जो मॉडल के सहयोग पर टिकी है — के बाद एक नियतात्मक जाँच आती है। सीमा और प्रॉम्प्ट के बीच की ख़र्च-जाँच जवाब गढ़े जाने को नहीं रोकती, पर वह विफलता के इसी परिवार की है।
परत 1: रिट्रीवल से पहले इनकार करें
पहली विफलता जवाब का न होना नहीं है। वह ऐसा जवाब है जिसका होना ही नहीं चाहिए।
ऐसे सवाल जिनका जवाब आपके कॉर्पस में है, पर आपके सहायक को नहीं देना चाहिए
इस साइट पर, फ़ीस से जुड़ा सवाल सेवाओं का पेज रिट्रीव करेगा। वह टेक्स्ट प्रासंगिक है, और उसी से जवाब देना ठीक वही ग़लती है: उस पेज से मॉडल जो भी आँकड़ा, तारीख़ या वादा गढ़ेगा, वह ऐसा कथन होगा जो किसी ने नहीं किया। प्रासंगिक होना अनुमति नहीं है।
इसलिए कुछ सवाल कुछ भी एम्बेड या रिट्रीव होने से पहले ही ठुकरा दिए जाते हैं:
काम की शर्तें: फ़ीस, उपलब्धता और काम पर रखा जाना।
निजी ब्योरे जिन्हें साइट जान-बूझकर प्रकाशित नहीं करती, जैसे फ़ोन नंबर, घर का पता, वैवाहिक या सैन्य सेवा की स्थिति, या जन्मतिथि।
अटकलें: भविष्यवाणियाँ, और नाम लेकर किसी व्यक्ति से तुलना।
मेटा अनुरोध जो निर्देशों को निकालने या उन्हें पलटने की कोशिश करते हैं।
काम करवाने के अनुरोध: कोड या कोई टेक्स्ट लिखना, किसी चीज़ का अनुवाद करना या उसे हल करना, प्रकाशित काम के बारे में सवाल पूछने के बजाय।
इनकार का टेक्स्ट तय है, मॉडल का आउटपुट नहीं: मॉडल का लिखा इनकार वह इनकार है जिससे मॉडल ख़ुद को बातों में बहला सकता है। एम्बेडर (वह मॉडल जो टेक्स्ट को वेक्टर में बदलता है) और भाषा मॉडल, दोनों के क्लाइंट ज़रूरत पड़ने पर ही बनते हैं, इसलिए यहाँ हुए इनकार में कोई बाहरी कॉल नहीं होती।
अपने सिस्टम के लिए उन सवालों की सूची बनाएँ जिनका सही जवाब है “इस सहायक से नहीं”, कॉर्पस में चाहे जो हो।
पैटर्न, क्लासिफ़ायर नहीं
इनकार का सेट अंग्रेज़ी और फ़ारसी के लिए regular expressions की, और साइट की बाक़ी आठ भाषाओं के लिए वाक्यांश-सूचियों की एक सूची है, और ये सब सवाल के मिलान-योग्य रूप पर चलती हैं: केस फ़ोल्ड किया हुआ, अरबी अक्षर-रूप फ़ारसी रूपों में बदले हुए, फ़ारसी और अरबी अंक लैटिन में बदले हुए, अरबी स्वर-चिह्न हटाए हुए, और फ़ारसी शब्दों के भीतर का zero-width non-joiner स्पेस में बदला हुआ। सवाल को मेरे नाम को सर्वनाम की तरह पढ़कर भी जाँचा जाता है, इसलिए “क्या मोहम्मद पनाही उपलब्ध हैं?” उसी तरह ठुकराया जाता है जैसे “क्या वे उपलब्ध हैं?”, और फ़ॉलो-अप सवाल उससे पहले वाले सवाल के साथ मिलाकर जाँचा जाता है।
यह क्लासिफ़ायर नहीं है। जो क्लासिफ़ायर ज़्यादातर बार सही होता है, वह भी ऐसा वादा है जो यह साइट नहीं कर सकती, क्योंकि उसकी चूकें किसी के नाम पर किए गए वादे बन जाती हैं।
सीमा साफ़ है: पैटर्न उन्हीं सवालों को चूक जाते हैं जो दूसरे शब्दों में पूछे गए हों। फ़ारसी वर्तनी इनमें से एक कमी नहीं है। चूँकि फ़ोल्ड zero-width non-joiner को स्पेस बना देता है, मानक वर्तनी जिस शब्द को जोड़कर लिखती है वह पैटर्न तक दो हिस्सों में पहुँचता है, और हर फ़ारसी पैटर्न स्पेस वाला यह रूप और बिना स्पेस वाला रूप, दोनों स्वीकार करता है, इसलिए چقدر میگیرد और چقدر میگیرد दोनों ठुकराए जाते हैं। सूची में मौजूद न होने वाले शब्दों में पूछा गया सवाल फिर भी निकल जाता है, और बाद की परतें उसी के लिए हैं: प्रॉम्प्ट फ़ीस और उपलब्धता पर रोक लगाता है, और गेट ऐसा वाक्य रोक देता है जिसमें उसकी पहचान का कोई उत्तम पुरुष शब्द हो, या ऐसा आँकड़ा हो जो स्रोतों में न हो। इससे यह कमी छोटी होती है। ख़त्म नहीं होती। अंग्रेज़ी और फ़ारसी के अलावा बाक़ी भाषाओं की सूचियाँ छोटी हैं, और उनमें दूसरे शब्दों में पूछे गए सवाल ज़्यादा बार निकल जाते हैं।
परत 2: समानता की न्यूनतम सीमा, जो मॉडल कॉल ही छोड़ देती है
रिट्रीवल के बाद सहायक सवाल और उन पैसेज के बीच, जो वह मॉडल को देने वाला है, सबसे अच्छी समानता ले लेता है। एक न्यूनतम सीमा से नीचे, जो सवाल मेरे बारे में नहीं है उसे तय टेक्स्ट के साथ ठुकरा दिया जाता है और भाषा मॉडल कभी कॉल नहीं होता। यह इनकार मुफ़्त नहीं है, क्योंकि प्रोडक्शन में एक होस्टेड API सवाल को पहले ही एम्बेड कर चुका होता है, पर यह जनरेशन कॉल हटा देता है, इसलिए कमज़ोर साक्ष्य कभी किसी धाराप्रवाह जवाब में नहीं बदलता। मेरे बारे में सवाल एक अलग रास्ता लेते हैं, जिसका ब्योरा नीचे है, क्योंकि समानता का स्कोर किसी के काम के बारे में व्यापक सवाल और विषय से बाहर के सवाल में फ़र्क़ नहीं कर सकता।
reciprocal rank fusion के स्कोर पर न्यूनतम सीमा क्यों नहीं रखी जा सकती
रिट्रीवर हाइब्रिड है: डेंस वेक्टर सर्च और पूरे शब्दों वाली कीवर्ड सर्च, जिन्हें reciprocal rank fusion (RRF) मिलाता है। यह फ़ारसी और अंग्रेज़ी को साथ-साथ कैसे सँभालता है, यह फ़ारसी RAG के लिए हाइब्रिड सर्च में है।
RRF रैंकिंग मिलाने का अच्छा तरीक़ा है और न्यूनतम सीमा रखने के लिए ख़राब संख्या। Cormack, Clarke और Büttcher के सूत्र में किसी दस्तावेज़ का स्कोर सभी रैंकिंग पर 1/(k + r(d)) का योग है, जहाँ r(d) हर सूची में उसकी रैंक है और k = 60 “एक पायलट जाँच के दौरान तय किया गया था”। स्कोर सिर्फ़ स्थानों से बनता है, इसलिए पूरी तरह शोर से भरा कॉर्पस भी पहली रैंक का ऐसा दस्तावेज़ देता है जिसके पास उपलब्ध सबसे अच्छा फ़्यूज़्ड स्कोर होता है। इस संख्या पर रखी गई सीमा रैंक मापती है, प्रासंगिकता नहीं।
न्यूनतम सीमा उसके बजाय किससे तुलना करती है
हर वह रिट्रीवर जो कोई परिबद्ध (bounded) समानता बना सकता है, उसे रिपोर्ट भी करता है:
वेक्टर सर्च cosine similarity रिपोर्ट करती है, जिसे 0 से 1 के दायरे में बाँध दिया जाता है। न्यूनतम सीमा पूछे गए सवाल से समानता लेती है, और फ़ॉलो-अप सवाल हो तो पिछले सवाल से जोड़े गए सवाल से भी। अगर फ़ॉलो-अप सवाल किसी सूची में स्थान के रूप में पूछा गया हो, जैसे “दूसरा”, तो वह आइटम भी साथ जोड़ा जाता है जिसकी ओर वह इशारा करता है: स्थान सवाल से पढ़ा जाता है, और सूची पिछले जवाब से, साइट के अपने शीर्षकों और नामों से या जवाब में उद्धरण चिह्नों के भीतर लिखी चीज़ों से, और मॉडल को बताया जाता है कि कौन-सा आइटम है। आइटम तभी जोड़ा जाता है जब स्थान और सूची दोनों बिना किसी संदेह के पढ़े जा सकें; वरना उसकी जगह पिछले जवाब की शुरुआत जोड़ी जाती है। जाँच सवाल के शब्दों की होती है, जवाब की नहीं: कोई असंबंधित फ़ॉलो-अप सवाल भी, जिसमें संयोग से “दूसरा” आ जाए, पिछले जवाब की शुरुआत के साथ जुड़ जाता है और न्यूनतम सीमा पार कर सकता है; उसके पीछे प्रॉम्प्ट और गेट फिर भी खड़े रहते हैं। जब सवाल मेरे बारे में हो, तो रिट्रीवल मेरा नाम जोड़कर भी खोजता है। इससे पैसेज का क्रम तय करने में मदद मिलती है, पर यह न्यूनतम सीमा में कभी नहीं गिना जाता: नाम मेरे बारे में हर सवाल को CV के क़रीब दिखा देता है, उन सवालों को भी जिनका जवाब साइट नहीं दे सकती।
कीवर्ड सर्च कवरेज रिपोर्ट करती है: सवाल के तीन या उससे ज़्यादा कैरेक्टर वाले (चीनी में दो) सार्थक शब्दों में से वह हिस्सा जो पैसेज में पूरे शब्दों के रूप में मिलता है। साइट की हर भाषा के आम शब्द पहले हटा दिए जाते हैं, और कवरेज न्यूनतम सीमा में तभी गिनी जाती है जब कम से कम दो अलग-अलग सार्थक शब्द मिलें। एक शब्द का मिलना संयोग है। जो फ़ॉलो-अप सवाल सिर्फ़ यह बताता है कि कौन-सा आइटम मतलब है, जैसे “दूसरे के बारे में और बताइए”, उसके सार्थक शब्द उस शीर्षक या नाम के होते हैं जो साइट ने उस आइटम को दिया है।
हर पैसेज इन दोनों में से बड़ा मान रखता है, और न्यूनतम सीमा की तुलना लौटाए गए पैसेज में से सबसे अच्छे मान से होती है; जो पैसेज यह मान तय करता है, वह हमेशा उनमें शामिल होता है। फ़्यूज़्ड स्कोर सिर्फ़ क्रम तय करता है।
पूरे शब्द मायने रखते हैं। इसके बजाय सबस्ट्रिंग मिलाएँ, तो “कला” “कलाई” के भीतर मिल जाएगी, और बेमेल सवाल साक्ष्य जैसे दिखने लगेंगे। अगर एम्बेडिंग सेवा तक पहुँच न हो, तो रिट्रीवल अकेली कीवर्ड सर्च पर लौट आता है, और न्यूनतम सीमा तब भी लागू रहती है।
ऐसे सवाल जिनका जवाब समानता का स्कोर नहीं दे सकता
“उन्होंने हाल में क्या किया है?” का कोई निकटतम पड़ोसी नहीं है। इसका जवाब तारीख़ के हिसाब से छँटी एक सूची है, और कोई पैसेज उस जैसा नहीं होता: इस साइट के एम्बेडर पर इस सवाल का स्कोर मौसम के बारे में एक सवाल से भी कम आया। इसलिए पूरे काम के बारे में सवाल, इनकार वाले सेट की तरह, साइट की दसों भाषाओं में पैटर्न से पहचाने जाते हैं। इनमें यह आता है कि मैं अभी क्या करता हूँ या हाल में क्या किया, मेरा करियर, प्रोजेक्ट, शोध, लेखन, शिक्षा, कौशल और सेवाएँ। ऐसे सवालों का जवाब साइट के रिकॉर्ड से दिया जाता है: CV, केस स्टडी, लेखों और सेवाओं की प्रविष्टियाँ, जो हर सवाल के लिए डेटाबेस से पढ़ी जाती हैं। जहाँ अनुवाद मौजूद हो, रिकॉर्ड पाठक की भाषा में आते हैं, और तारीख़ वाले रिकॉर्ड अपनी ही तारीख़ों के क्रम में लगते हैं, सबसे नए पहले।
रिकॉर्ड नियम से चुने जाते हैं, समानता से नहीं, इसलिए न्यूनतम सीमा उन पर लागू नहीं होती। बाक़ी किसी चीज़ से उन्हें छूट नहीं है: इनकार के पैटर्न पहले चलते हैं, हर तारीख़ वाला रिकॉर्ड अपनी तारीख़ें उसी सटीकता से रखता है जिससे साइट उन्हें दिखाती है, और किसी रिकॉर्ड पर बना हर वाक्य उसी गेट से गुज़रता है।
मेरे बारे में ऐसा सवाल जिसे पैटर्न रिकॉर्ड तक नहीं ले जाते और जिसे कोई पैसेज समर्थन नहीं देता, इनकार के बजाय इन्हीं रिकॉर्ड का एक छोटा सार पाता है, क्योंकि वहाँ ग़लत इनकार पाठक से यह कहेगा कि साइट किसी ऐसी चीज़ को कवर नहीं करती जिसे वह करती है। अगर रिकॉर्ड भी उसका जवाब न दें, तो मॉडल को निर्देश है कि गद्य के बजाय एक तय टोकन लौटाए, और पाठक वही तय इनकार देखता है। इस तरह मॉडल का आकलन इनकार तक पहुँचने का एक और रास्ता बन जाता है। वह किसी इनकार को कभी जवाब में नहीं बदलता।
RAG में समानता की न्यूनतम सीमा कैसे चुनें
कोई ऐसी संख्या नहीं है जो हर जगह चले। cosine similarity एम्बेडिंग मॉडल, भाषाओं के मिश्रण और कॉर्पस पर निर्भर करती है, इसलिए जो सीमा एक एम्बेडर पर ठीक बैठती है, वह दूसरे पर सब कुछ ठुकरा सकती है, या कुछ भी नहीं।
इस साइट पर डिज़ाइन का डिफ़ॉल्ट 0.35 है, और टेस्ट सूट इसी मान पर एक स्थानापन्न (surrogate) एम्बेडर चलाता है, यानी ऐसा मॉडल जो केवल टेस्ट में इस्तेमाल होता है। प्रोडक्शन एम्बेडर के हिसाब से इसे अभी कैलिब्रेट नहीं किया गया है। सिर्फ़ रिट्रीवल चलाने वाला एक कमांड साइट के गोल्डन सेट के सवालों और सुझाए गए सवालों को, मॉडल को कॉल किए बिना, डिप्लॉय किए गए एम्बेडर से गुज़ारता है, और प्रोडक्शन की सीमा तभी बदलती है जब यह रन पास हो। यह नक़ल करने लायक मान नहीं है। अपना मान चुनने के लिए:
जिन सवालों का जवाब सहायक को देना ही चाहिए और जिन्हें उसे ठुकराना ही चाहिए, दोनों को उसी एम्बेडर से गुज़ारें जिसे आप डिप्लॉय करते हैं, और सबसे अच्छी समानता के दोनों वितरणों की तुलना करें।
तय करें कि ठुकराए जाने वाले सवालों को रोकने के लिए आप कितने जवाब-योग्य सवाल छोड़ने को तैयार हैं। जहाँ आश्वस्त ग़लत जवाब किसी जवाब न होने से बुरा है, वहाँ सीमा ऊँची रखें।
यह दर्ज करें कि यह संख्या किस एम्बेडर और किस कॉर्पस की है। कॉर्पस में जुड़ा हर पेज बदल देता है कि विषय से बाहर का कोई सवाल किससे मैच कर सकता है — यह लेख भी।
लैब का RAG बनाम बिना रिट्रीवल डेमो इसी सीमा-रेखा के इर्द-गिर्द बना है। इसमें बिना आधार वाला कोई रास्ता है ही नहीं: जो सवाल मुझसे जुड़ा नहीं है और जिसे कोई पैसेज समर्थन नहीं देता, वह भाषा मॉडल तक पहुँचने से पहले रुक जाता है।
परत 3: सिस्टम प्रॉम्प्ट इकलौती परत है जिसे मॉडल अनदेखा कर सकता है
प्रॉम्प्ट अब भी असली काम करता है। वह मॉडल से कहता है कि सिर्फ़ सवाल के साथ दिए गए क्रमांकित स्रोतों का उपयोग करे, मेरे बारे में अन्य पुरुष में और पाठक की भाषा में लिखे, उपलब्धता, फ़ीस या समय-सीमा कभी न बताए, कोई आँकड़ा या तारीख़ न गढ़े और न ही निकाले, “अभी” सिर्फ़ उसी के बारे में कहे जिसे कोई रिकॉर्ड मौजूदा के रूप में चिह्नित करता है, हर तथ्यात्मक वाक्य के अंत में स्रोत का मार्कर लगाए, और जब स्रोत सवाल को कवर न करें तो एक तय टोकन से जवाब दे।
वह इनमें से कुछ भी लागू नहीं करा सकता। OWASP की LLM07:2025 System Prompt Leakage प्रविष्टि मॉडल के बाहर गार्डरेल की सिफ़ारिश करती है, क्योंकि आउटपुट की जाँच करने वाला कोई स्वतंत्र सिस्टम “सिस्टम प्रॉम्प्ट के निर्देशों से बेहतर है”। हैलुसिनेशन घटाने पर Anthropic का मार्गदर्शन, जिसमें मॉडल को यह कहने देना भी शामिल है कि उसे पता नहीं, उतना ही स्पष्ट है: “ये तकनीकें हैलुसिनेशन को काफ़ी घटाती हैं, पर उन्हें पूरी तरह ख़त्म नहीं करतीं।”
इसलिए प्रॉम्प्ट इस मान्यता के साथ लिखा गया है कि कभी-कभी उसे अनदेखा किया जाएगा। उसका काम पालन को सबसे आसान रास्ता बनाना है, और हर ऊँचे जोखिम वाले निर्देश का एक नियतात्मक समकक्ष है:
प्रॉम्प्ट का निर्देश | नियतात्मक समकक्ष |
|---|---|
हर तथ्यात्मक वाक्य पर स्रोत का मार्कर | गेट जाँचता है कि मार्कर मौजूद है और दायरे में है |
कोई संख्या न गढ़ें | हर संख्या, URL और ईमेल उस स्रोत में होना चाहिए जिसका हवाला वाक्य देता है |
अन्य पुरुष में लिखें | गेट की उत्तम पुरुष वाली जाँच |
फ़ीस या उपलब्धता नहीं | परत 1 के पैटर्न, फिर गेट की मान और उत्तम पुरुष वाली जाँचें |
एक निर्देश का पूरा समकक्ष नहीं है: “सिर्फ़ वही कहें जो स्रोत कहते हैं”, ऐसे दावे के लिए जिसमें कोई संख्या न हो। गेट उस वाक्य पर वैध मार्कर माँग सकता है। वह यह तय नहीं कर सकता कि स्रोत वही कहता है या नहीं। समय से जुड़े नियमों का भी पूरा समकक्ष नहीं है। जो वाक्य तारीख़ वाली दो घटनाओं को ग़लत क्रम में रख दे, या किसी पुरानी भूमिका को हाल की बता दे, उसमें गेट के जाँचने लायक कोई मान नहीं होता। रिकॉर्ड यह जोखिम घटाते हैं, क्योंकि वे तारीख़ के क्रम में और मौजूदा प्रविष्टियों पर निशान के साथ आते हैं; वे इसे ख़त्म नहीं करते।
परत 4: स्ट्रीम को एक-एक वाक्य करके गेट करें
जो वाक्य पाठक पढ़ चुका है, उसे अनकहा नहीं किया जा सकता। NVIDIA के NeMo Guardrails का डॉक्यूमेंटेशन इस trade-off को साफ़ लिख देता है: stream_first चालू हो, जो डिफ़ॉल्ट है, तो “अगर कोई rail सामग्री को ब्लॉक करती है, तो उपयोगकर्ता को टोकन पहले ही मिल चुके होते हैं”। यह साइट दूसरा पक्ष चुनती है। टेक्स्ट वाक्य पूरा होने तक रोका जाता है, जाँचा जाता है, और उसके बाद ही रिलीज़ होता है — लगभग एक वाक्य की देरी की क़ीमत पर।
हर वाक्य चार जाँचों से गुज़रता है, और हर जाँच अर्थ पर कोई फ़ैसला नहीं, स्ट्रिंग के बारे में एक तथ्य है:
मार्कर दायरे में: वह ऐसे स्रोत की ओर इशारा करता है जो दिया गया था।
हर ठोस वाक्य पर मार्कर मौजूद; बिना किसी मान वाला छोटा जोड़ने वाला वाक्य पास हो जाता है। लंबाई स्पेस से अलग किए गए शब्दों में गिनी जाती है, सिवाय चीनी के, जिसमें स्पेस नहीं होते: वहाँ हर तीन कैरेक्टर दो शब्द गिने जाते हैं।
मान उद्धृत साक्ष्य में: हर संख्या, URL और ईमेल पता उस स्रोत में आता है जिसका हवाला वाक्य देता है, फ़ारसी और अरबी अंकों को लैटिन में बदलकर।
कोई उत्तम पुरुष नहीं, जिसका मतलब यह होता कि सहायक ने मेरी आवाज़ में बोलना शुरू कर दिया है।
उल्लंघन होने पर रिलीज़ हो चुके वाक्य बने रहते हैं, विफल वाक्य कभी नहीं भेजा जाता, और स्ट्रीम रुक जाती है, जिससे अपस्ट्रीम जनरेशन भी रद्द हो जाता है। पाठक को तय टेक्स्ट दिखता है कि बाक़ी जवाब को इस साइट के स्रोतों से समर्थन नहीं मिल सका और इसलिए उसे रोक लिया गया है। मार्कर जाँचे जाते हैं, फिर हटा दिए जाते हैं, इसलिए पाठक गद्य देखते हैं, ग्रंथसूची नहीं; और बीच में कटे जवाब की सूचना अलग होती है: अधूरा रह गया वाक्य बिना आधार वाला वाक्य नहीं है।
समर्थित होना सच होना नहीं है। मानों का मिलान उन स्रोतों से होता है जिनका हवाला वाक्य देता है, दावे से नहीं: दो स्रोतों का हवाला देने वाला वाक्य किसी भी एक से मान ले सकता है, और बिना मान वाला वाक्य दायरे के भीतर किसी भी मार्कर के साथ पास हो जाता है। गेट यह नहीं दिखा सकता कि कोई दावा सही है, या यह भी नहीं कि उद्धृत पैसेज वही कहता है। OWASP की LLM09:2025 Misinformation प्रविष्टि टीमों से कहती है कि वे “मुख्य आउटपुट को स्वचालित रूप से सत्यापित करें”; यह गेट उसी का एक सीमित, नियतात्मक रूप है। इसकी बारीकियाँ स्ट्रीमिंग LLM गार्डरेल में हैं।
परत 5: आवाज़ और प्रतिनिधित्व के नियम
जो सहायक किसी की ओर से बोलता है, वह उसकी ओर से कथन भी करता है
Moffatt v. Air Canada (2024 BCCRT 149) में, जिसकी रिपोर्ट McCarthy Tétrault और Bristows ने दी, ब्रिटिश कोलंबिया के Civil Resolution Tribunal ने एक एयरलाइन चैटबॉट का मामला सुना, जिसने एक ग्राहक को यह सुझाया था कि वह शोक-यात्रा किराया (bereavement fare) बाद में, पीछे की तारीख़ से माँग सकता है। ट्रिब्यूनल के शब्दों में, एयरलाइन का रुख़ यह सुझाता था कि “चैटबॉट एक अलग क़ानूनी इकाई है जो अपने कामों के लिए ख़ुद ज़िम्मेदार है”। ट्रिब्यूनल असहमत था: “इससे कोई फ़र्क़ नहीं पड़ता कि जानकारी किसी स्थिर पेज से आई है या किसी चैटबॉट से।”
यह इंजीनियरिंग का संदर्भ है, क़ानूनी सलाह नहीं, और एक ट्रिब्यूनल का फ़ैसला कोई सामान्य नियम नहीं है। इंजीनियरिंग वाला सबक़ इससे छोटा है: आपकी साइट पर बैठा सहायक आपकी साइट के अधिकार के साथ बोलता है। मेरी आवाज़ में लिखी गई कोई फ़ीस या शुरुआत की तारीख़ ऐसा कथन होगा जो मैंने कभी नहीं किया। आश्वस्त ग़लत जवाब किसी जवाब न होने से बुरा है; आश्वस्त ग़लत वादा उससे भी बुरा।
अन्य पुरुष, तय इनकार-टेक्स्ट और उत्तम पुरुष की जाँच
सहायक कभी मैं नहीं है। वह मेरे बारे में अन्य पुरुष में लिखता है, और हर इनकार तथा हर सूचना तय टेक्स्ट है। आवाज़ का नियम तीन जगह लागू होता है:
परत 1 फ़ीस, उपलब्धता, काम पर रखे जाने और निजी ब्योरों से जुड़े सवाल रिट्रीवल से पहले ठुकरा देती है, साइट की हर भाषा में।
परत 3 उत्तम पुरुष और मेरी ओर से किसी भी वादे पर रोक लगाती है।
परत 4 उत्तम पुरुष का शब्द आते ही स्ट्रीम रोक देती है।
फ़ारसी में यह जाँच कमज़ोर है। अंग्रेज़ी उत्तम पुरुष सूची सर्वनामों को समेट लेती है। फ़ारसी सूची चुनी हुई है, पूरी नहीं: फ़ारसी में पुरुष क्रिया के अंत में दर्ज होता है, और इतना व्यापक नियम कि वह उन सबको पकड़ ले, उन्हीं अंत वाले आम शब्दों को भी पकड़ लेगा। सूची में सर्वनाम और कुछ ज़्यादा जोखिम वाली क्रियाएँ हैं, जैसे هستم और دارم, हर एक उन दोनों रूपों में जो फ़ोल्ड बना सकता है: जाँच शब्द तोड़ने से पहले फ़ोल्ड करती है, इसलिए میکنم उस तक दो टोकन में पहुँचता है और میکنم एक में। जो बाहर रह जाता है वह प्रत्यय है, वर्तनी नहीं। फ़ारसी में यह नियम प्रॉम्प्ट पर ज़्यादा टिका है, और यह बात छिपाई नहीं, लिखी गई है। साइट की बाक़ी भाषाओं के लिए सूची में उत्तम पुरुष के सर्वनाम और संबंधवाचक रूप हैं, और स्पैनिश, पुर्तगाली, रूसी, अरबी और हिंदी के लिए, जो “मैं” अक्सर सिर्फ़ क्रिया से कहती हैं, उत्तम पुरुष की कुछ क्रियाएँ भी। चीनी में, जो शब्दों को स्पेस से अलग नहीं करती, जाँच वाक्य में कहीं भी 我 ढूँढती है, सिवाय 自我 (“स्व-”) से बने किसी संयुक्त शब्द के, जैसे 自我修正, यानी “स्व-सुधार”। अरबी में उत्तम पुरुष का एक शब्द जान-बूझकर छोड़ा गया है, क्योंकि जो अक्षर-फ़ोल्डिंग फ़ारसी और अरबी वर्तनी को तुलना-योग्य बनाती है, वही उसे एक आम पूर्वसर्ग जैसा बना देती है।
ख़र्च का दुरुपयोग और Denial of Wallet: विफलता का वही परिवार
हैलुसिनेशन वह आउटपुट है जिसकी किसी ने अनुमति नहीं दी। बेलगाम बिल वह ख़र्च है जिसकी किसी ने अनुमति नहीं दी। OWASP दूसरे को LLM10:2025 Unbounded Consumption के अंतर्गत रखता है, जिसमें Denial of Wallet भी शामिल है: हमलावर “क्लाउड आधारित AI सेवाओं के प्रति-उपयोग-लागत मॉडल का फ़ायदा उठाते हैं, जिससे प्रदाता पर असहनीय वित्तीय बोझ पड़ता है”। इसके उपायों में इनपुट के आकार की सीमाएँ, रेट लिमिट और उपयोगकर्ता कोटा, टाइमआउट और थ्रॉटलिंग, और graceful degradation शामिल हैं।
कॉल से पहले का बजट, कॉल के बाद का अलर्ट नहीं
मॉडल कॉल के बाद चलने वाली जाँच तक पैसा ख़र्च हो चुका होता है। इस साइट पर मासिक ख़र्च की जाँच न्यूनतम सीमा के बाद और मॉडल कॉल से पहले चलती है। वह अब तक के ख़र्च में इस टर्न की लागत की एक ऊपरी हद जोड़ती है: पूरा प्रॉम्प्ट, हर UTF-8 बाइट के लिए एक टोकन की दर से गिना हुआ, और साथ में आउटपुट की पूरी सीमा, reasoning के लिए रखी गई जगह समेत। इसके बजाय अपेक्षित लागत से तुलना करना ही वह तरीक़ा है जिससे सीमा पार होती है।
अगर कुल योग सीमा पार कर जाए, तो कोई मॉडल कॉल नहीं होता, और पाठक को एरर नहीं, यह तय सूचना मिलती है कि मासिक सीमा पूरी हो चुकी है।
बाइट की गिनती एक छत है, कोई उदार अंदाज़ा नहीं। इस एंडपॉइंट को जिस भी vocabulary की ओर मोड़ा जा सकता है, वह byte-level BPE है, और ऐसे किसी टोकनाइज़र में एक टोकन बाइट्स का ख़ाली न रहने वाला क्रम होता है, इसलिए कोई भी टेक्स्ट अपने बाइट्स से ज़्यादा टोकन नहीं बना सकता, किसी भी भाषा में। इस हद से पार जाने का इकलौता रास्ता ऐसा टोकनाइज़र है जो टेक्स्ट को तोड़ने से पहले फैला दे, और इनमें से कोई ऐसा नहीं करता। इस हद ने “हर दो कैरेक्टर पर एक टोकन” वाले सपाट नियम की जगह ली, जिसे यह साइट छोड़ चुकी है: फ़ारसी टोकन टैक्स ने मापा कि cl100k_base पर एक समानांतर कॉर्पस के हर फ़ारसी वाक्य के लिए वह नियम असली गिनती से कम रहता था। यह छत ढीली है — फ़ारसी के लिए यह प्रॉम्प्ट की असली लागत से कई गुना ज़्यादा रोक रखती है — और वह ठीक उसी दिशा में ढीली है जिस दिशा में ख़र्च की सीमा को ग़लत होने की छूट है।
दो सीमाएँ बची रहती हैं। यह जाँच आरक्षण नहीं है: ख़र्च पढ़ा और तुलना किया जाता है, रोककर नहीं रखा जाता, इसलिए एक साथ आए अनुरोध अलग-अलग पास होकर मिलकर सीमा पार कर सकते हैं; प्रति-IP सीमाएँ इस खिड़की को छोटा करती हैं, बंद नहीं। और काउंटर पूरा बहीखाता नहीं है: उसमें इसी एंडपॉइंट की मॉडल कॉल की लागत रहती है, इसलिए हर सवाल के पीछे होने वाली होस्टेड एम्बेडिंग उससे बाहर रहती है, और काउंटर स्टोर तक पहुँच न होने पर खोया कोई राइट दोबारा नहीं आज़माया जाता। यह सीमा एक गार्डरेल है, इनवॉइस नहीं।
ख़र्च पर fail closed, रेट लिमिट पर fail open
अगर काउंटर स्टोर तक पहुँच न हो, तो ख़र्च अज्ञात है, और किसी कठोर सीमा के सामने अज्ञात ख़र्च का एक ही सुरक्षित पाठ है: ऐसे इनकार करो मानो सीमा पूरी हो चुकी हो।
रेट लिमिटर इसके बजाय fail open होता है, क्योंकि कैश के बंद होने से पूरी साइट नहीं गिरनी चाहिए। fail open हुई रेट लिमिट का सबसे बुरा नतीजा कुछ अतिरिक्त अनुरोध हैं; fail open हुई ख़र्च-सीमा का सबसे बुरा नतीजा एक बेलगाम बिल है। प्रति-IP तीन सीमाएँ हैं, जो एक मिनट, एक घंटे और एक दिन में फिर भरती हैं, और जिनकी कुंजी वह पता है जो एज प्रॉक्सी ने देखा, न कि कोई ऐसा हेडर जो क्लाइंट ख़ुद लिख सके। वे स्क्रिप्ट्स को धीमा करती हैं; ख़र्च पर आख़िरी रोक मासिक सीमा है, कोई गारंटी नहीं।
पाठक चला जाए, तो पैसा देना भी बंद हो
ब्राउज़र का टैब बंद कर देने से मॉडल तक गया अनुरोध नहीं रुकता। सर्वर स्ट्रीमिंग लूप के भीतर डिस्कनेक्ट जाँचता है और प्रोवाइडर की स्ट्रीम बंद कर देता है, जिससे अनुरोध रद्द हो जाता है। गेट का रुकना भी यही करता है: जिन वाक्यों को कोई नहीं देखेगा, उनके लिए किसी को पैसे नहीं देने चाहिए।
टूटने से पहले जो जनरेट हुआ, वह जनरेट हो चुका है और इनवॉइस में है, इसलिए महीने के खाते में चढ़ता है। दोनों प्रोवाइडर प्रोटोकॉल usage को एक अंतिम इवेंट में रिपोर्ट करते हैं, जहाँ बीच में कटी स्ट्रीम कभी नहीं पहुँचती, इसलिए सेवा हर वह कैरेक्टर रखती है जो उसे मिला और सिर्फ़ प्रोवाइडर की छोड़ी हुई जगह भरती है, हर UTF-8 बाइट के लिए एक टोकन की दर से। जहाँ प्रोवाइडर ने रिपोर्ट किया है, वहाँ उसी के आँकड़े चलते हैं: पूरा हुआ टर्न ठीक वही दर्ज करता है जो उसने कहा, उसका अनुमान नहीं।
इसे कैसे मापें: इनकार की सटीकता, recall@k और स्रोत-आधारिता
तीन गुण मायने रखते हैं। इनकार की सटीकता मापती है कि सहायक जिन सवालों को ठुकराना चाहिए, उन्हें ठुकराता है या नहीं। recall@k मापता है कि साक्ष्य मॉडल तक पहुँचता है या नहीं। स्रोत-आधारिता (groundedness) मापती है कि जवाब उसी साक्ष्य के भीतर रहता है या नहीं। इस साइट पर साइट की दसों भाषाओं के सवालों का एक गोल्डन सेट, जिनमें ज़्यादातर अंग्रेज़ी और फ़ारसी के हैं, हर CI रन पर नियतात्मक ढंग से, बिना किसी मॉडल कॉल के स्कोर किया जाता है।
इनकार की सटीकता: दो सेट, कोई आंशिक अंक नहीं
इनकार दो सेट पर स्कोर होता है, क्योंकि दोनों इनकार वाली परतें अलग-अलग तरीक़े से विफल होती हैं। पैटर्न वाले इनकार परत 1 में, रिट्रीवल चलने से पहले पकड़े जाने चाहिए; बिना-साक्ष्य वाले सवाल, जिनका साइट से कोई लेना-देना नहीं, न्यूनतम सीमा से नीचे रहने चाहिए, और उन्हें मेरे बारे में सवाल नहीं माना जाना चाहिए। एक तीसरा सेट जाँचता है कि पूरे काम के बारे में सवाल साइट के रिकॉर्ड तक पहुँचें।
बिल्ड पास होने के लिए दोनों सेट पर पूरा स्कोर चाहिए। एक चूका हुआ इनकार किसी असली व्यक्ति की साइट पर गढ़ा गया वादा है, और औसत उसे छिपा देता। वही रन उलटी विफलता भी जाँचता है: जवाब-योग्य सवाल जिन्हें पैटर्न या सीमा ने ठुकरा दिया। Hamel Husain और Shreya Shankar की evals FAQ रेटिंग स्केल के बजाय पास/फ़ेल को तरजीह देती है, क्योंकि “बाइनरी मूल्यांकन ज़्यादा साफ़ सोच और ज़्यादा एकरूप लेबलिंग के लिए मजबूर करते हैं”।
जिन सवालों को ठुकराया जाना चाहिए, उन्हें मैं यहाँ उद्धृत नहीं करता: यह लेख सहायक के कॉर्पस में जाएगा, और उन्हें उद्धृत करने से ठीक वही सवाल इस पेज पर एक मज़बूत कीवर्ड मैच पा जाते।
डिफ़ॉल्ट k से छोटे k पर recall@k
गोल्डन सेट में recall@k यह पूछता है कि सवाल का जवाब देने वाला कम से कम एक पैसेज शीर्ष k में है या नहीं, जिससे यह एक हिट रेट बन जाता है। Contextual Retrieval पर Anthropic का लेख ज़्यादा सख़्त परिभाषा इस्तेमाल करता है, यानी रिट्रीव हुए प्रासंगिक दस्तावेज़ों का हिस्सा, और अपनी विफलता के माप के रूप में “1 minus recall@20” बताता है।
गोल्डन सेट recall को k = 5 पर मापता है, डिफ़ॉल्ट top-k 8 से नीचे, क्योंकि कुछ दर्जन चंक वाले टेस्ट कॉर्पस में शीर्ष आठ पूरे कॉर्पस का बड़ा हिस्सा हैं, और वहाँ मापना रिट्रीवर को असल से बेहतर दिखाता।
स्रोत-आधारिता: हर वाक्य पर लागू, ऑफ़लाइन स्कोर नहीं
ऑफ़लाइन, स्रोत-आधारिता आम तौर पर faithfulness के रूप में स्कोर होती है। Ragas इसे जवाब के उन दावों के रूप में परिभाषित करता है जिन्हें रिट्रीव किया गया संदर्भ समर्थन देता है, बँटा हुआ उसके कुल दावों से, 0 से 1 तक; अपने मानक रूप में एक LLM ही दावों को पहचानता और जाँचता है।
LLM जज उपयोगी भी हैं और पक्षपाती भी। Zheng और उनके सहयोगियों ने “स्थान, शब्द-बहुलता और आत्म-वरीयता का पक्षपात” पाया, जबकि मज़बूत जज फिर भी मानवीय पसंद से 80% से ऊपर सहमत रहे। Husain और Shankar सलाह देते हैं कि जज की true positive और true negative दरें अलग रखे गए लेबल वाले सेट पर जाँची जाएँ, और जहाँ कोई नियम फ़ैसला कर सकता है वहाँ सस्ती, कोड आधारित जाँचों से शुरुआत की जाए।
यह साइट कोड वाला रास्ता लेती है: गेट रनटाइम पर स्रोत-आधारिता लागू करता है, और CI में कोई faithfulness मेट्रिक या LLM जज नहीं चलता।
मेरा गोल्डन सेट क्या साबित नहीं करता
एम्बेडर स्थानापन्न है। CI में रिट्रीवल एक bag-of-tokens हैशिंग मॉडल इस्तेमाल करता है जिसमें कोई सीखा हुआ अर्थ नहीं है। रूटिंग, फ़्यूज़न, रैंकिंग, top-k का चुनाव और साक्ष्य का फ़ैसला, सीमा की तुलना समेत, प्रोडक्शन का ही कोड है; टेस्ट में सिर्फ़ उम्मीदवारों की स्कोरिंग दोहराई गई है, जो प्रोडक्शन में डेटाबेस के भीतर होती है। इसलिए CI रूटिंग और रैंकिंग मशीनरी में आई गिरावट पकड़ता है, डेटाबेस क्वेरी या लाइव सहायक के recall में आई गिरावट नहीं, और यह स्थानापन्न मॉडल एक स्पार्स सूची भी चलाता है जिसे प्रोडक्शन इस्तेमाल नहीं करता।
सेट छोटे हैं। पैटर्न वाले इक्कीस इनकार हैं और बिना-साक्ष्य वाले ग्यारह सवाल। ग्यारह सवालों पर “पूरा सही होना चाहिए” गिरावट के ख़िलाफ़ एक पहरा है, इनकार की दर नहीं।
लाइव जाँचें कमांड हैं, CI जॉब नहीं। जो टेस्ट गोल्डन सेट को डिप्लॉय किए गए रिट्रीवर को भेजेगा, वह अब भी स्किप होता है। सिर्फ़ रिट्रीवल चलाने वाला एक कमांड गोल्डन सेट के और सुझाए गए सवालों को, मॉडल को कॉल किए बिना, डिप्लॉय किए गए एम्बेडर से गुज़ारता है, और हर इम्पोर्ट के बाद हाथ से चलाई जाने वाली एक स्क्रिप्ट लाइव सहायक से वे सवाल पूछती है जिन्हें ठुकराया जाना चाहिए।
रिकॉर्ड से बने जवाबों को सिर्फ़ गेट जाँचता है। CI एक तय टेस्ट डेटा (fixture) पर जाँचता है कि कौन-से सवाल साइट के रिकॉर्ड तक पहुँचते हैं और उन्हें कौन-से रिकॉर्ड मिलते हैं, मॉडल की जगह पहले से लिखे जवाब देने वाले एक स्थानापन्न के साथ। असली मॉडल उनसे जवाब कैसे लिखता है, यह रनटाइम पर गेट जाँचता है।
इसीलिए मैं इस सहायक के लिए सटीकता, इनकार या recall का कोई आँकड़ा प्रकाशित नहीं करता: स्वचालित रन एक स्थानापन्न एम्बेडर इस्तेमाल करता है, लाइव जाँचें छोटी हैं और हाथ से चलाई जाती हैं, और यह साइट उन संख्याओं का अनुमान नहीं लगाती जिन्हें उसने मापा नहीं है।
अनुबंध सहायक में भरोसे के बजाय संरचना
मैंने Kartez Contract पर AI इंजीनियर के रूप में काम किया, जो एक त्रिभाषी अनुबंध वर्कस्पेस था और जिसे क्लाइंट ने पूरा होने से एक महीने पहले युद्ध से जुड़ी फ़ंडिंग की वजह से रोक दिया। वहाँ मॉडल को टेक्स्ट से बाँधे रखना भरोसे के बजाय संरचना से हुआ: जवाब सिर्फ़ चुने हुए खंडों से बनते हैं, सुधारों को मौजूदा इबारत हूबहू उद्धृत करनी होती है, आउटपुट तय स्कीमा का पालन करते हैं, और मसौदा लिखते समय मॉडल कम यादृच्छिकता पर चलता है। ये डिज़ाइन की बाध्यताएँ हैं, कोई मापी गई गारंटी नहीं। ऊपर बताई गई सीमा और गेट इस साइट के सहायक के हैं, Kartez के नहीं। Kartez Contract केस स्टडी उस प्रोजेक्ट को समेटती है। अनुबंध AI में ये पैटर्न कैसे दिखते हैं, और मूल्यांकन सेट पहले क्यों आता है, यह लीगल AI हैलुसिनेशन: क्या बनाना चाहिए में है।
चेकलिस्ट: प्रोडक्शन RAG सहायक के लिए गार्डरेल
पहले पैटर्न से इनकार करें। फ़ीस, उपलब्धता, निजी डेटा और निर्देश निकालने की कोशिशों को रिट्रीवल से पहले ठुकराएँ।
समानता पर सीमा रखें, रैंक स्कोर पर नहीं। cosine कोई सीमा सँभाल सकता है, और पूरे शब्दों की कवरेज भी, बशर्ते आम शब्द हटा दिए गए हों और कम से कम दो सार्थक शब्द मिलें; RRF स्कोर नहीं। सीमा से नीचे तय टेक्स्ट से इनकार करें और मॉडल की कॉल छोड़ दें।
व्यापक सवालों का जवाब रिकॉर्ड से दें, समानता से नहीं। तारीख़ के हिसाब से छँटी सूची का कोई निकटतम पड़ोसी नहीं होता।
सीमा उसी एम्बेडर पर कैलिब्रेट करें जिसे आप डिप्लॉय करते हैं। स्थानापन्न पर जाँची गई सीमा एक डिफ़ॉल्ट है।
प्रॉम्प्ट के हर नियम का एक समकक्ष रखें — मॉडल के बाहर।
स्ट्रीम को वाक्य-दर-वाक्य गेट करें। मार्कर अनिवार्य करें, संख्याओं, URL और ईमेल को हूबहू जाँचें, विफल वाक्य से आगे सब रोक दें, और अधूरे जवाब को उसकी अपनी सूचना दें।
जो सहायक किसी व्यक्ति या फ़र्म के बारे में बोलता है, उसमें उत्तम पुरुष पर रोक लगाएँ, और लिखें कि जाँच कहाँ कमज़ोर है।
कॉल से पहले ऊपरी हद आरक्षित करें, उदार अंदाज़ा नहीं। byte-level BPE के लिए प्रॉम्प्ट की UTF-8 बाइट गिनती ऐसी ही एक हद है। आरक्षण atomic रखें ताकि एक साथ आए अनुरोध सब पास न हो जाएँ, fail closed रहें, और डिस्कनेक्ट पर अपस्ट्रीम काम रद्द करें।
हर कॉल की लागत दर्ज करें, उनकी भी जो बीच में कट गईं: टेक्स्ट को स्ट्रीम होते हुए रखें और सिर्फ़ वह भरें जो प्रोवाइडर के अंतिम usage इवेंट ने कभी रिपोर्ट नहीं किया।
इनकार को recall से अलग मापें। एम्बेडर, सेट के आकार और यह बताएँ कि रन क्या साबित नहीं करता।
अक्सर पूछे जाने वाले सवाल
क्या RAG हैलुसिनेशन ख़त्म कर देता है?
नहीं। LexisNexis और Thomson Reuters के RAG आधारित क़ानूनी शोध टूल्स ने एक पूर्व-पंजीकृत अध्ययन में फिर भी 17% और 33% के बीच मामलों में हैलुसिनेट किया, और अपर्याप्त संदर्भ मॉडल को ज़्यादा सावधान करने के बजाय ज़्यादा आश्वस्त बना सकता है। रिट्रीवल संभावनाएँ सुधारता है; गारंटी मॉडल के बाहर की जाँचों से आती है।
RAG सिस्टम को समानता की कौन-सी न्यूनतम सीमा रखनी चाहिए?
कोई ऐसी संख्या नहीं है जो हर जगह चले, क्योंकि समानता के वितरण एम्बेडिंग मॉडल और कॉर्पस पर निर्भर करते हैं। cosine जैसी किसी परिबद्ध समानता पर सीमा रखें, reciprocal rank fusion के स्कोर पर कभी नहीं, और मान जवाब-योग्य तथा ठुकराए जाने वाले सवालों से उसी एम्बेडर पर तय करें जिसे आप डिप्लॉय करते हैं। सिर्फ़ स्थानापन्न पर जाँची गई सीमा डिफ़ॉल्ट है, कैलिब्रेशन नहीं।
क्या हैलुसिनेशन रोकने के लिए सिस्टम प्रॉम्प्ट काफ़ी है?
नहीं। OWASP सलाह देता है कि “जहाँ तक हो सके” मॉडल के व्यवहार को नियंत्रित करने के लिए सिस्टम प्रॉम्प्ट का उपयोग न करें और इसके बजाय “LLM के बाहर के सिस्टम” पर भरोसा करें, और Anthropic का मार्गदर्शन कहता है कि प्रॉम्प्ट की तकनीकें हैलुसिनेशन घटाती हैं, ख़त्म नहीं करतीं। प्रॉम्प्ट रखें, और हर मायने रखने वाले निर्देश को मॉडल के बाहर एक नियतात्मक जाँच दें।
क्या LLM जज नियतात्मक जाँचों की जगह ले सकता है?
उन नियमों के लिए नहीं जिन पर स्ट्रिंग की एक जाँच फ़ैसला कर सकती है, जैसे यह कि मार्कर किसी असली स्रोत की ओर इशारा करता है या कोई संख्या साक्ष्य में आती है। जज स्थान, शब्द-बहुलता और आत्म-वरीयता का पक्षपात दिखाते हैं। उन्हें उन सवालों के लिए रखें जिनका जवाब कोड नहीं दे सकता, बाइनरी लेबल के साथ और ऐसे जज के साथ जिसे मानवीय लेबल के सामने जाँचा गया हो।
LLM चैटबॉट को बिल बढ़ाने से कैसे रोकें?
मॉडल कॉल से पहले उसकी लागत की ऊपरी हद atomic ढंग से आरक्षित करें — byte-level BPE टोकनाइज़र के लिए प्रॉम्प्ट की UTF-8 बाइट गिनती ऐसी ही एक हद है, किसी भी भाषा में — और काउंटर उपलब्ध न हो तो इनकार करें। हर कॉल की लागत दर्ज करें, बीच में कटी कॉल की भी: स्ट्रीम हुआ टेक्स्ट रखकर और वह भरकर जो प्रोवाइडर के अंतिम usage इवेंट ने कभी रिपोर्ट नहीं किया। एरर देने के बजाय तय टेक्स्ट पर उतरें, और क्लाइंट के डिस्कनेक्ट होने पर अपस्ट्रीम जनरेशन रद्द करें। OWASP इस जोखिम को LLM10:2025 Unbounded Consumption के रूप में सूचीबद्ध करता है, जिसमें Denial of Wallet शामिल है।
स्रोत
Magesh और सहयोगियों का पेपर (2024): Hallucination-Free? Assessing the Reliability of Leading AI Legal Research Tools
Google Research का ब्लॉग (14 मई 2025): Deeper insights into retrieval augmented generation: The role of sufficient context
Joren और सहयोगियों का पेपर (arXiv 2024, संशोधित 2025): Sufficient Context: A New Lens on Retrieval Augmented Generation Systems
Kalai और सहयोगियों का पेपर (2025): Why Language Models Hallucinate
Cormack, Clarke और Büttcher का पेपर (SIGIR 2009): Reciprocal Rank Fusion outperforms Condorcet and individual Rank Learning Methods
OWASP GenAI: LLM07:2025 System Prompt Leakage
Anthropic का डॉक्यूमेंटेशन: Reduce hallucinations
NVIDIA NeMo Guardrails: Output Rail Streaming Configuration
OWASP GenAI: LLM09:2025 Misinformation
McCarthy Tétrault का TechLex ब्लॉग (19 फ़रवरी 2024): Moffatt v. Air Canada: A Misrepresentation by an AI Chatbot
Bristows का Inquisitive Minds ब्लॉग (27 मार्च 2024): AI Chatbot flies solo and Air Canada foots the bill - Moffatt v. Air Canada
OWASP GenAI: LLM10:2025 Unbounded Consumption
Hamel Husain और Shreya Shankar की evals FAQ (अंतिम संशोधन 13 सितंबर 2026): AI Evals: Everything You Need to Know
Anthropic का इंजीनियरिंग ब्लॉग (19 सितंबर 2024): Introducing Contextual Retrieval
Ragas का डॉक्यूमेंटेशन: Faithfulness
Zheng और सहयोगियों का पेपर (NeurIPS 2023 Datasets and Benchmarks): Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena
अगर आप ऐसा सहायक डिज़ाइन कर रहे हैं जिसे जवाब देने जितनी ही भरोसेमंदी से इनकार भी करना है, तो अपने प्रोजेक्ट का दायरा तय करें।