GenAI Stack-এর রহস্য উন্মোচন
প্রথাগত সফটওয়্যার ডিজাইন ডিটারমিনিজম (determinism)-এর ওপর নির্ভর করে। আপনি একটি ইনপুট পাঠান, একটি স্কিমার (schema) বিপরীতে সেটি যাচাই করেন এবং একটি অনুমেয় আউটপুট আশা করেন।
জেনারেটিভ এআই (Generative AI) এটি পরিবর্তন করে দিচ্ছে। লার্জ ল্যাঙ্গুয়েজ মডেল (LLMs) হলো প্রোবাবিলিস্টিক ইঞ্জিন (probabilistic engines)। এগুলো সম্ভাবনার ভিত্তিতে টেক্সট প্রেডিক্ট করে।
আপনি যদি একটি LLM-কে জাদুর বাক্স হিসেবে বিবেচনা করেন, তবে আপনার প্রোডাকশন অ্যাপগুলো ব্যর্থ হবে। কিন্তু আপনি যদি এটিকে একটি অস্থির, নন-ডিটারমিনিস্টিক (non-deterministic) থার্ড-পার্টি API হিসেবে বিবেচনা করেন, তবে আপনি নির্ভরযোগ্য সিস্টেম তৈরি করতে পারবেন।
একটি LLM-এর কিছু নির্দিষ্ট সীমাবদ্ধতা রয়েছে যা আপনাকে পরিচালনা করতে হবে:
- পেলোড সাইজ (Payload Size): মডেলগুলোর 'কনটেক্সট উইন্ডো' (context windows) নামক কিছু কঠোর সীমা রয়েছে। আপনি সীমাহীন ডেটা পাঠাতে পারবেন না।
- ল্যাটেন্সি (Latency): ডাটাবেস রিড করতে মিলিসেকেন্ড সময় লাগে। LLM ইনফারেন্স (inference) করতে কয়েক সেকেন্ড সময় লাগে। এটি সামলাতে আপনার অ্যাসিনক্রোনাস কিউ (asynchronous queues) বা স্ট্রিমিং প্রয়োজন।
- হ্যালুসিনেশন (Hallucinations): যদি কোনো মডেলের কাছে নির্দিষ্ট ডেটা না থাকে, তবে এটি একটি বিশ্বাসযোগ্য কিন্তু ভুল উত্তর তৈরি করবে।
ব্যয়বহুল রিট্রেনিং (retraining) ছাড়াই ডেটার সমস্যা সমাধান করতে আমরা Retrieval-Augmented Generation (RAG) ব্যবহার করি।
RAG হলো API-তে আপনার নিজস্ব ডাটাবেস নিয়ে আসার সমতুল্য। মডেলটি আপনার ডেটা জানবে—এমন আশা না করে, আপনার ব্যাকএন্ড প্রাসঙ্গিক কনটেক্সট সংগ্রহ করে এবং সেটি প্রম্পটে ইনজেক্ট (inject) করে।
RAG ওয়ার্কফ্লো:
- ব্যবহারকারী একটি প্রম্পট পাঠান।
- আপনার সিস্টেম একটি ভেক্টর ডাটাবেস (Vector Database) কুয়েরি করে।
- সিস্টেমটি সিম্যান্টিক্যালি (semantically) সদৃশ টেক্সট চাঙ্ক (text chunks) খুঁজে বের করে।
- সিস্টেমটি এই চাঙ্কগুলোকে প্রম্পটে ইনজেক্ট করে।
- LLM তখন সেই গ্রাউন্ডেড কনটেক্সট (grounded context) প্রসেস করে।
এটি LLM-কে একটি নলেজ জেনারেটর থেকে কনটেক্সট প্রসেসরে রূপান্তরিত করে। এটি উল্লেখযোগ্যভাবে ত্রুটি কমায়।
অটোমেটেড সার্ভিসের জন্য LLM আউটপুটকে কার্যকর করতে আপনার স্ট্রাকচার্ড আউটপুট (Structured Outputs) প্রয়োজন। একটি মাইক্রোসার্ভিসের জন্য কনভারসেশনাল টেক্সট পার্স (parse) করতে আপনি রেজেক্স (regex) ব্যবহার করতে পারবেন না। আপনাকে JSON-এর মতো সঠিক স্কিমা ডেফিনিশন পাস করতে হবে। এটি নিশ্চিত করে যে মডেলটি একটি কঠোর লেআউট অনুসরণ করছে যা আপনার কোড পড়তে পারে।
প্রোডাকশন-গ্রেড AI তৈরি করতে লিনিয়ার প্রম্পট থেকে শক্তিশালী সিস্টেম ডিজাইনের দিকে অগ্রসর হওয়া প্রয়োজন।
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi