paint-brush
আসুন OpenWebUI-তে RAG এবং আপনার কোম্পানির ডকুমেন্টেশন ব্যবহার করে একটি গ্রাহক সহায়তা চ্যাটবট তৈরি করিদ্বারা@hostkey
1,363 পড়া
1,363 পড়া

আসুন OpenWebUI-তে RAG এবং আপনার কোম্পানির ডকুমেন্টেশন ব্যবহার করে একটি গ্রাহক সহায়তা চ্যাটবট তৈরি করি

দ্বারা Hostkey.com8m2024/07/09
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

OpenWebUI বিস্তৃত কোডিং অভিজ্ঞতা ছাড়াই আকর্ষণীয় এবং দরকারী চ্যাটবট তৈরি করার একটি অনন্য সুযোগ অফার করে। এই নিবন্ধে, আমরা ব্যবহারকারীর প্রশ্নের উত্তর দিয়ে আমাদের ফ্রন্ট-লাইন টিমকে সহায়তা করার জন্য ডিজাইন করা একটি প্রযুক্তিগত সহায়তা চ্যাটবট তৈরির যাত্রা শেয়ার করব। এখানে এর কর্মের একটি ধাপে ধাপে সংক্ষিপ্তসার রয়েছে।
featured image - আসুন OpenWebUI-তে RAG এবং আপনার কোম্পানির ডকুমেন্টেশন ব্যবহার করে একটি গ্রাহক সহায়তা চ্যাটবট তৈরি করি
Hostkey.com HackerNoon profile picture
0-item

OpenWebUI হল একটি ব্যাপক মিডিয়া প্ল্যাটফর্ম যেখানে AI টুলগুলির একটি স্যুট রয়েছে: OpenAI, Ollama, Automatic1111, ComfyUI, Whisper API, কাস্টম মডেল প্রশিক্ষণ, ChromaDB এর সাথে ল্যাংচেইন-ভিত্তিক RAG, হাইব্রিড BM25/ওয়েব অনুসন্ধান এবং আরও অনেক কিছু।


যদিও এই সমস্ত কিছু সময়ের জন্য উপলব্ধ, নথিভুক্ত এবং পাইথন প্রোগ্রামিং জ্ঞানের সাথে বাস্তবায়নযোগ্য, OpenWebUI বিস্তৃত কোডিং অভিজ্ঞতা ছাড়াই আকর্ষণীয় এবং দরকারী চ্যাটবট তৈরি করার একটি অনন্য সুযোগ প্রদান করে।


এই নিবন্ধে, আমরা একটি প্রযুক্তিগত সহায়তা চ্যাটবট তৈরির আমাদের যাত্রা ভাগ করব যা ব্যবহারকারীর প্রশ্নের উত্তর দিয়ে আমাদের ফ্রন্ট-লাইন টিমকে সহায়তা করার জন্য ডিজাইন করা হয়েছে (এবং অবশেষে আমাদের দলের অংশ হয়ে উঠবে)।


তাত্ক্ষণিক স্থাপনার সাথে GPU সার্ভার ভাড়া করুন বা পেশাদার-গ্রেড NVIDIA Tesla A100 / H100 80Gb বা A5000 / A4000 কার্ড সহ একটি কাস্টম কনফিগারেশন সহ একটি সার্ভার। গেমিং RTX4090 কার্ড সহ GPU সার্ভারগুলিও উপলব্ধ।


শুরু

আমাদের কাছে MkDocs-এর জন্য উপাদান ব্যবহার করে নির্মিত ব্যবহারকারীর ডকুমেন্টেশন রয়েছে। এর ফলে মার্কডাউন ফরম্যাটিং সহ .md ফাইল রয়েছে এমন একটি ডিরেক্টরি কাঠামোতে পরিণত হয়। আমাদের কাছে llama3-8b-নির্দেশনা মডেল লোড সহ একটি স্থাপন করা OpenWebUI এবং Ollama সেটআপ রয়েছে।


প্রকল্পের লক্ষ্য:


  1. একটি কাস্টম চ্যাটবট বিকাশ করুন: এই চ্যাটবট ব্যবহারকারীদের সাথে যোগাযোগ করবে এবং আমাদের ডকুমেন্টেশনের উপর ভিত্তি করে তথ্য প্রদান করবে।
  2. LLM-এর জন্য উপযুক্ত একটি বিন্যাসে ডকুমেন্টেশন রূপান্তর করুন: আমাদের মার্কডাউন ডকুমেন্টেশনকে একটি বিন্যাসে রূপান্তর করতে হবে যা পুনরুদ্ধার অগমেন্টেড জেনারেশন (RAG) এর জন্য এলএলএম দ্বারা দক্ষতার সাথে প্রক্রিয়া করা যেতে পারে।
  3. ডেটা আপডেট এবং সংযোজন সক্ষম করুন: সিস্টেমটি আমাদের ডকুমেন্টেশন সহ ভেক্টর ডাটাবেসে চলমান আপডেট এবং সংযোজনের অনুমতি দেবে।
  4. প্রশ্নের উত্তরে ফোকাস করুন: চ্যাটবট প্রাথমিকভাবে একটি প্রশ্ন-উত্তর সিস্টেম হিসাবে কাজ করা উচিত এবং অ-আইটি-সম্পর্কিত কথোপকথনে জড়িত হওয়া এড়ানো উচিত।
  5. উত্স লিঙ্কগুলি প্রদান করুন: যখনই সম্ভব, চ্যাটবটকে প্রদত্ত তথ্যের জন্য মূল ডকুমেন্টেশন উত্সগুলির সাথে লিঙ্ক করা উচিত।
  6. প্রশ্ন ফিল্টারিং প্রয়োগ করুন: আমাদের চ্যাটবটের জন্য প্রশ্ন সীমাবদ্ধতা কনফিগার করার ক্ষমতা প্রয়োজন। উদাহরণস্বরূপ, আমরা ভৌগলিক অবস্থানের উপর ভিত্তি করে প্রশ্নের উত্তর দেওয়া থেকে এটিকে আটকাতে চাই।

নিষ্পাপ বাস্তবায়ন

আমাদের প্রাথমিক প্রচেষ্টা ছিল কেবলমাত্র আমাদের বিদ্যমান ডকুমেন্টেশনগুলিকে মূল মার্কডাউন বিন্যাসে লোড করা এবং কোনো পরিবর্তন ছাড়াই llama3 মডেলটি ব্যবহার করা। ফলাফল, এটি হালকাভাবে বলতে, হতাশাজনক ছিল:


প্রথম: আমাদের মার্কডাউন ফাইলগুলিতে বিভিন্ন উপাদান রয়েছে যেমন ইমেজ ট্যাগ, পাদটীকা, কোড ব্লক, বোল্ড এবং ইটালিক ফরম্যাটিং, অভ্যন্তরীণ এবং বাহ্যিক লিঙ্ক, আইকন এবং এমনকি " ** " বোতামগুলির জন্য নির্মাণ। প্রক্রিয়াকরণের জন্য ডকুমেন্টেশনকে খণ্ডে ভাঙ্গার সময় এই সমস্ত অতিরিক্ত "গোলমাল" সমস্যা তৈরি করে।


দ্বিতীয়: বাক্য-ট্রান্সফরমার/all-MiniLM-L6-v2 মডেল, যেটি OpenWebUI ডিফল্টরূপে 384-মাত্রিক ভেক্টর স্পেসে বাক্য এবং অনুচ্ছেদ উপস্থাপনের জন্য ব্যবহার করে (ক্লাস্টারিং এবং শব্দার্থিক অনুসন্ধানের মতো RAG কাজগুলির জন্য অপরিহার্য), প্রাথমিকভাবে ইংরেজিতে প্রশিক্ষিত। . আমরা আমাদের বটকে শেষ পর্যন্ত অন্যান্য ভাষাকেও সমর্থন করতে চাই।


তৃতীয়: যদিও llama3 একটি নির্দেশনা মডেল, এটি এখনও ব্যবহারকারীর প্রশ্নের উত্তর দেওয়ার উপর ফোকাস করার পরিবর্তে বিষয়বস্তুর বাইরের আলোচনায় পরিচালিত হতে পারে। একটি 70b মডেল আরও উপযুক্ত হতে পারে, তবে এটির জন্য 40GB ভিডিও মেমরি সহ একটি GPU প্রয়োজন, যেখানে llama3-8b শুধুমাত্র 8GB সহ একটি GPU-তে চলতে পারে।

যদিও তৃতীয় সমস্যাটি সম্ভাব্যভাবে একটি কাস্টম মডেল (ওপেনএআই পরিভাষায় এজেন্ট) তৈরি করে সমাধান করা যেতে পারে, প্রথম দুটির জন্য আরও উল্লেখযোগ্য সমাধান প্রয়োজন। আমরা এ পর্যন্ত যা নিয়ে এসেছি তা এখানে।

ধাপে ধাপে: OpenWebUI-তে প্রযুক্তিগত সহায়তা চ্যাটবট সেট আপ করা

প্রথমত, আমরা ডকুমেন্টেশনটিকে আমাদের RAG (রিট্রিভাল অগমেন্টেড জেনারেশন) সিস্টেমে লোড করার জন্য উপযুক্ত বিন্যাসে রূপান্তর করব। আমরা এই প্রক্রিয়াটিকে স্বয়ংক্রিয় করতে ai_text_generator নামে একটি শক্তিশালী ব্যাশ স্ক্রিপ্ট তৈরি করেছি।


স্ক্রিপ্টটি সমস্ত ডকুমেন্টেশন ডিরেক্টরি অতিক্রম করে এবং sed, awk এবং পার্লের মধ্যে রেগুলার এক্সপ্রেশন ব্যবহার করে মার্কডাউন মার্কআপ অপসারণ এবং প্রতিস্থাপন করতে যা RAG-এর প্রয়োজন নেই। অবশেষে, এটি প্রতিটি নথির শেষে https://hostkey.com/documentation এ হোস্ট করা মূল ডকুমেন্টেশনের একটি লিঙ্ক যোগ করে।



এই স্ক্রিপ্টটি ওপেনওয়েবইউআই-তে একটি RAG সিস্টেমের সাথে ব্যবহারের জন্য আপনার ডকুমেন্টেশনকে সাবধানতার সাথে প্রস্তুত করে। এখানে এর কর্মের একটি ধাপে ধাপে সংক্ষিপ্তসার দেওয়া হল:


  • URL জেনারেশন: এটি প্রতিটি ডকুমেন্টেশন ফাইলের জন্য একটি সম্পূর্ণ URL তৈরি করে।
  • ইমেজ মার্কআপ রিমুভাল: ইমেজ সম্পর্কিত সমস্ত মার্কডাউন মার্কআপ সরিয়ে দেয়।
  • টীকা মুছে ফেলা: পাঠ্য থেকে সমস্ত টীকা বের করে দেয়। বোতাম বিন্যাস: মার্কডাউনের ** এবং ** সিনট্যাক্সকে [ ]-এ রূপান্তরিত করে, কার্যকরভাবে বোতাম হিসেবে বিন্যাস করে।
  • শিরোনাম অপসারণ: "> " দিয়ে শুরু হওয়া লাইনগুলি মুছে দেয়, যা সম্ভবত একটি রূপরেখা বা বিষয়বস্তুর সারণী তৈরি করতে ব্যবহৃত হয়৷
  • আইকন অপসারণ: আইকন প্রতিনিধিত্ব করে এমন কোনো মার্কডাউন মার্কআপ বা কোড সরিয়ে দেয়।
  • বোল্ড টেক্সট ফরম্যাটিং: মার্কডাউনের বোল্ড টেক্সট ফরম্যাটিং সরিয়ে দেয়।
  • লিঙ্ক পরিবর্তন: বাহ্যিক লিঙ্কগুলি সংরক্ষণ করার সময় অভ্যন্তরীণ লিঙ্কগুলি মুছে দেয়।
  • ইমেল লিঙ্ক ফরম্যাটিং: ইমেল ঠিকানাগুলির লিঙ্কগুলিকে পুনরায় ফর্ম্যাট করে।
  • হোয়াইটস্পেস স্বাভাবিককরণ: প্রথম অক্ষর পর্যন্ত প্রতিটি লাইনের শুরুতে অতিরিক্ত স্পেস সরিয়ে দেয়।
  • লাইন এন্ডিং কনভার্সন: CRLF (উইন্ডোজ লাইন এন্ডিং) কে ইউনিক্স ফরম্যাটে (LF) রূপান্তর করে।
  • খালি লাইন রিডাকশন: একটার বেশি খালি লাইন দূর করে।
  • URL যুক্ত করা: প্রতিটি প্রক্রিয়াকৃত ফাইলের শেষে তৈরি করা URL যুক্ত করে।


স্ক্রিপ্ট চালানোর পরে, ai_data ডিরেক্টরিতে OpenWebUI এর RAG সিস্টেমে লোড করার জন্য প্রস্তুত ফাইলগুলির একটি সেট থাকবে।



এরপরে, আমাদের ডকুমেন্ট ভেক্টর ডাটাবেস এবং ওল্লামা এলএলএম-এর সাথে কাজ করার জন্য OpenWebUI-তে একটি নতুন মডেল যোগ করতে হবে। এই মডেলটিকে আরও নৈমিত্তিক, 'তুমি' (ты) টোন সমর্থন করা উচিত, শুধু ইংরেজিতে নয়। আমরা ভবিষ্যতে তুর্কি ভাষার মতো অন্যান্য ভাষার জন্য সমর্থন যোগ করার পরিকল্পনা করছি।


  1. শুরু করতে, আমরা অ্যাডমিন প্যানেল - সেটিংস - ডকুমেন্টে যাব। এমবেডিং মডেল ক্ষেত্রে, আমরা বাক্য-ট্রান্সফরমার/all-MiniLM-L12-v2 নির্বাচন করব। আমরা এই তালিকা থেকে প্রস্তাবিত সমস্ত মডেল পরীক্ষা করেছি (https://www.sbert.net/docs/sentence_transformer/pretrained_models.html) এবং এটিকে সবচেয়ে উপযুক্ত বলে মনে হয়েছে।

  2. আমরা এম্বেডিং মডেল ক্ষেত্রের পাশের ডাউনলোড আইকনে ক্লিক করে এটি ডাউনলোড এবং ইনস্টল করব।

  3. এখনই, আমরা RAG প্যারামিটার সেট আপ করব:

    • Top 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 উপলব্ধ।

OpenWebUI এ RAG এর সাথে কাজ করার জন্য টিপস

মনে রাখার জন্য এখানে কিছু গুরুত্বপূর্ণ টিপস রয়েছে:

  1. আপনি যদি RAG-তে প্রচুর সংখ্যক নথি নিয়ে কাজ করেন, তাহলে GPU সমর্থন (শাখা open-webui:cuda) সহ OpenWebUI ইনস্টল করার জন্য এটি অত্যন্ত সুপারিশ করা হয়।
  2. এমবেডিং মডেলের যেকোনো পরিবর্তন (সুইচিং, লোডিং, ইত্যাদি) আপনাকে ভেক্টর ডাটাবেসে আপনার নথিগুলিকে পুনরায় সূচী করতে হবে। RAG প্যারামিটার পরিবর্তন করার জন্য এটির প্রয়োজন নেই।
  3. দস্তাবেজগুলি যোগ করার বা সরানোর সময়, সর্বদা আপনার কাস্টম মডেলে যান, সেই নথিগুলির সংগ্রহ মুছুন এবং সেগুলিকে আবার যোগ করুন৷ অন্যথায়, আপনার অনুসন্ধান সঠিকভাবে কাজ নাও করতে পারে বা উল্লেখযোগ্যভাবে কম কার্যকর হবে৷ যদি আপনার বট ভুল উত্তর প্রদান করে তবে প্রয়োজনীয় তথ্য সহ ডকুমেন্টেশন নীচে তালিকায় প্রদর্শিত হয়, এটি সম্ভবত সমস্যা।
  4. যদিও OpenWebUI RAG (pdf, csv, rst, xml, md, epub, doc, docx, xls, xlsx, ppt, ppt, txt) তৈরির জন্য বিভিন্ন ফর্ম্যাটকে স্বীকৃতি দেয়, তখন সর্বোত্তম কার্য সম্পাদনের জন্য নথিগুলিকে প্লেইন টেক্সট হিসাবে আপলোড করা সর্বোত্তম অভ্যাস।
  5. যদিও হাইব্রিড অনুসন্ধান ফলাফল উন্নত করতে পারে, এটি সম্পদ-নিবিড় এবং একটি শক্তিশালী GPU-তেও প্রতিক্রিয়ার সময় (20-30-40 সেকেন্ড বা তার বেশি) উল্লেখযোগ্যভাবে বৃদ্ধি করতে পারে। এটি একটি সমাধান নিয়ে কাজ করা বিকাশকারীদের সাথে একটি পরিচিত সমস্যা।



এখন যেহেতু আমরা চ্যাটবট পরীক্ষা করেছি, পরবর্তী ধাপ হল এটিকে আমাদের কোম্পানির বিদ্যমান চ্যাট সিস্টেমে একীভূত করা। OpenWebUI একটি API অফার করে এবং এটির নিজস্ব অনন্য বৈশিষ্ট্য যোগ করে ওল্লামার প্রক্সি হিসেবে কাজ করতে পারে। যাইহোক, ডকুমেন্টেশনের এখনও অভাব রয়েছে, একীকরণকে কিছুটা চ্যালেঞ্জ করে তুলেছে।


কোড এবং কমিট ইতিহাস পরীক্ষা করে, আমরা API অনুরোধগুলিকে কীভাবে গঠন করতে হয় সে সম্পর্কে কিছু অন্তর্দৃষ্টি সংগ্রহ করেছি, কিন্তু এটি এখনও প্রত্যাশিতভাবে কাজ করছে না। আমরা কাস্টম মডেল কল করতে পরিচালিত করেছি, কিন্তু RAG কার্যকারিতা ছাড়াই।

আমরা আসন্ন রিলিজে বিকাশকারীদের প্রতিশ্রুত বৈশিষ্ট্যগুলির জন্য অধীর আগ্রহে অপেক্ষা করছি, যার মধ্যে রয়েছে RAG, ওয়েব অনুসন্ধান এবং বিস্তারিত উদাহরণ এবং বিবরণ৷


পরীক্ষার প্রক্রিয়াটি আমাদের ডকুমেন্টেশনে কিছু অসঙ্গতি এবং অপ্রয়োজনীয়তাও প্রকাশ করেছে। এটি চ্যাটবটের কার্যকারিতা উন্নত করার এবং আমাদের ডকুমেন্টেশনের সামগ্রিক স্বচ্ছতা এবং নির্ভুলতা উভয়েরই একটি সুযোগ উপস্থাপন করে।


তাত্ক্ষণিক স্থাপনার সাথে GPU সার্ভার ভাড়া করুন বা পেশাদার-গ্রেড NVIDIA Tesla A100 / H100 80Gb বা A5000 / A4000 কার্ড সহ একটি কাস্টম কনফিগারেশন সহ একটি সার্ভার। গেমিং RTX4090 কার্ড সহ GPU সার্ভারগুলিও উপলব্ধ।