paint-brush
आइए RAG और OpenWebUI में आपकी कंपनी के दस्तावेज़ों का उपयोग करके एक ग्राहक सहायता चैटबॉट बनाएंद्वारा@hostkey
1,675 रीडिंग
1,675 रीडिंग

आइए RAG और OpenWebUI में आपकी कंपनी के दस्तावेज़ों का उपयोग करके एक ग्राहक सहायता चैटबॉट बनाएं

द्वारा Hostkey.com8m2024/07/09
Read on Terminal Reader

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

ओपनवेबयूआई व्यापक कोडिंग अनुभव के बिना भी आकर्षक और उपयोगी चैटबॉट बनाने का एक अनूठा अवसर प्रदान करता है। इस लेख में, हम उपयोगकर्ता के सवालों के जवाब देकर हमारी फ्रंट-लाइन टीम की सहायता करने के लिए डिज़ाइन किए गए तकनीकी सहायता चैटबॉट बनाने की अपनी यात्रा साझा करेंगे। यहाँ इसके कार्यों का चरण-दर-चरण सारांश दिया गया है।
featured image - आइए RAG और OpenWebUI में आपकी कंपनी के दस्तावेज़ों का उपयोग करके एक ग्राहक सहायता चैटबॉट बनाएं
Hostkey.com HackerNoon profile picture
0-item

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


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


इस लेख में, हम एक तकनीकी सहायता चैटबॉट बनाने की अपनी यात्रा को साझा करेंगे, जिसे उपयोगकर्ताओं के प्रश्नों का उत्तर देकर हमारी फ्रंट-लाइन टीम की सहायता करने के लिए डिज़ाइन किया गया है (और अंततः हमारी टीम का हिस्सा बन गया है)।


तत्काल तैनाती के साथ GPU सर्वर या पेशेवर-ग्रेड NVIDIA Tesla A100 / H100 80Gb या A5000 / A4000 कार्ड के साथ कस्टम कॉन्फ़िगरेशन वाला सर्वर किराए पर लें। गेमिंग RTX4090 कार्ड वाले GPU सर्वर भी उपलब्ध हैं।


प्रस्थान बिंदू

हमारे पास MkDocs के लिए मटीरियल का उपयोग करके बनाया गया उपयोगकर्ता दस्तावेज़ है। इसके परिणामस्वरूप Markdown स्वरूपण के साथ .md फ़ाइलों वाली निर्देशिका संरचना बनती है। हमारे पास llama3-8b-instruct मॉडल लोड किए गए OpenWebUI और Ollama सेटअप भी है।


परियोजना लक्ष्य:


  1. एक कस्टम चैटबॉट विकसित करें: यह चैटबॉट उपयोगकर्ताओं के साथ बातचीत करेगा और हमारे दस्तावेज़ों के आधार पर जानकारी प्रदान करेगा।
  2. प्रलेखन को LLM के लिए उपयुक्त प्रारूप में परिवर्तित करें: हमें अपने मार्कडाउन प्रलेखन को ऐसे प्रारूप में परिवर्तित करने की आवश्यकता है, जिसे रिट्रीवल ऑगमेंटेड जेनरेशन (RAG) के लिए LLM द्वारा कुशलतापूर्वक संसाधित किया जा सके।
  3. डेटा अद्यतन और परिवर्धन सक्षम करें: सिस्टम को हमारे दस्तावेज़ों वाले वेक्टर डेटाबेस में निरंतर अद्यतन और परिवर्धन की अनुमति देनी चाहिए।
  4. प्रश्न-उत्तर पर ध्यान दें: चैटबॉट को मुख्य रूप से प्रश्न-उत्तर प्रणाली के रूप में कार्य करना चाहिए और गैर-आईटी-संबंधित बातचीत में शामिल होने से बचना चाहिए।
  5. स्रोत लिंक प्रदान करें: जब भी संभव हो, चैटबॉट को प्रदान की गई जानकारी के लिए मूल दस्तावेज़ स्रोतों से लिंक करना चाहिए।
  6. प्रश्न फ़िल्टरिंग लागू करें: हमें चैटबॉट के लिए प्रश्न प्रतिबंध कॉन्फ़िगर करने की क्षमता की आवश्यकता है। उदाहरण के लिए, हम इसे भौगोलिक स्थान के आधार पर प्रश्नों का उत्तर देने से रोकना चाह सकते हैं।

सरल कार्यान्वयन

हमारा आरंभिक प्रयास केवल अपने मौजूदा दस्तावेज़ को उसके मूल मार्कडाउन प्रारूप में लोड करना और बिना किसी संशोधन के लामा3 मॉडल का उपयोग करना था। परिणाम, इसे हल्के ढंग से कहें तो, निराशाजनक थे:


पहला: हमारी मार्कडाउन फ़ाइलों में इमेज टैग, फ़ुटनोट, कोड ब्लॉक, बोल्ड और इटैलिक फ़ॉर्मेटिंग, आंतरिक और बाहरी लिंक, आइकन और यहां तक कि बटन के लिए " ** " निर्माण जैसे विभिन्न तत्व शामिल हैं। यह सभी अतिरिक्त "शोर" दस्तावेज़ को प्रोसेसिंग के लिए टुकड़ों में तोड़ते समय समस्याएँ पैदा करते हैं।


दूसरा: वाक्य-ट्रांसफॉर्मर/ऑल-मिनीएलएम-एल6-वी2 मॉडल, जिसे ओपनवेबयूआई 384-आयामी वेक्टर स्पेस (क्लस्टरिंग और सिमेंटिक सर्च जैसे आरएजी कार्यों के लिए आवश्यक) में वाक्यों और पैराग्राफों का प्रतिनिधित्व करने के लिए डिफ़ॉल्ट रूप से उपयोग करता है, मुख्य रूप से अंग्रेजी पर प्रशिक्षित है। हम चाहते हैं कि हमारा बॉट अंततः अन्य भाषाओं का भी समर्थन करे।


तीसरा: जबकि लामा3 एक निर्देश मॉडल है, फिर भी इसे उपयोगकर्ता प्रश्नों के उत्तर देने पर ध्यान केंद्रित करने के बजाय ऑफ-टॉपिक चर्चाओं में चलाया जा सकता है। 70b मॉडल अधिक उपयुक्त हो सकता है, लेकिन इसके लिए 40GB वीडियो मेमोरी वाले GPU की आवश्यकता होती है, जबकि लामा3-8b केवल 8GB वाले GPU पर चल सकता है।

जबकि तीसरे मुद्दे को संभावित रूप से एक कस्टम मॉडल (ओपनएआई शब्दावली में एजेंट) बनाकर संबोधित किया जा सकता है, पहले दो के लिए अधिक महत्वपूर्ण वर्कअराउंड की आवश्यकता होती है। यहाँ हम अब तक क्या लेकर आए हैं।

चरण दर चरण: OpenWebUI में तकनीकी सहायता चैटबॉट सेट अप करना

सबसे पहले, हम दस्तावेज़ को हमारे RAG (रिट्रीवल ऑगमेंटेड जेनरेशन) सिस्टम में लोड करने के लिए उपयुक्त प्रारूप में बदल देंगे। हमने इस प्रक्रिया को स्वचालित करने के लिए ai_text_generator नामक एक शक्तिशाली बैश स्क्रिप्ट बनाई है।


स्क्रिप्ट सभी डॉक्यूमेंटेशन निर्देशिकाओं को पार करती है और मार्कडाउन मार्कअप को हटाने और बदलने के लिए sed, awk और perl के भीतर नियमित अभिव्यक्तियों का उपयोग करती है जो RAG द्वारा आवश्यक नहीं है। अंत में, यह प्रत्येक दस्तावेज़ के अंत में https://hostkey.com/documentation पर होस्ट किए गए मूल दस्तावेज़ के लिए एक लिंक जोड़ता है।



यह स्क्रिप्ट OpenWebUI में RAG सिस्टम के साथ उपयोग के लिए आपके दस्तावेज़ को सावधानीपूर्वक तैयार करती है। यहाँ इसके कार्यों का चरण-दर-चरण सारांश दिया गया है:


  • यूआरएल जनरेशन: यह प्रत्येक डॉक्यूमेंटेशन फ़ाइल के लिए एक पूर्ण यूआरएल जनरेट करता है।
  • छवि मार्कअप हटाना: छवियों से संबंधित सभी मार्कडाउन मार्कअप हटाता है।
  • एनोटेशन हटाना: पाठ से सभी एनोटेशन हटाता है। बटन फ़ॉर्मेटिंग: मार्कडाउन के ** और ** सिंटैक्स को [ ] में बदल देता है, प्रभावी रूप से उन्हें बटन के रूप में फ़ॉर्मेट करता है।
  • शीर्षक हटाना: "> " से शुरू होने वाली पंक्तियों को हटाता है, जिनका उपयोग संभवतः रूपरेखा या विषय-सूची बनाने के लिए किया जाता है।
  • चिह्न हटाना: चिह्नों का प्रतिनिधित्व करने वाले किसी भी मार्कडाउन मार्कअप या कोड को हटाता है।
  • बोल्ड टेक्स्ट फ़ॉर्मेटिंग: मार्कडाउन के बोल्ड टेक्स्ट फ़ॉर्मेटिंग को हटाता है।
  • लिंक संशोधन: बाह्य लिंक को संरक्षित करते हुए आंतरिक लिंक को हटाता है।
  • ईमेल लिंक स्वरूपण: ईमेल पतों के लिंक को पुनः स्वरूपित करता है।
  • रिक्त स्थान सामान्यीकरण: प्रत्येक पंक्ति के आरंभ में प्रथम वर्ण तक अतिरिक्त रिक्त स्थान को हटाता है।
  • लाइन एंडिंग रूपांतरण: CRLF (विंडोज़ लाइन एंडिंग) को UNIX प्रारूप (LF) में रूपांतरित करता है।
  • रिक्त पंक्ति न्यूनीकरण: एक से अधिक लगातार रिक्त पंक्तियों को हटाता है।
  • URL जोड़ना: प्रत्येक संसाधित फ़ाइल के अंत में उत्पन्न URL जोड़ता है।


स्क्रिप्ट चलाने के बाद, ai_data निर्देशिका में OpenWebUI के RAG सिस्टम में लोड करने के लिए तैयार फ़ाइलों का एक सेट होगा।



इसके बाद, हमें अपने दस्तावेज़ वेक्टर डेटाबेस और ओलामा एलएलएम के साथ काम करने के लिए ओपनवेबयूआई में एक नया मॉडल जोड़ने की आवश्यकता है। इस मॉडल को केवल अंग्रेजी में ही नहीं, बल्कि अधिक अनौपचारिक, 'आप' (ты) टोन का समर्थन करना चाहिए। हम भविष्य में तुर्की जैसी अन्य भाषाओं के लिए समर्थन जोड़ने की योजना बना रहे हैं।


  1. आरंभ करने के लिए, हम एडमिन पैनल - सेटिंग्स - दस्तावेज़ पर जाएँगे। एम्बेडिंग मॉडल फ़ील्ड में, हम वाक्य-ट्रांसफ़ॉर्मर्स/ऑल-मिनीएलएम-एल12-वी2 का चयन करेंगे। हमने इस सूची (https://www.sbert.net/docs/sentence_transformer/pretrained_models.html) से सभी अनुशंसित मॉडलों का परीक्षण किया है और पाया है कि यह सबसे उपयुक्त है।

  2. हम इसे डाउनलोड और इंस्टॉल करने के लिए एम्बेडिंग मॉडल फ़ील्ड के बगल में स्थित डाउनलोड आइकन पर क्लिक करेंगे।

  3. तुरंत, हम RAG पैरामीटर सेट करेंगे:

    • शीर्ष K = 10: इसका मतलब है कि सिस्टम प्रतिक्रिया उत्पन्न करते समय शीर्ष 10 सबसे प्रासंगिक दस्तावेजों पर विचार करेगा।

    • खंड आकार = 1024: दस्तावेजों को प्रसंस्करण के लिए 1024 टोकन के खंडों में विभाजित किया जाएगा।

    • चंक ओवरलैप = 100: लगातार चंक के बीच 100-टोकन ओवरलैप होगा।



उसके बाद, आप वर्कस्पेस - दस्तावेज़ अनुभाग पर जा सकते हैं और हमारे दस्तावेज़ अपलोड कर सकते हैं। बाद में मॉडल या API अनुरोधों से कनेक्ट करना आसान बनाने के लिए इसे एक विशिष्ट संग्रह टैग (हमारे मामले में, hostkey_en) देना एक अच्छा विचार है।



इसके बाद, हम अपने चैटबॉट के लिए एक कस्टम मॉडल बनाएंगे। ऐसा करने के लिए, हम वर्कस्पेस - मॉडल पर वापस जाएंगे और प्लस आइकन पर क्लिक करेंगे।


हम अपने चैटबॉट को एक नाम देंगे और आधार मॉडल का चयन करेंगे (हमारे मामले में, llama3-latest)।


फिर, हम सिस्टम प्रॉम्प्ट को परिभाषित करेंगे। यह चैटबॉट को बताता है कि उसे खुद को कैसे देखना है और कैसे व्यवहार करना है। यह इसकी भूमिका, सीमाओं और हमारे वांछित परिणामों को रेखांकित करता है।


यहां वह सिस्टम प्रॉम्प्ट है जिसे हमने अपने तकनीकी सहायता चैटबॉट के लिए डिज़ाइन किया है:


You are HOSTKEY an IT Support Assistant Bot, focused on providing users with IT support based on the content from knowledge base. Stay in character and maintain your focus on IT support, avoiding unrelated activities such as creative writing or engaging in non-IT discussions.


If you cannot find relevant information in the knowledge base or if the user asks non-related questions that are not part of the knowledge base, do not attempt to answer and inform the user that you are unable to assist and print text "Visit https://hostkey.com/documentation for more information" at the end.


Provide short step-by-step instructions and external links


Provide a link to relevant doc page about user question started with 'See more information here:'Add text "Visit https://hostkey.com/documentation for more information" at the end.


Example of answer: " User: How can I cancel my server?


Bot:


You can cancel your server at any time. To do this, you need to access the Invapi control panel and follow these steps:

- Go to the "Billing" tab in the specific server management menu.

- Click the [Cancel service] button.

- Describe the reason for the cancellation and select its type.

- Click the [Confirm termination] button.


Please note that for immediate cancellation, we will not refund the hours of actual server usage, including the time to provision the server itself, order software, and process the cancellation request (up to 12 hours). The unused balance will be returned to your credit balance. Withdrawal of funds from the credit balance will be made in accordance with our refund policy.


You can cancel the service cancellation request in the Billing tab using the [Revoke] button.

Additionally, if you need to cancel a service that includes an OS/software license or has a customized/non-standard configuration, please contact us via a ticketing system for manual refund processing.


See more information here: https://hostkey.com/documentation/billing/services_cancellation/ "


इसके बाद, हम आवश्यक दस्तावेज़ संग्रह को कनेक्ट करेंगे। ज्ञान अनुभाग में, हम दस्तावेज़ चुनें बटन पर क्लिक करेंगे और उसके टैग के आधार पर हमें जिस संग्रह की आवश्यकता है उसे चुनेंगे।


तत्काल तैनाती के साथ GPU सर्वर या पेशेवर-ग्रेड NVIDIA Tesla A100 / H100 80Gb या A5000 / A4000 कार्ड के साथ कस्टम कॉन्फ़िगरेशन वाला सर्वर किराए पर लें। गेमिंग RTX4090 कार्ड वाले GPU सर्वर भी उपलब्ध हैं।



हमें एडवांस्ड पैरामीटर्स टैब के अंतर्गत छिपे कुछ अतिरिक्त पैरामीटर्स को भी कॉन्फ़िगर करना होगा। शो पर क्लिक करने से ये सेटिंग्स सामने आ जाएँगी। हम तापमान को 0.3 और संदर्भ लंबाई को 4089 पर सेट करेंगे।



अंत में, हम अपना कस्टम तकनीकी सहायता चैटबॉट मॉडल बनाने के लिए सेव एंड अपडेट पर क्लिक करते हैं।


और अब यह हो गया! हमारा चैटबॉट काम करने और उपयोगकर्ता के अनुरोधों को संभालने के लिए तैयार है। यह विनम्र, धैर्यवान और 24/7 उपलब्ध है।

ओपनवेबयूआई में आरएजी के साथ काम करने के लिए सुझाव

ध्यान में रखने योग्य कुछ महत्वपूर्ण सुझाव यहां दिए गए हैं:

  1. यदि आप RAG में बड़ी संख्या में दस्तावेजों के साथ काम कर रहे हैं, तो GPU समर्थन के साथ OpenWebUI स्थापित करना अत्यधिक अनुशंसित है (शाखा open-webui:cuda)।
  2. एम्बेडिंग मॉडल (स्विचिंग, लोडिंग, आदि) में किसी भी संशोधन के लिए आपको अपने दस्तावेज़ों को वेक्टर डेटाबेस में पुनः अनुक्रमित करना होगा। RAG पैरामीटर बदलने से इसकी आवश्यकता नहीं होती है।
  3. दस्तावेज़ जोड़ते या हटाते समय, हमेशा अपने कस्टम मॉडल में जाएँ, उन दस्तावेज़ों के संग्रह को हटाएँ, और उन्हें वापस जोड़ें। अन्यथा, आपकी खोज सही ढंग से काम नहीं कर सकती है या काफी कम प्रभावी होगी। यदि आपका बॉट गलत उत्तर दे रहा है, लेकिन आवश्यक जानकारी वाला दस्तावेज़ नीचे की सूची में दिखाई देता है, तो यह संभवतः समस्या है।
  4. जबकि ओपनवेबयूआई आरएजी (पीडीएफ, सीएसवी, आरएसटी, एक्सएमएल, एमडी, ईपब, डॉक, डॉक्स, एक्सएलएस, एक्सएलएसएक्स, पीपीटी, पीपीटी, टीएक्सटी) बनाने के लिए विभिन्न प्रारूपों को पहचानता है, इष्टतम प्रदर्शन के लिए दस्तावेजों को सादे पाठ के रूप में अपलोड करना सबसे अच्छा अभ्यास है।
  5. हाइब्रिड सर्च से परिणाम बेहतर हो सकते हैं, लेकिन यह संसाधन-गहन है और शक्तिशाली GPU पर भी प्रतिक्रिया समय (20-30-40 सेकंड या उससे अधिक) को काफी हद तक बढ़ा सकता है। यह एक ज्ञात समस्या है जिसके समाधान पर डेवलपर्स काम कर रहे हैं।



अब जबकि हमने चैटबॉट का परीक्षण कर लिया है, अगला कदम इसे हमारी कंपनी की मौजूदा चैट प्रणाली में एकीकृत करना है। OpenWebUI एक API प्रदान करता है और Ollama के प्रॉक्सी के रूप में कार्य कर सकता है, जिससे इसकी अपनी अनूठी विशेषताएं जुड़ जाती हैं। हालाँकि, दस्तावेज़ीकरण अभी भी कम है, जिससे एकीकरण थोड़ा चुनौतीपूर्ण हो गया है।


कोड और कमिट इतिहास की जांच करके, हमने API अनुरोधों को संरचित करने के तरीके के बारे में कुछ जानकारी प्राप्त की है, लेकिन यह अभी भी अपेक्षा के अनुसार काम नहीं कर रहा है। हम कस्टम मॉडल को कॉल करने में कामयाब रहे हैं, लेकिन RAG कार्यक्षमता के बिना।

हम आगामी रिलीज में डेवलपर्स द्वारा वादा किए गए फीचर्स का बेसब्री से इंतजार कर रहे हैं, जिनमें RAG, वेब सर्च और विस्तृत उदाहरण और विवरण शामिल हैं।


परीक्षण प्रक्रिया में हमारे दस्तावेज़ीकरण में कुछ विसंगतियां और अतिरेक भी सामने आए। यह चैटबॉट के प्रदर्शन को बढ़ाने और हमारे दस्तावेज़ीकरण की समग्र स्पष्टता और सटीकता में सुधार करने का अवसर प्रस्तुत करता है।


तत्काल तैनाती के साथ GPU सर्वर या पेशेवर-ग्रेड NVIDIA Tesla A100 / H100 80Gb या A5000 / A4000 कार्ड के साथ कस्टम कॉन्फ़िगरेशन वाला सर्वर किराए पर लें। गेमिंग RTX4090 कार्ड वाले GPU सर्वर भी उपलब्ध हैं।