Context-Augmented Code Generation Using Programming Knowledge Graphs
यह शोध पत्र एक प्रोग्रामिंग नॉलेज ग्राफ (PKG) दृष्टिकोण का प्रस्ताव करता है जो सूक्ष्म-स्तरीय सिमेंटिक रिट्रीवल और री-रैंकिंग को सक्षम करके कोड जनरेशन को बेहतर बनाता है ताकि मतिभ्रम (hallucinations) को कम किया जा सके और जटिल समस्याओं पर सटीकता में सुधार किया जा सके, जिससे HumanEval और MBPP बेंचमार्क पर महत्वपूर्ण प्रदर्शन लाभ प्राप्त होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक जटिल सॉफ्टवेयर लिखने की कोशिश कर रहे हैं, जैसे कि एक रोबोट जो आपके कपड़े अलग करने का काम करे। आप एक बहुत ही बुद्धिमान, जानकार AI सहायक (एक लार्ज लैंग्वेज मॉडल, या LLM) से आपके लिए कोड लिखने के लिए कहते हैं।
समस्या यह है कि हालांकि यह AI व्याकरण और सामान्य तर्क में माहिर है, लेकिन यह कभी-कभी विशिष्ट नियमों को भूल जाता है, जैसे कि "लाल मोजों को सफेद शर्ट के साथ न मिलाएं" या "इस विशिष्ट ब्रांड की वाशिंग मशीन को एक विशेष बटन की आवश्यकता होती है।" यह गलत जानकारी भी दे सकता है (हैलुसिनेट कर सकता है) क्योंकि यह आत्मविश्वास के साथ बोलने की बहुत कोशिश करता है।
इसे ठीक करने के लिए, डेवलपर्स आमतौर पर RAG (रिट्रीवल-ऑगमेंटेड जनरेशन) नामक सिस्टम का उपयोग करते हैं। इसे एक AI को लाइब्रेरी कार्ड देने के रूप में समझें। कोड लिखने से पहले, यह देखने के लिए कि दूसरों ने समान समस्याओं को कैसे हल किया है, यह लाइब्रेरी में प्रासंगिक किताबें खोजता है।
हालांकि, यह पेपर तर्क देता है कि इस "लाइब्रेरी" का उपयोग करने का वर्तमान तरीका त्रुटिपूर्ण है। यह ऐसा है जैसे AI को एक पूरी विश्वकोश (एन्साइक्लोपीडिया) थमा देना जब उसे केवल एक विशिष्ट पैराग्राफ की आवश्यकता हो। AI अप्रासंगिक जानकारी से अभिभूत, भ्रमित, या उन किताबों से विचलित हो जाता है जो दिखने में समान हैं लेकिन वास्तव में गलत विषय के बारे में हैं।
समाधान: प्रोग्रामिंग नॉलेज ग्राफ (PKG)
लेखक इस लाइब्रेरी को व्यवस्थित करने का एक नया तरीका प्रस्तावित करते हैं, जिसे वे प्रोग्रामिंग नॉलेज ग्राफ (PKG) कहते हैं।
उपमा: व्यवस्थित कार्यशाला बनाम कचरे का ढेर
कल्पना कीजिए कि वर्तमान लाइब्रेरी फर्श पर रखे कागजों का एक विशाल, अस्त-व्यस्त ढेर है। आप "पेचकस" मांगते हैं, और AI कागजों का एक मुट्ठी भर हिस्सा उठा लेता है जिसमें "पेचकस" शब्द होने की संभावना है। उनमें से कुछ वास्तविक औजारों के बारे में हैं, लेकिन अन्य "लाइट बल्ब कसने" (रूपक के रूप में) या "प्रोजेक्ट खराब करने" के बारे में हैं। AI भ्रमित हो जाता है।
PKG एक अत्यधिक व्यवस्थित कार्यशाला की तरह है जिसमें लेबल वाले दराज और एक मानचित्र है।
- कोड-केंद्रित PKG (औजार के दराज): कोड को केवल टेक्स्ट के एक सपाट ब्लॉक के रूप में मानने के बजाय, यह सिस्टम इसे इसके प्राकृतिक हिस्सों, जैसे कि एक पेड़ (ट्री) में तोड़ देता है। यह पूरे "फंक्शन" (पूरे टूल) को विशिष्ट "ब्लॉक्स" (व्यक्तिगत पेंच, गियर और हैंडल) से अलग करता है।
- लाभ: यदि आपको एक विशिष्ट गियर की आवश्यकता है, तो सिस्टम केवल वही गियर निकाल सकता है, न कि पूरा टूलबॉक्स। यह AI को कोड के अप्रासंगिक हिस्सों से विचलित होने से रोकता है।
- टेक्स्ट-केंद्रित PKG (निर्देश मैनुअल): ट्यूटोरियल और डॉक्यूमेंटेशन के लिए, यह सिस्टम केवल एक पूरा पेज नहीं उठाता है। यह टेक्स्ट को एक संरचित मानचित्र (जैसे कि JSON ट्री) में तोड़ देता है, जो शीर्षक, स्पष्टीकरण और उदाहरण कोड को अलग करता है।
- लाभ: AI पूरे मैनुअल के इतिहास को पढ़े बिना सटीक "कैसे करें" वाला चरण ढूंढ सकता है।
"ट्री प्रूनिंग" (वृक्ष छंटाई) का कमाल
एक अच्छा मानचित्र होने के बावजूद, कभी-कभी AI पेड़ की ऐसी शाखा पकड़ लेता है जो बहुत बड़ी है या जिसमें सूखे पत्ते (अप्रासंगिक जानकारी) हैं। लेखक ट्री प्रूनिंग (Tree Pruning) नामक एक तकनीक का उपयोग करते हैं।
उपमा: कल्पना कीजिए कि आप एक माली से एक विशिष्ट लाल फूल वाली शाखा मांगते हैं। माली सही पेड़ तो ढूंढ लेता है लेकिन हरी पत्तियों और कांटों वाली एक बड़ी शाखा लेकर आता है। प्रूनिंग का चरण एक स्मार्ट सहायक की तरह है जो जल्दी से हरी पत्तियां और कांटे काट देता है, और आपको केवल लाल फूल वाली शाखा थमा देता है। यह AI की "डेस्क" को साफ और केंद्रित रखता है।
"टेस्ट टेस्ट" (री-रैंकिंग)
कभी-कभी, सबसे अच्छे लाइब्रेरी और प्रूनिंग के साथ भी, AI अभी भी कोड के कुछ अलग संस्करण लिख सकता है, और उनमें से कुछ गलत हो सकते हैं।
उपमा: कल्पना कीजिए कि AI एक शेफ है जो आपके अनुरोध के आधार पर सूप के तीन अलग-अलग संस्करण बनाता है।
- संस्करण 1: लाइब्रेरी की जानकारी का उपयोग करता है लेकिन इसमें बहुत अधिक नमक डाल देता है।
- संस्करण 2: लाइब्रेरी को अनदेखा करता है लेकिन इसका स्वाद एकदम सही है।
- संस्करण 3: लाइब्रेरी का पूरी तरह से उपयोग करता है।
लेखक एक री-रैंकर (Re-Ranker) जोड़ते हैं। यह एक खाद्य समीक्षक की तरह है जो तीनों कटोरे चखता है और उनमें से उसे चुनता है जो वास्तव में आपके ऑर्डर से मेल खाता है। पेपर में पाया गया कि यह "टेस्ट टेस्ट" महत्वपूर्ण है। यह सिस्टम को कई विकल्प उत्पन्न करने और फिर सबसे अच्छे को चुनने की अनुमति देता है, जिससे यह प्रभावी रूप से उस "खराब" सलाह को अनदेखा कर देता है जो लाइब्रेरी ने गलती से पेश कर दी होगी।
उन्होंने क्या पाया?
शोधकर्ताओं ने इस सिस्टम का परीक्षण दो प्रसिद्ध कोडिंग टेस्ट (HumanEval और MBPP) पर किया। यहाँ बताया गया कि क्या हुआ:
- बेहतर सटीकता: जब उन्होंने अपने व्यवस्थित "कार्यशाला" (PKG) का उपयोग किया, तो AI मानक टेस्ट पर 20% अधिक बार और कठिन टेस्ट पर 34% अधिक बार सही उत्तर देता है।
- कम भ्रम: AI ने उन गलतियों को कम किया जहाँ उसने गलत वेरिएबल नाम का उपयोग किया या शर्तों (conditions) की जाँच करना भूल गया।
- चुनौती: यह हर एक प्रकार की समस्या के लिए एकदम सही नहीं था। उदाहरण के लिए, जब स्ट्रिंग मैनिपुलेशन (जैसे अक्षरों को पुनर्व्यवस्थित करना) से निपटने की बात आती है, तो अतिरिक्त जानकारी कभी-कभी AI को मदद करने के बजाय भ्रमित कर देती है।
- विजेता: व्यवस्थित ग्राफ (PKG) + प्रूनिंग (शोर को काटना) + री-रैंकिंग (सर्वश्रेष्ठ परिणाम चुनना) का संयोजन सबसे शक्तिशाली संयोजन था।
मुख्य निष्कर्ष
पेपर यह निष्कर्ष निकालता है कि केवल AI को अधिक जानकारी देना पर्याप्त नहीं है; आपको उसे सही जानकारी सही प्रारूप में देनी होगी।
इसे ऐसे सोचें: यदि आप एक घर बनाना चाहते हैं, तो आप नहीं चाहेंगे कि आपके ड्राइववे पर ईंटों, लकड़ी और कीलों का एक ट्रक भरकर ढेर लगा दिया जाए। आप एक ब्लूप्रिंट (ग्राफ) चाहते हैं जो आपको दिखाए कि कौन सी ईंट कहाँ लगेगी, एक फोरमैन जो टूटे हुए हिस्सों को हटा दे (प्रूनिंग), और एक क्वालिटी इंस्पेक्टर जो कुछ विकल्पों में से सबसे अच्छा डिज़ाइन चुने (री-रैंकिंग)।
कोड और टेक्स्ट के लिए इस संरचित "ब्लूप्रिंट" का निर्माण करके, लेखकों ने दिखाया है कि हम AI को शोर के बीच खोए बिना बेहतर, अधिक विश्वसनीय सॉफ्टवेयर लिखने में मदद कर सकते हैं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।