পরীক্ষাটি কীভাবে সাজানো হয়েছিল
লেখক দুটি পেমেন্ট-রুলবুক (payment-rulebook) ডকুমেন্টের ওপর ভিত্তি করে একটি ক্ষুদ্র রিট্রিভাল-অগমেন্টেড জেনারেশন (RAG) সিস্টেম তৈরি করেন এবং দুটি পরীক্ষা চালান:
- Recall test – শীর্ষ পাঁচটি ফলাফলের মধ্যে সঠিক পৃষ্ঠাটি কি উপস্থিত ছিল? ফলাফল: ৬০%।
- Answer test – জেনারেটর দ্বারা তৈরি চূড়ান্ত উত্তরটি কি সঠিক ছিল? ফলাফল: ৯০%।
৪০% ব্যবধানটি অসম্ভব বলে মনে হয়েছিল। যদি রিট্রিভার দশবারের মধ্যে চারবার সঠিক পৃষ্ঠাটি খুঁজে না পায়, তবে মডেলটি কীভাবে দশবারের মধ্যে নয়বার সঠিক উত্তর দিতে পারে?
রিট্রিভারকে “ঠিক” করার প্রথম প্রচেষ্টাগুলো
ডেভেলপার দুটি সাধারণ কৌশল চেষ্টা করেছিলেন:
- Hybrid search – লেক্সিক্যাল (lexical) এবং ভেক্টর সিগন্যাল মিশ্রিত করা। Recall একই ছিল।
- Reranker – প্রাপ্ত পাঁচটি পৃষ্ঠাকে পুনরায় সাজানো। Recall বেড়ে ৭০% হলেও ৯০% উত্তর নির্ভুলতার (answer accuracy) তুলনায় অনেক পিছিয়ে ছিল।
উভয় টুলই কেবল ইতিমধ্যে প্রাপ্ত তথ্যগুলোকে পুনরায় সাজায়; যে পৃষ্ঠাটি ক্যান্ডিডেট সেটে (candidate set) কখনও আসেনি, তা তারা খুঁজে আনতে পারে না। সমস্যাটি অন্য কোথাও ছিল।
মডেল নয়, বরং মেট্রিকটি ত্রুটিপূর্ণ ছিল
পৃষ্ঠার লেবেল দিয়ে সাফল্য বিচার করার পরিবর্তে, লেখক রিট্রিভ করা চাঙ্কগুলোতে (chunks) থাকা প্রকৃত তথ্যগুলো পরীক্ষা করেন। চারটি “মিস” বা ব্যর্থতার মধ্যে তিনটিতেই সঠিক তথ্যটি উপস্থিত ছিল, কিন্তু সেটি টেস্ট স্ক্রিপ্ট প্রত্যাশিত পৃষ্ঠার পরিবর্তে অন্য একটি পৃষ্ঠায় ছিল। মূল্যায়ন পদ্ধতিটি রিট্রিভারকে একটি অপ্রত্যাশিত পৃষ্ঠায় সঠিক উত্তর খুঁজে পাওয়ার জন্য দণ্ড প্রদান করেছিল।
যখন মেট্রিকটি পরিবর্তন করে “কোনো রিট্রিভ করা চাঙ্ক কি প্রয়োজনীয় তথ্যটি ধারণ করে?” করা হলো, তখন recall লাফিয়ে ৯০% এ পৌঁছে যায়, যা উত্তর নির্ভুলতার সমান। রিট্রিভার কাজ করছিল; কিন্তু মূল্যায়ন কাঠামোটি (evaluation framework) কাজ করছিল না।
কেন প্রথাগত recall বিভ্রান্তিকর হতে পারে
- পৃষ্ঠা-স্তরের লেবেলিং কাল্পনিক ব্যর্থতা তৈরি করে। একটি মাত্র তথ্য একাধিক পৃষ্ঠায় থাকতে পারে। শুধুমাত্র একটি পৃষ্ঠাকে গ্রাউন্ড ট্রুথ (ground truth) হিসেবে ট্যাগ করলে অন্য সব সঠিক ফলাফলকেও ভুল হিসেবে গণ্য করা হয়।
- ক্ষুদ্র কর্পাস (corpora) এই প্রভাবকে বাড়িয়ে দেয়। অল্প সংখ্যক ডকুমেন্টের ক্ষেত্রে, একটি ভুলভাবে লেবেল করা পৃষ্ঠা recall-কে নাটকীয়ভাবে কমিয়ে দিতে পারে, যদিও উত্তর নির্ভুলতা স্থিতিশীল থাকে।
- এম্বেডিং নয়েজ (Embedding noise) তথ্য লুকিয়ে ফেলে। ভেক্টর পুরো পৃষ্ঠাকে স্কোর করে; আশেপাশের আইনি বা প্রযুক্তিগত টেক্সট লক্ষ্যযুক্ত বাক্যের প্রাসঙ্গিকতা সংকেতকে (relevance signal) কমিয়ে দেয়, ফলে তথ্যটি উপস্থিত থাকা সত্ত্বেও পৃষ্ঠাটিকে র্যাঙ্কিংয়ে নিচে নামিয়ে দেয়।
RAG অনুশীলনকারীদের জন্য ব্যবহারিক শিক্ষা
- র্যাঙ্কিং এবং রিট্রিভাল ব্যর্থতাকে আলাদা করুন। Reranker শুধুমাত্র র্যাঙ্কিংয়ের সমস্যা সমাধান করে; যদি সঠিক চাঙ্কটি ক্যান্ডিডেট সেটে কখনও না আসে, তবে পুনরায় সাজানো কোনো কাজে আসবে না।
- তথ্য বা ফ্যাক্ট-স্তরে টেস্ট ডেটা লেবেল করুন। প্রতিটি কুয়েরিকে (query) একটি নির্দিষ্ট ডকুমেন্টের আইডেন্টিফায়ারের পরিবর্তে তার প্রয়োজনীয় নির্দিষ্ট তথ্যের সাথে যুক্ত করুন।
- ক্ষুদ্র ডেটাসেটের জন্য বড় স্কেলের বেঞ্চমার্কের ওপর নির্ভর করবেন না। ছোট এবং ডোমেইন-নির্দিষ্ট কর্পাস ভিন্নভাবে কাজ করে এবং সাধারণ recall স্কোর বিভ্রান্তিকর হতে পারে।
- এম্বেডিং গ্র্যানুলারিটি (granularity) খেয়াল রাখুন। একটি পৃষ্ঠা-আকারের চাঙ্ক অনেক শব্দ ধারণ করে এবং আশেপাশের আইনি টেক্সট আপনার প্রয়োজনীয় তথ্যের র্যাঙ্ক কমিয়ে দিতে পারে।
মূল কথা: যখন মূল্যায়ন কাজের সাথে সামঞ্জস্যপূর্ণ হয় না, তখন উচ্চ উত্তর নির্ভুলতা স্কোর এবং নিম্ন প্রথাগত recall ফিগার একসাথে থাকতে পারে। মডেল নয়, বরং মেট্রিকটি ঠিক করলে সময় বাঁচে, ভুল সতর্কতা (false alarms) কমে এবং আরও নির্ভরযোগ্য RAG ডিপ্লয়মেন্ট নিশ্চিত হয়।
