paint-brush
ChatSQL: प्लेन टेक्स्ट से SQL क्वेरी जनरेट करने के लिए ChatGPT को सक्षम करनाद्वारा@ademakdogan
6,963 रीडिंग
6,963 रीडिंग

ChatSQL: प्लेन टेक्स्ट से SQL क्वेरी जनरेट करने के लिए ChatGPT को सक्षम करना

द्वारा adem17m2023/06/21
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

हमारा उद्देश्य सादा पाठ का उपयोग करके हमारे डेटाबेस से जानकारी प्राप्त करना है। अपने काम में, हमने लक्ष्य डेटाबेस के रूप में MySQL का उपयोग किया। फिर भी, इस दृष्टिकोण का उपयोग अन्य डेटाबेस पर प्रश्न उत्पन्न करने के लिए भी किया जा सकता है। नमूना डेटाबेस नीचे दिखाया गया है।
featured image - ChatSQL: प्लेन टेक्स्ट से SQL क्वेरी जनरेट करने के लिए ChatGPT को सक्षम करना
adem HackerNoon profile picture
0-item

ChatGPT जून 2020 में जारी किया गया था और इसे OpenAI द्वारा विकसित किया गया है। इसने कई क्षेत्रों में क्रांतिकारी विकास किया है। इनमें से एक क्षेत्र डेटाबेस प्रश्नों का निर्माण है। डेटाबेस प्रश्नों को चैटजीपीटी के माध्यम से सादे पाठ से उत्पन्न किया जा सकता है। यह आपको उन डेटाबेस के साथ मदद करता है जिनके बारे में आपको कम जानकारी है।


आर्टिफिशियल इंटेलिजेंस, जो हमारे दैनिक जीवन में उत्तरोत्तर एकीकृत हो गया है, ने ChatGPT के उदय के साथ महत्वपूर्ण गति प्राप्त की है। प्रोजेक्ट में जाने से पहले, आइए संक्षेप में चैटजीपीटी का अन्वेषण करें।


ChatGPT की क्षमताओं को पूरी तरह से समझने के लिए, इसकी अंतर्निहित संरचना की ठोस समझ होना आवश्यक है। ChatGPT को GPT आर्किटेक्चर के आधार पर विकसित किया गया है। तो आइए पहले ट्रांसफार्मर पर एक नजर डालते हैं।


परियोजना के लिए सीधी पहुँच के लिए, यहाँ क्लिक करें।


अंजीर 1. ट्रांसफार्मर से एनकोडर और डिकोडर

ट्रांसफॉर्मर seq2seq ढांचे का उपयोग करते हैं, जिससे एक अनुक्रम को दूसरे में परिवर्तित किया जा सकता है। अनुक्रमों ने ऑर्डरिंग को परिभाषित किया है। दृष्टांत के रूप में, वाक्यों को शब्दों के उत्तराधिकार के रूप में देखा जा सकता है। ट्रांसफॉर्मर का उपयोग टेक्स्ट ट्रांसलेशन जैसे एनएलपी को हल करने के लिए भी किया जा सकता है। इस आर्किटेक्चर को प्रशिक्षित करने के लिए हमें बहुत सारे लेबल किए गए डेटा की आवश्यकता है। ट्रांसफार्मर के लिए सीखना मुश्किल होगा। इस समस्या को हल करने के लिए हम ट्रांसफर लर्निंग का उपयोग कर सकते हैं। ट्रांसफॉर्मर में दो घटक होते हैं (चित्र 1): एक एनकोडर और एक डिकोडर, दोनों एक कुशल भाषा प्रतिनिधित्व प्राप्त करने में माहिर हैं।


यह प्रवीणता हमें प्रत्येक घटक से भाषा मॉडल बनाने की अनुमति देती है। एन्कोडर्स को ढेर करके, हम टी रैंसफॉर्मर्स का एक बी इडायरेक्शनल एनकोडर आर प्रतिनिधित्व प्राप्त करते हैं, जिसे आमतौर पर बीईआरटी के रूप में जाना जाता है। इसी तरह, डिकोडर इकाइयों को ढेर करके, हम G जनरेटिव P re- T रेनिंग यानी GPT प्राप्त कर सकते हैं। हमारे मामले में हम जीपीटी पर ध्यान केंद्रित कर रहे हैं। आइए GPT के संदर्भ में ट्रांसफर लर्निंग के बारे में सोचते हैं। जब हम किसी मॉडल को स्क्रैच से प्रशिक्षित करते हैं, तो यह आमतौर पर पर्याप्त मात्रा में डेटा की मांग करता है क्योंकि पैरामीटर शुरू में बेतरतीब ढंग से सेट किए जाते हैं। हालाँकि, एक ऐसे परिदृश्य की कल्पना करें जहाँ पैरामीटर हमारे लिए आवश्यक मानों के साथ संयोग से संरेखित हों। ऐसे मामलों में, हमें अपना वांछित परिणाम प्राप्त करने के लिए व्यापक डेटासेट की आवश्यकता नहीं होती है। जैसा कि समझा जाएगा, BERT और GPT का उपयोग ट्रांसफर लर्निंग कॉन्सेप्ट में किया जाता है।


GPT प्रशिक्षण इस प्रकार दो भागों में बांटा गया है। हमारे पास पूर्व-प्रशिक्षण भाग है जहां हम GPT आर्किटेक्चर को यह समझने के लिए प्रशिक्षित करते हैं कि भाषा क्या है और फिर फाइन ट्यूनिंग भाग जहां हम विशिष्ट भाषा कार्यों पर अच्छा प्रदर्शन करने के लिए GPT आर्किटेक्चर को और प्रशिक्षित करने के लिए ट्रांसफर लर्निंग का उपयोग करते हैं।


चित्र 2. अगले शब्द की भविष्यवाणी का नमूना

GPT की एक संरचना है जो यादृच्छिक शब्द अनुक्रम को इनपुट के रूप में लेती है और अगले सबसे उपयुक्त शब्द की भविष्यवाणी करती है। नमूना भविष्यवाणी चित्र 2 में देखी जा सकती है।


भाषा के मूलभूत पहलुओं को समझने के लिए भाषा मॉडलिंग को एक आदर्श आधार के रूप में चुना जाता है और इसे आसानी से ठीक किया जा सकता है। यह आमतौर पर स्व-पर्यवेक्षित कार्य के रूप में जाना जाता है क्योंकि वाक्य स्वयं इनपुट और आउटपुट लेबल दोनों के रूप में कार्य करते हैं।

चित्र 3. चैटजीपीटी आरेख — स्रोत


आइए चैटजीपीटी पर चलते हैं। जैसा कि चित्र 3 में देखा जा सकता है, संपूर्ण चैटजीपीटी प्रक्रिया को तीन प्रमुख चरणों में विभाजित किया जा सकता है। पहले चरण में, GPT मॉडल का उपयोग किया जाता है जिसे भाषा को समझने के लिए पूर्व-प्रशिक्षित किया गया है। अगले चरण में उपयोगकर्ता के संकेतों को प्रभावी ढंग से संसाधित करने और उन संकेतों के आधार पर उपयुक्त प्रतिक्रिया उत्पन्न करने के लिए मॉडल को ठीक करना शामिल है। इस प्रक्रिया को सुविधाजनक बनाने के लिए, लेबल किए गए डेटा को लेबलर्स को शामिल करके प्राप्त किया जाता है जो न केवल संकेत प्रदान करते हैं बल्कि प्रत्येक संकेत के लिए वांछित प्रतिक्रिया भी निर्दिष्ट करते हैं। यह GPT मॉडल के पर्यवेक्षित फ़ाइन-ट्यूनिंग में संलग्न होने की अनुमति देता है, क्योंकि इसमें इनपुट संकेत और संबंधित आउटपुट प्रतिक्रियाएँ दोनों होती हैं।


अगले चरण में, पर्यवेक्षित फ़ाइन-ट्यून किए गए मॉडल का उपयोग किया जाता है जो इसे पहले चरण से प्राप्त किया गया था। मॉडल के माध्यम से एक संकेत पारित किया जाता है, और कई प्रतिक्रियाएं उत्पन्न होती हैं। लेबलर तब इन प्रतिक्रियाओं की गुणवत्ता का मूल्यांकन और रैंक करता है। प्रत्येक उत्पन्न प्रतिक्रिया को एक संबंधित इनाम दिया जाता है, जिसका उपयोग एक अन्य GPT मॉडल को प्रशिक्षित करने के लिए किया जाता है जिसे पुरस्कार मॉडल के रूप में जाना जाता है। एक मॉडल होने के नाते, एक प्रारंभिक संकेत और इनपुट के रूप में प्रतिक्रियाओं में से एक और आउटपुट के रूप में एक इनाम उत्पन्न करके इनाम मॉडल कार्य करता है। यह इनाम प्रतिक्रिया की गुणवत्ता या अच्छाई की मात्रा निर्धारित करता है।


तीसरे चरण में, एक अनदेखे संकेत को लिया जाएगा और पर्यवेक्षित फ़ाइन-ट्यून किए गए मॉडल की प्रतिकृति के माध्यम से पारित किया जाएगा। यह एक प्रतिक्रिया उत्पन्न करेगा, जिसका रैंक या गुणवत्ता निर्धारित करने के लिए एक पुरस्कार मॉडल का उपयोग करके मूल्यांकन किया जाएगा। प्राप्त रैंक का उपयोग हमारे पहले से परिष्कृत मॉडल को और अधिक परिष्कृत करने के लिए किया जाएगा। यह पीपीओ मॉडल के नुकसान फ़ंक्शन में रैंक को शामिल करके हासिल किया जाता है, जिससे मॉडल के मापदंडों को बैकप्रोपैजेशन के माध्यम से अपडेट किया जा सकता है। जो विशेष रूप से आकर्षक है वह यह है कि यह प्रक्रिया न केवल मॉडल को गैर विषैले व्यवहार प्रदर्शित करने में मदद करती है बल्कि इसे तथ्यात्मक प्रतिक्रिया उत्पन्न करने में भी सक्षम बनाती है। ऐसा इसलिए है क्योंकि प्रतिक्रिया की गुणवत्ता के आधार पर ही इनाम उत्पन्न किया गया था।

चैटएसक्यूएल

अब अजगर का उपयोग करके चैटजीपीटी के साथ एक प्रोजेक्ट बनाते हैं। इस परियोजना के लिए LangChain ढांचे का उपयोग किया जाता है।


हमारा उद्देश्य सादा पाठ का उपयोग करके हमारे डेटाबेस से जानकारी प्राप्त करना है। अपने काम में, हमने लक्ष्य डेटाबेस के रूप में MySQL का उपयोग किया। फिर भी, इस दृष्टिकोण का उपयोग अन्य डेटाबेस पर प्रश्न उत्पन्न करने के लिए भी किया जा सकता है। नमूना डेटाबेस नीचे दिखाया गया है।


सभी कोड यहां देखे जा सकते हैं ( https://github.com/ademakdogan/ChatSQL )

 +-----+--------------------------------------------------------+------------------------+-------------------+--------+------------------+ | ID | Title | Author | Genre | Height | Publisher | +-----+--------------------------------------------------------+------------------------+-------------------+--------+------------------+ | 1 | Fundamentals of Wavelets | Goswami, Jaideva | signal_processing | 228 | Wiley | | 2 | Data Smart | Foreman, John | data_science | 235 | Wiley | | 3 | God Created the Integers | Hawking, Stephen | mathematics | 197 | Penguin | | 4 | Superfreakonomics | Dubner, Stephen | economics | 179 | HarperCollins | | 5 | Orientalism | Said, Edward | history | 197 | Penguin | | 6 | Nature of Statistical Learning Theory, The | Vapnik, Vladimir | data_science | 230 | Springer | | 7 | Integration of the Indian States | Menon, VP | history | 217 | Orient Blackswan | | 8 | Drunkard's Walk, The | Mlodinow, Leonard | science | 197 | Penguin | | 9 | Image Processing & Mathematical Morphology | Shih, Frank | signal_processing | 241 | CRC | | 10 | How to Think Like Sherlock Holmes | Konnikova, Maria | psychology | 240 | Penguin | | 11 | Data Scientists at Work | Sebastian Gutierrez | data_science | 230 | Apress | | 12 | Slaughterhouse Five | Vonnegut, Kurt | fiction | 198 | Random House | | 13 | Birth of a Theorem | Villani, Cedric | mathematics | 234 | Bodley Head | | 14 | Structure & Interpretation of Computer Programs | Sussman, Gerald | computer_science | 240 | MIT Press | | 15 | Age of Wrath, The | Eraly, Abraham | history | 238 | Penguin | | 16 | Trial, The | Kafka, Frank | fiction | 198 | Random House | | 17 | Statistical Decision Theory' | Pratt, John | data_science | 236 | MIT Press | | 18 | Data Mining Handbook | Nisbet, Robert | data_science | 242 | Apress | | 19 | New Machiavelli, The | Wells, HG | fiction | 180 | Penguin | | 20 | Physics & Philosophy | Heisenberg, Werner | science | 197 | Penguin | | 21 | Making Software | Oram, Andy | computer_science | 232 | O'Reilly | | . | ....... | ....... | .... | ... | .... | | . | ....... | ....... | .... | ... | .... |

चैटएसक्यूएल में दो मुख्य भाग होते हैं। सबसे पहले, mysql प्रश्नों को दिए गए सादे पाठ से ChatGPT के माध्यम से उत्पन्न किया जाता है। इन उत्पन्न प्रश्नों को क्रियान्वित किया जाता है। दूसरे चरण में, डेटाबेस में लौटाए गए परिणामों का मूल्यांकन किया जाता है। इस स्तर पर, परिणाम या तो सीधे उपयोगकर्ता को प्रस्तुत किए जा सकते हैं या आगे के विश्लेषण और व्याख्या के लिए चैटजीपीटी को वापस भेजे जा सकते हैं। तो आप अपने डेटाबेस के बारे में ChatGPT से चैट कर सकते हैं।


मान लीजिए कि उपयोगकर्ता चाहता है "मुझे पुस्तक प्रकार की कथा दिखाएं, जिसकी ऊंचाई 175 से अधिक और 178 से कम है। लेखक को 'डॉयल, आर्थर कॉनन' नहीं होना चाहिए।" तो इस मामले में निम्न आदेश का उपयोग किया जा सकता है।


 python3 chatsql.py -p 'Show me the book type fiction which they height bigger than 175 and smaller than 178. The author shouldn't be 'Doyle, Arthur Conan'. '


परिणामस्वरूप, निम्नलिखित जानकारी प्राप्त होती है।

 CHATGPT QUERY------------------: SELECT * FROM bt WHERE Genre = 'Fiction' AND Height > 175 AND Height < 178 AND Author != 'Doyle, Arthur Conan' RAW RESULT------------------: [(32, 'Pillars of the Earth, The', 'Follett, Ken', 'fiction', 176, 'Random House'), (37, 'Veteran, The', 'Forsyth, Frederick', 'fiction', 177, 'Transworld'), (38, 'False Impressions', 'Archer, Jeffery', 'fiction', 177, 'Pan'), (72, 'Prisoner of Birth, A', 'Archer, Jeffery', 'fiction', 176, 'Pan'), (87, 'City of Joy, The', 'Lapierre, Dominique', 'fiction', 177, 'vikas'), (128, 'Rosy is My Relative', 'Durrell, Gerald', 'fiction', 176, 'nan')] PROCESSED RESULT------------------ : The books 'Pillars of the Earth, The' by Ken Follett, 'Veteran, The' by Frederick Forsyth, 'False Impressions' by Jeffery Archer, 'Prisoner of Birth, A' by Jeffery Archer, 'City of Joy, The' by Dominique Lapierre, and 'Rosy is My Relative' by Gerald Durrell are all fiction books with 176 or 177 pages published by Random House, Transworld, Pan, Vikas, and Nan, respectively.


यदि आपके डेटाबेस कॉलम का नाम उचित है, तो चैटजीपीटी इन नामों को समझेगा और तदनुसार प्रश्नों का उत्तर देगा। हालाँकि, ऐसे उदाहरण हो सकते हैं जहाँ डेटाबेस में कॉलम के नाम सार्थक नहीं हैं या हो सकता है कि ChatGPT उनके संदर्भ को पूरी तरह से न समझ पाए। इसलिए, यह सुनिश्चित करने के लिए कि सिस्टम सही ढंग से कार्य करता है, डेटाबेस के बारे में पूर्व सूचना के साथ चैटजीपीटी प्रदान करना आवश्यक है। जानकारी जोड़ने के लिए Info.json फ़ाइल का उपयोग किया जा सकता है।

 +-----+--------------------------------------------------------+------------------------+-------------------+------+------------------+ | ID | aa | bb | cc | dd | ee | +-----+--------------------------------------------------------+------------------------+-------------------+------+------------------+ | 1 | Fundamentals of Wavelets | Goswami, Jaideva | signal_processing | 228 | Wiley | | 2 | Data Smart | Foreman, John | data_science | 235 | Wiley | | 3 | God Created the Integers | Hawking, Stephen | mathematics | 197 | Penguin | | 4 | Superfreakonomics | Dubner, Stephen | economics | 179 | HarperCollins | | 5 | Orientalism | Said, Edward | history | 197 | Penguin | | . | ....... | ....... | .... | ... | .... | | . | ....... | ....... | .... | ... | .... |

एक उदाहरण के रूप में, आइए नीचे के रूप में एक गलत नाम वाला डेटाबेस है। इस स्थिति में, डेटाबेस के बारे में आवश्यक जानकारी info.json फ़ाइल में डाली जाती है।


{"बीटी": "तालिका का नाम", "एए": "पुस्तक का शीर्षक", "बीबी": "पुस्तक का लेखक", "सीसी": "पुस्तक का प्रकार", "डीडी": "की ऊंचाई पुस्तक", "ईई": "पुस्तक प्रकाशक"}

और फिर उसी कमांड का उपयोग करें:

 python3 chatsql.py -p 'Show me the book type fiction which they height bigger than 175 and smaller than 178. The author shouldn't be 'Doyle, Arthur Conan'. '


भले ही डेटाबेस में कॉलम नाम खराब तरीके से चुने गए हों, चैटजीपीटी सही क्वेरी उत्पन्न करता है क्योंकि हम सही जानकारी प्रदान करते हैं

 {'query': "SELECT aa, bb, cc, dd FROM bt WHERE cc = 'fiction' AND dd > 175 AND dd < 178 AND bb != 'Doyle, Arthur Conan'", 'raw_result': "[('Pillars of the Earth, The', 'Follett, Ken', 'fiction', 176), ('Veteran, The', 'Forsyth, Frederick', 'fiction', 177), ('False Impressions', 'Archer, Jeffery', 'fiction', 177), ('Prisoner of Birth, A', 'Archer, Jeffery', 'fiction', 176), ('City of Joy, The', 'Lapierre, Dominique', 'fiction', 177), ('Rosy is My Relative', 'Durrell, Gerald', 'fiction', 176)]", 'processed_result': '\nThe books "Pillars of the Earth, The" by Ken Follett, "Veteran, The" by Frederick Forsyth, "False Impressions" by Jeffery Archer, "Prisoner of Birth, A" by Jeffery Archer, "City of Joy, The" by Dominique Lapierre and "Rosy is My Relative" by Gerald Durrell are all fiction and have page lengths of 176 or 177.'}


अगली परियोजना मुक्त मॉडल (लामा) के साथ संकेतों से प्रश्न (मोंगो, एसक्यूएल) उत्पन्न करने पर हो सकती है।


प्रोजेक्ट रेपो: https://github.com/ademakdogan/ChatSQL

जीथब: https://github.com/ademakdogan

लिंक्डिन : https://www.linkedin.com/in/adem-akdoğan-948334177/

संदर्भ

[1] ब्राउन, टीबी, मान, बी।, राइडर, एन।, सुब्बैया, एम।, कपलान, जे।, धारीवाल, पी। और अमोदी, डी। (2020)। भाषा मॉडल कम-शॉट सीखने वाले होते हैं। arXiv प्रीप्रिंट arXiv: 2005.14165।


[2] रैडफोर्ड, ए., वू, जे., चाइल्ड, आर., लुआन, डी., अमोदी, डी., सुतस्केवर, आई. (2019)। भाषा मॉडल अनियंत्रित मल्टीटास्क शिक्षार्थी हैं। ओपनएआई ब्लॉग।


[3] वासवानी, ए., शज़ीर, एन., परमार, एन., उस्ज़कोरिट, जे., जोन्स, एल., गोमेज़, एएन और पोलोसुखिन, आई. (2017)। आपको केवल ध्यान देने की आवश्यकता है। तंत्रिका सूचना प्रसंस्करण प्रणालियों में अग्रिम (पीपी। 5998-6008)।


[4] डेविन, जे., चांग, मेगावाट, ली, के., और टुटानोवा, के. (2019)। BERT: भाषा की समझ के लिए डीप बाईडायरेक्शनल ट्रांसफॉर्मर्स का प्री-ट्रेनिंग। कम्प्यूटेशनल भाषाविज्ञान के लिए एसोसिएशन के उत्तर अमेरिकी अध्याय के 2019 सम्मेलन की कार्यवाही में: मानव भाषा प्रौद्योगिकी (वॉल्यूम। 1, पीपी। 4171-4186)।


[5] लुईस, एम।, लियू, वाई।, गोयल, एन।, ग़ज़विनिनेजाद, एम।, मोहम्मद, ए।, लेवी, ओ।, और ज़ेटलमॉयर, एल। (2019)। बार्ट: प्राकृतिक भाषा पीढ़ी, अनुवाद और समझ के लिए अनुक्रम-से-अनुक्रम पूर्व-प्रशिक्षण को अस्वीकार करना। arXiv प्रीप्रिंट arXiv: 1910.13461।


[6] रैफेल, सी., शज़ीर, एन., रॉबर्ट्स, ए., ली, के., नारंग, एस., मटेना, एम.,… और लियू, पीजे (2019)। एकीकृत टेक्स्ट-टू-टेक्स्ट ट्रांसफॉर्मर के साथ ट्रांसफर लर्निंग की सीमाओं की खोज करना। arXiv प्रीप्रिंट arXiv: 1910.10683।


[7] वासवानी, ए, और एट अल। (2017)। ट्रांसफॉर्मर-एक्सएल: एक निश्चित लंबाई के संदर्भ से परे चौकस भाषा मॉडल। arXiv प्रीप्रिंट arXiv: 1901.02860।