একটি নতুন WhatsApp-ভিত্তিক RAG (retrieval-augmented generation) অ্যাসিস্ট্যান্ট প্রতিটি উত্তরের সাথে একটি JSON-encoded সাইটেশন (citation) দাবি করার মাধ্যমে হ্যালুসিনেশন (hallucinating) করা বন্ধ করেছে। যখন মডেলটি কোনো নির্দিষ্ট চাঙ্ক (chunk)-এর দিকে নির্দেশ করতে পারছিল না, তখন এটি “I don’t have enough information to answer that” প্রদান করছিল, যা একটি আত্মবিশ্বাসী মিথ্যাবাদী সিস্টেমকে একটি নির্ভরযোগ্য “I don’t know” সিস্টেমে পরিণত করেছে।
RAG-এ কেন বিশ্বাসযোগ্যতা গুরুত্বপূর্ণ
RAG সংক্রান্ত বেশিরভাগ টিউটোরিয়াল রিট্রিভাল (retrieval)-এর ওপর বেশি গুরুত্ব দেয়—যেমন এমবেডিং (embeddings) নির্বাচন করা, ডকুমেন্টগুলোকে চাঙ্কে (chunks) ভাগ করা, বা ফলাফলগুলো পুনরায় র্যাঙ্কিং (re-ranking) করা। প্রাসঙ্গিক টেক্সট খুঁজে পাওয়ার পর কী ঘটে, তা তারা এড়িয়ে যায়। যখন অ্যাসিস্ট্যান্ট এমন একটি নিশ্চিত উত্তর দেয় যা রিট্রিভ করা কনটেক্সট (context) আসলে সমর্থন করে না, তখন ব্যবহারকারীরা বিশ্বাস হারিয়ে ফেলেন।
আত্মবিশ্বাসের ব্যবধান
PostgreSQL এবং pgvector এক্সটেনশন দিয়ে তৈরি একটি প্রোটোটাইপে রিট্রিভাল পাইপলাইনটি ছিল সহজ। আসল চ্যালেঞ্জটি দেখা দিয়েছিল প্রোডাকশনে: রিট্রিভ করা স্নিপেটে (snippet) প্রয়োজনীয় তথ্য না থাকলেও ল্যাঙ্গুয়েজ মডেলটি নিশ্চিতভাবে কথা বলছিল। একটি ডেমো হয়তো সমস্যাটি লুকিয়ে রাখতে পারে, কিন্তু বাস্তব ব্যবহারকারীরা আত্মবিশ্বাসের সাথে কথা বলা এবং সঠিক হওয়ার মধ্যকার ব্যবধানটি প্রকাশ করে দিয়েছেন।
JSON-এর মাধ্যমে সাইটেশন নিশ্চিত করা
“answer only if you have context” এর মতো প্রম্পট দিয়ে মডেলটিকে প্ররোচিত করার পরিবর্তে, লেখক আউটপুট ফরম্যাট পরিবর্তন করেছেন। সিস্টেমটি এখন একটি JSON অবজেক্ট দাবি করে যেখানে প্রতিটি দাবির (claim) সাথে সেই নির্দিষ্ট চাঙ্ক-এর রেফারেন্স থাকতে হবে যা এটিকে সমর্থন করে। যদি মডেলটি কোনো সাইটেশন যুক্ত করতে না পারে, তবে রেসপন্সটি বাতিল হয়ে যায় এবং ব্যবহারকারী একটি স্পষ্ট “I don’t know” মেসেজ দেখতে পান।
এই বাধ্যবাধকতাটি ন্যাচারাল-ল্যাঙ্গুয়েজ ইনস্ট্রাকশন থেকে স্কিমা ভ্যালিডেশনে (schema validation) স্থানান্তরিত হয়েছে। মডেলটি এখনও টেক্সট তৈরি করে, কিন্তু আশেপাশের কোডটি নিশ্চিত করে যে ব্যবহারকারীর কাছে পৌঁছানোর আগে JSON-টি প্রয়োজনীয় স্ট্রাকচারের সাথে মিলছে কি না।
কী পরিবর্তন হয়েছে
- চাঙ্কিং (Chunking) এখন আরও সতর্ক। অস্পষ্ট বা অতিরিক্ত বিস্তৃত চাঙ্কগুলো এখন সাইটেশন ছাড়া দাবি তৈরি করে, যা “I don’t know” ফলব্যাক (fallback) ট্রিগার করে।
- সিস্টেম প্রম্পট ছোট হয়ে এসেছে। মডেলের আচরণ নিয়ন্ত্রণ করার জন্য ব্যবহৃত কঠোর প্রম্পটের পরিবর্তে এখন একটি সংক্ষিপ্ত ইনস্ট্রাকশন সেট ব্যবহার করা হচ্ছে, যা স্কিমাকে (schema) মূল কাজ করার সুযোগ দিচ্ছে।
- ব্যর্থতাগুলো এখন দৃশ্যমান। যখন রিট্রিভাল অপ্রাসঙ্গিক তথ্য প্রদান করে, অ্যাসিস্ট্যান্ট তখন আর আত্মবিশ্বাসী কিন্তু ভুল উত্তরের মাধ্যমে ভুলটি লুকিয়ে রাখে না; বরং এটি খোলামেলাভাবে অনিশ্চয়তা স্বীকার করে।
মূল কথা (Takeaway): RAG অ্যাসিস্ট্যান্টের ক্ষেত্রে, প্রতিটি দাবি যেন রিট্রিভ করা উৎসের সাথে ট্রেসযোগ্য (traceable) হয় তা নিশ্চিত করা, শুধুমাত্র রিট্রিভাল ধাপটিকে উন্নত করার চেয়ে অনেক বেশি নির্ভরযোগ্যভাবে ব্যবহারকারীর আস্থা অর্জন করতে পারে। সাইটেশন না থাকলে সেটিকে একটি দৃশ্যমান “I don’t know” হিসেবে প্রকাশ করার মাধ্যমে, ডেভেলপাররা সিস্টেমটিকে ভুল উত্তর তৈরি করার পরিবর্তে তার সীমাবদ্ধতা স্বীকার করতে সাহায্য করেন।
