মানুষ ক্রমাগত RAG-এর মৃত্যুসংবাদ লিখছে। আপনি সম্ভবত এখন পর্যন্ত এই সংক্রান্ত শিরোনামগুলো দেখে ফেলেছেন। লং কনটেক্সট উইন্ডো একে মেরে ফেলেছে। এজেন্টরা এর জায়গা নিয়েছে। পুরো প্যাটার্নটি এখন অপ্রচলিত। সত্যটি আরও সংকীর্ণ এবং অনেক বেশি কার্যকর। RAG মরেনি। আসলে যা ভেঙে পড়েছে তা হলো সেই আরামদায়ক বিভ্রম যে আপনি একগুচ্ছ ডকুমেন্টকে চঙ্কে ভাগ করে একটি ভেক্টর ডেটাবেসে দিয়ে হঠাৎ করেই একটি নির্ভরযোগ্য, সত্যবাদী AI পেয়ে যাবেন।
কয়েক বছর আগে, এর প্রস্তাবটি ছিল এর সরলতার কারণে অত্যন্ত আকর্ষণীয়। আপনার নলেজ বেস এমবেড করুন। এটিকে একটি LLM-এর সাথে যুক্ত করুন। একটি প্রশ্ন করুন এবং দেখুন মডেলটি শুধুমাত্র আপনার রিট্রিভ করা ডেটা ব্যবহার করে উত্তর দিচ্ছে। নিয়ন্ত্রিত ডেমো এবং ছোট FAQ বটের জন্য এটি সত্যি কাজ করত। একটি বিশ পৃষ্ঠার হেল্প ডেস্ক ম্যানুয়াল। একটি গোছানো ইন্টারনাল উইকি। বটটি কমবেশি সঠিক অনুচ্ছেদটি উল্লেখ করত এবং লিডারশিপ পাইলট প্রজেক্টটি অনুমোদন করত। কিন্তু পাইলট মানেই প্রোডাকশন নয়। প্রোটোটাইপগুলোতে বাস্তব ব্যবসায়িক কার্যক্রমের রূঢ় অভিজ্ঞতা বা ক্ষত থাকে না।
প্রোডাকশন ডেটা অত্যন্ত অগোছালো। এতে একই ট্রাবলশুটিং নোট ডজনখানেক ফাইলে কপি করা থাকতে পারে, যার প্রতিটির টাইমস্ট্যাম্প কিছুটা ভিন্ন এবং স্ট্যাটাস লেবেলগুলো সাংঘর্ষিক হতে পারে। এতে জটিল টেবিল থাকে যা পৃষ্ঠা জুড়ে বিস্তৃত থাকে, ফলে স্প্লিটার যখন সেটিকে মাঝখান থেকে কেটে ফেলে তখন তা অর্থহীন হয়ে পড়ে। এটি কোনো ক্ষমা ছাড়াই বৈপরীত্য বজায় রাখে। ২০২৩ সালের পলিসি ম্যানুয়াল এক কথা বলছে, আর ২০২৪ সালের মার্চের সংশোধনী অন্য কথা বলছে। পুরনো PDF-টি কখনোই আর্কাইভ করা হয়নি। চঙ্ক, স্টোর এবং রিট্রিভ করার এই সরল প্যাটার্নটি প্রতিটি অনুচ্ছেদকে একটি বিচ্ছিন্ন দ্বীপ হিসেবে বিবেচনা করে। এর কোনো হায়ারার্কি, ভার্সন হিস্ট্রি বা কনফ্লিক্ট রেজোলিউশন সম্পর্কে ধারণা নেই। মডেলটি হ্যালুসিনেশন করে কারণ LLM ত্রুটিপূর্ণ নয়, বরং এটি যে কনটেক্সট পেয়েছে তা ছিল খণ্ডিত, অনাথ বা সরাসরি ভুল।
কিছু পর্যবেক্ষক দাবি করেন যে মিলিয়ন-টোকেন কনটেক্সট উইন্ডো রিট্রিভালকে অপ্রাসঙ্গিক করে তুলেছে। তাদের যুক্তিটি সহজ। পুরো কর্পাসটি প্রম্পটে ঢেলে দিন এবং মডেলটিকে সব পড়তে দিন। এটি শুনতে চমৎকার মনে হয়। কিন্তু এটি বিপজ্জনকভাবে আশাবাদী। একটি মডেল প্রযুক্তিগতভাবে একটি ছোট উপন্যাসের সমান টেক্সট গ্রহণ করতে সক্ষম হতে পারে, তবুও সেই বিশালতার মাঝে একটি নির্দিষ্ট ধারা বা ক্লজ খুঁজে পাওয়া সম্পূর্ণ ভিন্ন একটি সক্ষমতা। খড়ের গাদায় সুঁই খুঁজে পাওয়া কঠিন। লং কনটেক্সট উইন্ডো উপলব্ধ ক্যানভাসকে বড় করে দেয়, কিন্তু সেই ক্যানভাসে কী স্থান পাওয়ার যোগ্য তা নির্ধারণ করার কঠিন কাজটি সমাধান করে না। সমস্যাটি কখনোই কেবল রিট্রিভাল ছিল না। এটি সবসময়ই ছিল কনটেক্সট অ্যাসেম্বলি।
সরল রিট্রিভাল থেকে কনটেক্সট ইঞ্জিনিয়ারিংয়ের দিকে
২০২৬ সালে, এই ক্ষেত্রটি পরিপক্ক হচ্ছে। আমরা সেই পর্যায় অতিক্রম করছি যেখানে RAG-কে একটি একক লিনিয়ার পাইপলাইন হিসেবে বিবেচনা করা হতো, এবং এমন একটি আর্কিটেকচারের দিকে এগোচ্ছি যেখানে কনটেক্সটকে একটি সুপরিকল্পিত ইঞ্জিনিয়ারড প্রোডাক্ট হিসেবে দেখা হয়।
বিশুদ্ধ সিম্যান্টিকসের পরিবর্তে হাইব্রিড সার্চ। ইনটেন্ট বা উদ্দেশ্য বোঝার জন্য সিম্যান্টিক সিমিলারিটি চমৎকার, কিন্তু সুনির্দিষ্ট আইডেন্টিফায়ারের ক্ষেত্রে এটি কিছুটা অগোছালো। যদি একজন ইঞ্জিনিয়ার ERR_CONNECTION_REFUSED-এর মতো নির্দিষ্ট কোনো এরর কোড বা v3.2.1-এর মতো কোনো সফটওয়্যার ভার্সন নিয়ে কুয়েরি করেন, তবে বিশুদ্ধ ভেক্টর সার্চ ধারণাটি একই রকম কিন্তু ব্যবহারিকভাবে অপ্রাসঙ্গিক ফলাফলের সমুদ্রে সঠিক ম্যাচটিকে হালকা করে দিতে পারে। এর বিবর্তনটি সহজ। আধুনিক সিস্টেমগুলো এমবেডিংয়ের পাশাপাশি BM25 বা ইনভার্টেড ইনডেক্সের মতো পদ্ধতি ব্যবহার করে কিওয়ার্ড সার্চের সাথে ডেন্স ভেক্টর রিট্রিভালকে একত্রিত করে। সঠিক নাম, এরর কোড, ভার্সন স্ট্রিং এবং প্রোডাক্ট আইডিগুলো কিওয়ার্ড লেয়ার দ্বারা ধরা পড়ে, আর ধারণাগত সূক্ষ্মতাগুলো ভেক্টর লেয়ার দ্বারা সামলানো হয়।
জেনারেট করার আগে র র্যাঙ্কিং (Reranking)। রিট্রিভাল প্রাকৃতিকভাবেই রিকল (recall)-এর দিকে ঝুঁকে থাকে। আপনি চল্লিশ বা পঞ্চাশটি চঙ্ক নিয়ে আসেন কারণ আপনি একটি মূল্যবান অনুচ্ছেদ মিস করতে ভয় পান। কিন্তু সেই সমস্ত নয়েজ একটি বড় মডেলে ইনপুট দিলে টোকেন অপচয় হয় এবং আসল সিগন্যালটি হারিয়ে যায়। র র্যাঙ্কিং একটি দ্বিতীয়, সাধারণত ছোট মডেলের মাধ্যমে এটি সমাধান করে যা নির্দিষ্ট কুয়েরির বিপরীতে প্রতিটি সম্ভাব্য উত্তরের প্রাসঙ্গিকতা স্কোর করে। সেরা পাঁচটি অনুচ্ছেদ এগিয়ে যায়। বাকিগুলো বাদ দেওয়া হয়। এটি রিট্রিভাল এবং জেনারেশনের মধ্যে একটি প্রিসিশন ফিল্টার হিসেবে কাজ করে, যা নিশ্চিত করে যে দামী রিজনিং মডেলটি কেবল সেই বিষয়গুলোই পড়ে যা আসলে গুরুত্বপূর্ণ।
অর্থ বজায় রাখে এমন কনটেক্সচুয়াল রিট্রিভাল। চঙ্কিং একটি সহিংস কাজ। একটি স্প্লিটার একটি অনুচ্ছেদকে তার সেকশন হেডার, টেবিল ক্যাপশন, চারপাশের আইনি ডিসক্লেইমার বা তার অর্থ পরিবর্তনকারী ফুটনোট থেকে বিচ্ছিন্ন করে দিতে পারে। কনটেক্সচুয়াল রিট্রিভাল মডেলের কাছে পৌঁছানোর আগেই খণ্ডগুলোকে সমৃদ্ধ করার মাধ্যমে এই সমস্যা প্রশমিত করে। আপনি প্রোভেন্যান্স বা উৎস নির্দেশক মেটাডেটা যুক্ত করেন: এই অংশটি Q3 2024 ইনসিডেন্ট রিপোর্ট, Database Outage সেকশন, Severity Critical-এর অন্তর্ভুক্ত। মডেলটি কেবল একটি ভাসমান বাক্য দেখে না, বরং একটি নির্দিষ্ট প্রেক্ষাপটে থাকা তথ্য দেখে। খণ্ডটি তার সঠিক অবস্থান ফিরে পায়।
উদ্দেশ্য অনুযায়ী মডুলার রাউটিং। প্রতিটি প্রশ্ন ডকুমেন্টেশনে ভরা একটি ভেক্টর স্টোরে রাখার প্রয়োজন নেই। একজন ব্যবহারকারী যদি পাসওয়ার্ড কীভাবে রিসেট করতে হয় তা জানতে চান, তবে সম্ভবত তার একটি হেল্প আর্টিকেল প্রয়োজন। একজন ব্যবহারকারী যদি জানতে চান কেন গত প্রান্তিকে উত্তর-পূর্বাঞ্চলে রাজস্ব কমেছে, তবে তার ডেটা ওয়্যারহাউসের বিপরীতে SQL প্রয়োজন, আঞ্চলিক বিক্রয় কৌশল সম্পর্কে কোনো অর্থগতভাবে সাদৃশ্যপূর্ণ অনুচ্ছেদ নয়। পরিপক্ক সিস্টেমগুলো এখন উদ্দেশ্য (intent) অনুযায়ী কুয়েরি রাউট করে এবং উপযুক্ত টুল নির্বাচন করে। পদ্ধতির জন্য ডকুমেন্টেশন। স্ট্রাকচার্ড অ্যানালিটিক্সের জন্য রিলেশনাল ডেটাবেস। ট্রেস ডিবাগিংয়ের জন্য লগ অ্যাগ্রিগেটর। লাইভ স্ট্যাটাসের জন্য API। রিট্রিভাল লেয়ার তখন একটি ডিসপ্যাচার হিসেবে কাজ করে, কোনো মনোকালচার হিসেবে নয়।
এজেন্টিক রিজনিং লুপ। কিছু প্রশ্নের উত্তর একটি মাত্র সার্চ স্টেপ দিয়ে দেওয়া সম্ভব নয়। এগুলোর জন্য পুনর্গঠন (reformulation) প্রয়োজন। একটি অস্পষ্ট প্রাথমিক কুয়েরিকে স্পষ্ট করা হয়। রিট্রিভ করা দাবিগুলো দ্বিতীয় একটি উৎসের সাথে ক্রস-চেক করা হয়। যদি ডকুমেন্টেশন API স্পেসিফিকেশনের সাথে সাংঘর্ষিক হয়, তবে সিস্টেমটি কোনো মাঝামাঝি সমাধান বানিয়ে না এনে বরং সেই দ্বন্দ্বটি চিহ্নিত করে। মডেলটি সিদ্ধান্ত নেয় কখন আবার সার্চ করতে হবে, কখন তার কুয়েরি আরও উন্নত করতে হবে এবং কখন উত্তরের জন্য যথেষ্ট প্রমাণ সংগ্রহ করা হয়েছে। এটি কোনো ওয়ান-শট রিট্রিভাল নয়। এটি একটি স্ট্রাকচার্ড রিজনিং যা সার্চকে একটি সাবরুটিন হিসেবে ব্যবহার করে।
রিলেশনাল প্রশ্নের জন্য GraphRAG। কিছু ব্যবসায়িক প্রশ্ন মূলত সংযোগ নিয়ে, বাক্য নিয়ে নয়। কোন কম্পোনেন্ট ফেইলর কোন ডাউনস্ট্রিম অ্যালার্ট ট্রিগার করেছে? কোন সরবরাহকারী কোন কারখানায় পণ্য সরবরাহ করে এবং বিকল্প রুট কী? প্রতিষ্ঠানের কার কাছে এই নির্দিষ্ট বাজেট লাইনের ওপর সিদ্ধান্ত নেওয়ার অধিকার আছে? ফ্ল্যাট টেক্সট চাঙ্কগুলো এই সম্পর্কগুলোকে সরল করে ফেলে কারণ সেগুলো টপোলজি বজায় রাখার জন্য ডিজাইন করা হয়নি। নলেজ গ্রাফ তা করতে পারে। যখন প্রশ্নটি প্রভাব, লিনিয়েজ, প্যাটার্ন বা নেটওয়ার্ক স্ট্রাকচার নিয়ে হয়, তখন একটি গ্রাফ ট্রাভার্স করা এমন প্রেক্ষাপট প্রদান করে যা কোনো অনুচ্ছেদ রিট্রিভাল দিয়ে সম্ভব নয়।
যে প্রশ্নগুলো আসলে গুরুত্বপূর্ণ
RAG নিয়ে আলোচনা করার ধরন পরিবর্তন করা প্রয়োজন। কীভাবে একটি সাধারণ RAG পাইপলাইন তৈরি করা যায় তা জিজ্ঞাসা করা বন্ধ করুন। পরিবর্তে জিজ্ঞাসা করুন মডেলটিকে কোন নির্দিষ্ট কাজ সমাধান করতে হবে, নির্ভুল হওয়ার জন্য এর ঠিক কী কী ডেটা প্রয়োজন এবং সংগৃহীত কনটেক্সট যথেষ্ট কি না তা আপনি কীভাবে যাচাই করবেন। এই প্রশ্নগুলো আপনাকে ডেটা কোয়ালিটি, স্কিমা ডিজাইন, ভেরিফিকেশন লুপ এবং সোর্স প্রোভেন্যান্সের মতো গুরুত্বপূর্ণ বিষয়গুলোর দিকে নিয়ে যাবে। এগুলো প্রকাশ করে দেয় যে আপনার নলেজ বেস স্বয়ংক্রিয় ব্যবহারের জন্য উপযুক্ত কি না।
RAG আর কোনো একক রৈখিক প্রক্রিয়া নয় যা আপনি একবার ইনস্টল করে ভুলে যাবেন। এটি সঠিক কনটেক্সট একত্রিত করার একটি শৃঙ্খলা যাতে একটি মডেল কার্যকরভাবে যুক্তি দিতে পারে। এর মানে হলো রিট্রিভালকে একটি লাইব্রেরি ইমপোর্ট হিসেবে নয়, বরং একটি সিস্টেম ডিজাইন সমস্যা হিসেবে দেখা।
টুলগুলো আরও উন্নত হচ্ছে। সার্চ এখন হাইব্রিড। রাউটিং এখন বুদ্ধিমান। রিট্রিভাল এখন র্যাঙ্কড, এনরিচড এবং ভেরিফাইড। ২০২২ সালের সহজ বিভ্রমগুলো ভেঙে যেতেই হবে যাতে তাদের পরিবর্তে সত্যিকারের কার্যকর কিছু আসতে পারে। আপনার কাজ এখন কেবল একটি ডেটাবেস থেকে টেক্সট রিট্রিভ করা নয়। আপনার কাজ হলো এমন সিস্টেম তৈরি করা যা মডেলটি চিন্তা করা শুরু করার আগেই জানে তার কী প্রয়োজন।
আপনি যদি এই ক্ষেত্রে কাজ করেন, তবে GyaanSetu লার্নিং কমিউনিটি হলো একই ধরণের সমস্যা সমাধানকারী মানুষের সাথে ব্যবহারিক অভিজ্ঞতা বিনিময়ের একটি জায়গা: https://t.me/GyaanSetuAi
