RAG-এর জন্য প্রম্পটিং
এই পাঠে যা শিখবেন
- RAG কী, এবং কেন এটি শুধু একটি ইঞ্জিনিয়ারিং প্যাটার্ন নয় বরং একটি প্রম্পটিং সমস্যাও
- কেন ব্যাপক নেতিবাচক নির্দেশনা ("do not infer", "do not use outside knowledge") পাল্টা ফল দিতে পারে
- কীভাবে ইতিবাচক গ্রাউন্ডিং নির্দেশনা লিখতে হয়
- quote-first কৌশল ব্যবহার করে RAG উত্তরকে আরও নির্ভরযোগ্য করা
১ · RAG কী এবং কেন দরকার
একটি LLM-এর জ্ঞান তার প্রশিক্ষণ-ডেটায় সীমাবদ্ধ — একটি নির্দিষ্ট সময়ের পরের ঘটনা, আপনার কোম্পানির অভ্যন্তরীণ ডকুমেন্ট, বা গতকাল আপডেট হওয়া একটি পলিসি — এসব মডেল "জানে না"। RAG (Retrieval-Augmented Generation)RAGএকটি প্যাটার্ন যেখানে মডেলের উত্তর দেওয়ার আগে একটি retrieval ধাপ প্রাসঙ্গিক ডকুমেন্ট/অনুচ্ছেদ খুঁজে বের করে এবং সেগুলো প্রম্পটে যুক্ত করে দেয় — যাতে মডেল তার প্রশিক্ষণ-জ্ঞানের বদলে (বা পাশাপাশি) সেই সাম্প্রতিক/নির্দিষ্ট তথ্যের উপর ভিত্তি করে উত্তর দিতে পারে। এই সমস্যার একটি ব্যবহারিক সমাধান — মডেলকে প্রশ্নের উত্তর দেওয়ার আগে প্রাসঙ্গিক তথ্য "রিট্রিভ" করে দেওয়া হয়, তারপর মডেল সেই তথ্যের ভিত্তিতে উত্তর তৈরি করে।
RAG দুটি ধাপে কাজ করে — (১) Retrieve: ব্যবহারকারীর প্রশ্নের সাথে সবচেয়ে প্রাসঙ্গিক ডকুমেন্ট/অনুচ্ছেদ একটি ডেটাবেস বা সার্চ ইন্ডেক্স থেকে খুঁজে বের করা। (২) Generate: সেই ডকুমেন্টগুলো প্রম্পটে জুড়ে দিয়ে মডেলকে বলা — এই তথ্যের ভিত্তিতে উত্তর দাও। একটি কোম্পানির অভ্যন্তরীণ সাপোর্ট বট, একটি আইনি ডকুমেন্ট সার্চ টুল, বা একটি পণ্যের ম্যানুয়াল থেকে উত্তর দেওয়া চ্যাটবট — এগুলো সবই RAG-এর বাস্তব উদাহরণ।
২ · RAG আসলে কনটেক্সট ইঞ্জিনিয়ারিং-এর একটি প্রয়োগ
পাঠ ২৩-এ আমরা দেখেছি — প্রম্পট ইঞ্জিনিয়ারিং অপ্টিমাইজ করে কীভাবে বলবেন, আর কনটেক্সট ইঞ্জিনিয়ারিং অপ্টিমাইজ করে মডেল কী দেখতে পাচ্ছে। RAG ঠিক এই দ্বিতীয় স্তরের একটি বাস্তব সিস্টেম — retrieval পাইপলাইন ঠিক করে মডেল কোন ডকুমেন্ট "দেখবে", আর আপনার প্রম্পট ঠিক করে মডেল সেই ডকুমেন্ট নিয়ে কী করবে। দুটোই ঠিক না থাকলে ফলাফল খারাপ হবে — নিখুঁত ভাষায় লেখা একটি প্রম্পটও ব্যর্থ হবে যদি ভুল ডকুমেন্ট রিট্রিভ হয়, আবার নিখুঁতভাবে রিট্রিভ করা ডকুমেন্টও অকেজো হয়ে যেতে পারে যদি প্রম্পট মডেলকে সেগুলো ব্যবহার করতে ঠিকভাবে না বলে।
এই পাঠে আমরা ধরে নিচ্ছি retrieval ধাপটি ইতিমধ্যে ঠিক ডকুমেন্ট খুঁজে এনেছে — আমাদের মনোযোগ থাকবে সেই ডকুমেন্টগুলো নিয়ে প্রম্পট কীভাবে লিখবেন তার উপর।
৩ · নেতিবাচক নির্দেশনার ফাঁদ
RAG প্রম্পট লেখার সময় স্বাভাবিক প্রবৃত্তি হলো একটি কড়া নিয়ম যোগ করা — "শুধু প্রদত্ত ডকুমেন্ট ব্যবহার করবে, বাইরের কোনো জ্ঞান ব্যবহার করবে না" বা "অনুমান করবে না।" শুনতে নিরাপদ মনে হলেও, এই ধরনের ব্যাপক নেতিবাচক নির্দেশনার একটি বাস্তব সমস্যা আছে — গবেষণা দেখায় "do not infer" বা "do not guess"-এর মতো ব্যাপক negative constraint মডেলকে সেই নির্দেশনার উপর এতটাই ওভার-ইনডেক্স করিয়ে দেয় যে এটি সাধারণ যুক্তি, গাণিতিক হিসেব, বা ডকুমেন্ট জুড়ে তথ্য সংশ্লেষণেও ব্যর্থ হতে শুরু করে।
৪ · সমাধান — ইতিবাচক, স্পষ্ট গ্রাউন্ডিং নির্দেশনা
এর সঠিক সমাধান হলো — বড় একটি নেতিবাচক নিয়মের বদলে, মডেলকে স্পষ্টভাবে বলুন প্রদত্ত কনটেক্সট ব্যবহার করে সিদ্ধান্তে পৌঁছাতে, এবং প্রয়োজনে বাইরের জ্ঞান এড়িয়ে চলতে — অর্থাৎ কী করতে হবে তার উপর জোর দিন, কী করা যাবে না তার উপর নয়। এটাই গ্রাউন্ডিং (Grounding)Groundingমডেলের উত্তরকে একটি নির্দিষ্ট, যাচাইযোগ্য উৎসের (যেমন রিট্রিভ করা ডকুমেন্ট) সাথে বেঁধে রাখার কৌশল, যাতে উত্তর সেই উৎসের বাইরে চলে না যায়। নির্দেশনা — ইতিবাচকভাবে লেখা।
❌ কম কার্যকর (ব্যাপক নেতিবাচক নির্দেশনা):
"নিচের ডকুমেন্ট পড়ো। কখনো অনুমান করবে না। বাইরের কোনো জ্ঞান
ব্যবহার করবে না। শুধু ডকুমেন্টে যা লেখা আছে তাই বলবে।"
✅ বেশি কার্যকর (ইতিবাচক গ্রাউন্ডিং নির্দেশনা):
"নিচে প্রদত্ত ডকুমেন্ট ব্যবহার করে ব্যবহারকারীর প্রশ্নের উত্তর দাও।
উত্তরের প্রতিটি দাবি ডকুমেন্টের কোনো না কোনো অংশে খুঁজে পাওয়া
যেতে হবে। যদি ডকুমেন্টে উত্তর না থাকে, স্পষ্টভাবে বলো যে প্রদত্ত
তথ্যে এর উত্তর নেই।"
লক্ষ্য করুন — দ্বিতীয় সংস্করণে কোনো ব্যাপক "কখনো না" নেই, বরং একটি স্পষ্ট ইতিবাচক নির্দেশ ("ডকুমেন্ট ব্যবহার করে উত্তর দাও") এবং একটি নির্দিষ্ট fallback নির্দেশ ("না থাকলে বলো নেই") আছে। এটি পাঠ ১০-এ শেখা "অনিশ্চয়তা প্রকাশের অনুমতি" কৌশলেরও একটি প্রয়োগ — মডেলকে "জানি না" বলার একটি স্পষ্ট পথ দেওয়া হচ্ছে, বরং জোর করে একটি অস্বাভাবিক সীমাবদ্ধতার মধ্যে আটকে রাখার বদলে।
৫ · Quote-first কৌশল — RAG hallucination আরও কমানো
পাঠ ২১-এ (লং-কনটেক্সট প্রম্পটিং) আমরা দেখেছি — লম্বা ডকুমেন্ট নিয়ে কাজ করার সময় মডেলকে উত্তর দেওয়ার আগে প্রাসঙ্গিক অংশ উদ্ধৃত করতে বললে উত্তর আরও গ্রাউন্ডেড হয় এবং মনোযোগ সঠিক জায়গায় কেন্দ্রীভূত থাকে। এই একই কৌশল RAG-এ বিশেষভাবে কার্যকর — কারণ RAG-এর মূল ঝুঁকিই হলো মডেল রিট্রিভ করা ডকুমেন্টের বাইরে গিয়ে নিজে থেকে কিছু বানিয়ে ফেলা।
নিচে রিট্রিভ করা ডকুমেন্টগুলো দেওয়া আছে।
<documents>
<document index="1">
<source>refund-policy.pdf</source>
<document_content>...</document_content>
</document>
<document index="2">
<source>shipping-faq.pdf</source>
<document_content>...</document_content>
</document>
</documents>
প্রথমে <quotes> ট্যাগে সেই অনুচ্ছেদগুলো উদ্ধৃত করো যেগুলো
প্রশ্নের সাথে প্রাসঙ্গিক। তারপর <answer> ট্যাগে শুধু সেই
উদ্ধৃতিগুলোর ভিত্তিতে উত্তর দাও। প্রাসঙ্গিক কিছু না পেলে বলো
যে ডকুমেন্টে এর উত্তর নেই।
প্রশ্ন: রিফান্ড পেতে কত দিন লাগে?
এই কাঠামোয় দুটি সুবিধা একসাথে পাওয়া যায় — প্রথমত, quote ধাপটি মডেলকে বাধ্য করে আগে ডকুমেন্টে "খুঁজে" দেখতে, তারপর উত্তর তৈরি করতে (নিছক অনুমান করার বদলে)। দ্বিতীয়ত, এই quote-গুলো আপনার UI-তে দেখানো গেলে ব্যবহারকারীও নিজে যাচাই করতে পারেন উত্তরটি আসলেই কোন উৎস থেকে এসেছে — এটি একটি বাস্তব প্রোডাকশন প্যাটার্ন, বিশেষ করে যেখানে ভুল উত্তরের বাস্তব পরিণতি আছে (আইনি, চিকিৎসা, আর্থিক)।
RAG প্রম্পটিং-এর মূলমন্ত্র — ব্যাপক "না" এর বদলে নির্দিষ্ট "হ্যাঁ"। মডেলকে বলুন ঠিক কী ব্যবহার করে উত্তর তৈরি করতে হবে, উত্তর না পেলে কী বলতে হবে, এবং সম্ভব হলে উত্তরের আগে উৎস উদ্ধৃত করতে বলুন। এই তিনটি মিলেই একটি RAG সিস্টেমকে নির্ভরযোগ্য করে তোলে — শুধু ভালো retrieval দিয়ে নয়।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ একটি RAG চ্যাটবট প্রায়ই সঠিক ডকুমেন্ট পেয়েও ভুল উত্তর দেয়। retrieval ঠিক থাকলে সমস্যা কোথায় হতে পারে?
প্রম্পটের দিকে দেখুন। retrieval ঠিক থাকলেও, যদি প্রম্পট মডেলকে স্পষ্টভাবে না বলে যে প্রদত্ত ডকুমেন্টের ভিত্তিতেই উত্তর দিতে হবে, মডেল তার প্রশিক্ষণ-জ্ঞান এবং প্রদত্ত ডকুমেন্ট মিশিয়ে ফেলতে পারে — বিশেষ করে যদি দুটোর মধ্যে সামান্য দ্বন্দ্ব থাকে (যেমন একটি পুরনো নীতি বনাম নতুন নীতি)।
এই কারণেই ইতিবাচক গ্রাউন্ডিং নির্দেশনা এবং quote-first কৌশল গুরুত্বপূর্ণ — এগুলো মডেলকে নির্দিষ্টভাবে "এই উৎস থেকে" উত্তর তৈরি করতে বাধ্য করে, তার সাধারণ প্রশিক্ষণ-জ্ঞানের সাথে না মিশিয়ে।
প্র ০২ "বাইরের জ্ঞান ব্যবহার করবে না" নির্দেশনা কেন সাধারণ যুক্তি ও সংশ্লেষণেও সমস্যা তৈরি করতে পারে?
কারণ "অনুমান" এবং "যুক্তি" প্রায়ই আলাদা করা কঠিন। ডকুমেন্টে থাকা দুটি স্বতন্ত্র তথ্য জোড়া দিয়ে একটি উপসংহারে পৌঁছানো — যেমন "ডকুমেন্ট A বলছে পণ্য X ওয়্যারহাউজ ১-এ আছে, ডকুমেন্ট B বলছে ওয়্যারহাউজ ১ ঢাকায়" থেকে "পণ্য X ঢাকায় আছে" বলা — টেকনিক্যালি একটি ইনফারেন্স, কিন্তু এটি সম্পূর্ণ ডকুমেন্ট-ভিত্তিক এবং যুক্তিসঙ্গত।
একটি ব্যাপক "অনুমান করবে না" নিয়ম মডেলকে এই ধরনের বৈধ, ডকুমেন্ট-ভিত্তিক যুক্তি থেকেও পিছিয়ে দিতে পারে — কারণ মডেল বুঝতে পারে না কোন ধরনের "অনুমান" নিষিদ্ধ আর কোনটা স্বাভাবিক সংশ্লেষণ।
প্র ০৩ quote-first কৌশল ব্যবহারকারীর জন্য কীভাবে অতিরিক্ত মূল্য যোগ করতে পারে, শুধু মডেলের নির্ভুলতা বাড়ানো ছাড়াও?
উদ্ধৃত অংশগুলো UI-তে "সোর্স" বা "রেফারেন্স" হিসেবে দেখানো যায় — ব্যবহারকারী নিজেই দেখতে পারেন উত্তরটি ঠিক কোন অনুচ্ছেদ থেকে এসেছে। এটি স্বচ্ছতা বাড়ায় এবং ব্যবহারকারীকে দ্রুত যাচাই করতে দেয়, বিশেষ করে গুরুত্বপূর্ণ সিদ্ধান্তে (আইনি, আর্থিক, চিকিৎসা সংক্রান্ত প্রশ্নে) যেখানে "শুধু বিশ্বাস করুন" যথেষ্ট নয়।
অনুশীলন
-
পুনর্লিখন করুন: নিচের নির্দেশনাটি ইতিবাচক গ্রাউন্ডিং নির্দেশনায় রূপান্তর করুন — "কখনো তোমার নিজের
জ্ঞান থেকে কিছু বলবে না। শুধু ডকুমেন্ট থেকে বলবে। কোনো অনুমান নিষিদ্ধ।"
উদাহরণ: "নিচের প্রদত্ত ডকুমেন্ট ব্যবহার করে প্রশ্নের উত্তর দাও। উত্তরের প্রতিটি অংশ ডকুমেন্টের কোনো নির্দিষ্ট বাক্য বা অনুচ্ছেদে সমর্থিত থাকতে হবে। যদি ডকুমেন্টে সরাসরি বা যুক্তিসঙ্গতভাবে অনুমানযোগ্য উত্তর না থাকে, স্পষ্টভাবে বলো যে প্রদত্ত তথ্যে এই প্রশ্নের উত্তর নেই।" — এখানে কোনো ব্যাপক "কখনো না" নেই, বরং কী করতে হবে এবং না পেলে কী বলতে হবে তা স্পষ্ট।
-
ডিজাইন করুন: একটি বিশ্ববিদ্যালয়ের ভর্তি-সংক্রান্ত প্রশ্নোত্তর চ্যাটবটের জন্য একটি RAG প্রম্পট
লিখুন যা quote-first কৌশল ব্যবহার করে।
মূল কাঠামো — (১) `<documents>` ট্যাগে ভর্তি-সংক্রান্ত পলিসি ডকুমেন্ট জুড়ে দিন, (২) মডেলকে বলুন প্রথমে `<quotes>` ট্যাগে প্রাসঙ্গিক অনুচ্ছেদ উদ্ধৃত করতে, (৩) তারপর `<answer>` ট্যাগে সেই উদ্ধৃতির ভিত্তিতে উত্তর দিতে, (৪) প্রাসঙ্গিক কিছু না পেলে ব্যবহারকারীকে ভর্তি অফিসে যোগাযোগ করতে বলার একটি fallback নির্দেশ দিন।
-
বিশ্লেষণ করুন: একটি RAG সিস্টেমে retrieval ধাপ ভুল ডকুমেন্ট এনে দিলে, তা কি প্রম্পট ইঞ্জিনিয়ারিং দিয়ে
ঠিক করা সম্ভব? কেন বা কেন নয়?
সাধারণত না — এটি একটি context engineering সমস্যা (পাঠ ২৩), retrieval/সার্চ পাইপলাইনের সমস্যা, প্রম্পটের নয়। প্রম্পট শুধু নিশ্চিত করতে পারে মডেল যা পেয়েছে তা সঠিকভাবে ব্যবহার করছে — কিন্তু যা পাঠানো হয়নি, তার উপর প্রম্পটের কোনো নিয়ন্ত্রণ নেই। ভুল ডকুমেন্ট সমস্যার সমাধান হলো ভালো এমবেডিং/সার্চ ইনডেক্স, প্রম্পট নয়।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পরবর্তী পাঠ — প্রম্পট টেস্টিং ও মূল্যায়ন পাঠ ২৫ RAG প্রম্পট লেখার পর কীভাবে যাচাই করবেন এটি সত্যিই ভালো কাজ করছে কিনা — পরবর্তী পাঠে।
- পাঠ ২১ পুনরায় দেখুন — লং-কনটেক্সট প্রম্পটিং সংযোগ quote-first কৌশল ও ডকুমেন্ট স্ট্রাকচারিং-এর মূল ব্যাখ্যা।
- NLP ও বড় ভাষা মডেল কোর্স গভীরে যান Embeddings, vector search ও retrieval-এর ভেতরের প্রযুক্তি বিস্তারিত শিখতে চাইলে।
- AI সংবাদ ও সাম্প্রতিক ঘটনাবলি Blog ABCL TECH-এর বাংলা AI সংবাদ — Claude, GPT, Gemini-এর নতুন মডেল ও আপডেট নিয়ে।