কিছুই না বোঝা থেকে একটি RAG অ্যাপ তৈরি করা পর্যন্ত
গতকাল আমি আমার নিজের NLP নোটের ৩১টি পৃষ্ঠা পড়ে কাটিয়েছি।
আমি কিছুই বুঝতে পারিনি।
আমি ভেবেছিলাম সমস্যাটা আমার মধ্যে। কিন্তু তা ছিল না। সমস্যাটি ছিল আমার পদ্ধতিতে। নোট পড়া মানেই শেখা নয়। আমার কাছে এমন নোট ছিল যা একজন বিশেষজ্ঞের জন্য তৈরি, কোনো শিক্ষানবিশ বা বিগিনারের জন্য নয়।
আমি আমার পদ্ধতি পরিবর্তন করলাম। আমি পড়া বন্ধ করলাম। পরিবর্তে, আমি প্রশ্ন করতে শুরু করলাম। আমি সহজ উদাহরণ ব্যবহার করলাম। ধারণাটি না বোঝা পর্যন্ত আমি প্রযুক্তিগত শব্দ (technical terms) ব্যবহার করতে অস্বীকার করলাম।
দিন শেষে, আমি একটি RAG অ্যাপ তৈরি করলাম। নিচে দেওয়া হলো কীভাবে আমি NLP-এর চারটি স্তম্ভ শিখেছি।
- Bag of Words কম্পিউটার শুধু গণিত বোঝে। টেক্সট প্রসেস করার জন্য আপনাকে শব্দগুলোকে সংখ্যায় রূপান্তর করতে হবে।
কল্পনা করুন আপনি ইমেলগুলোকে স্প্যাম বা নন-স্প্যাম হিসেবে আলাদা করতে চান। আপনি আপনার ইমেলের প্রতিটি শব্দের একটি তালিকা তৈরি করবেন। প্রতিটি শব্দ কতবার এসেছে তা গণনা করবেন। এটি একটি ইমেলকে সংখ্যার একটি সারিতে (row of numbers) রূপান্তর করে।
এর ত্রুটি কী? এটি শব্দের ক্রম বা অর্ডারকে উপেক্ষা করে। "Dog bites man" এবং "man bites dog" এই পদ্ধতিতে দেখতে হুবহু এক।
- TF-IDF Bag of Words প্রতিটি শব্দকে একইভাবে বিবেচনা করে। কিন্তু "the" শব্দটির গুরুত্ব "viagra"-র মতো নয়।
TF-IDF দুটি নিয়ম ব্যবহার করে:
- Term Frequency (TF): একটি ইমেলে একটি শব্দ কতবার আসে।
- Inverse Document Frequency (IDF): সব ইমেলের মধ্যে একটি শব্দ কতটা বিরল।
এই গাণিতিক পদ্ধতিটি "the"-এর মতো অপ্রয়োজনীয় শব্দগুলোকে গুরুত্বহীন করে দেয় এবং গুরুত্বপূর্ণ ও বিরল শব্দগুলোকে হাইলাইট করে।
- Embeddings Bag of Words মনে করে "money" এবং "cash" একে অপরের সাথে সম্পর্কিত নয়। Embeddings এই সমস্যাটি সমাধান করে।
একটি বিশাল মানচিত্রের কথা ভাবুন। প্রতিটি শব্দ সেই মানচিত্রের একটি বিন্দু। একই অর্থ বহনকারী শব্দগুলো কাছাকাছি থাকে। "Money" এবং "cash" হলো প্রতিবেশী। "Banana" অনেক দূরে।
একটি শব্দ কোন কোন শব্দের সাথে ব্যবহৃত হচ্ছে তা দেখে কম্পিউটার এই অবস্থানগুলো শেখে। যদি "money" এবং "cash" উভয়ই "bank" এবং "pay"-এর কাছাকাছি থাকে, তবে কম্পিউটার তাদের একে অপরের কাছে স্থাপন করে।
- RAG (Retrieval-Augmented Generation) এখানেই সবকিছু একত্রিত হয়।
আপনার ফাইলের প্রতিটি নোট যদি মানচিত্রের একটি বিন্দু হয়, তবে আপনি নিকটতম বিন্দুগুলো খুঁজে বের করার মাধ্যমে উত্তর পেতে পারেন।
RAG প্রক্রিয়া:
- একটি প্রশ্নকে একটি বিন্দুতে রূপান্তর করুন।
- মানচিত্রে নিকটতম নোট-বিন্দুগুলো খুঁজে বের করুন।
- সেই নোটগুলো একটি AI-কে দিন।
- AI-কে নির্দেশ দিন যেন সে শুধুমাত্র সেই নোটগুলো ব্যবহার করেই উত্তর দেয়।
এটি AI-কে আন্দাজে উত্তর দেওয়া বা মিথ্যা বলা থেকে বিরত রাখে। এটি AI-কে আপনার প্রকৃত ডেটা ব্যবহার করতে বাধ্য করে।
আমি এই ধাপগুলো ব্যবহার করে আমার অ্যাপ, Synapse তৈরি করেছি। আমি মাত্র একদিনের মধ্যে শূন্য থেকে একটি কার্যকর সিস্টেম তৈরি করতে পেরেছি।
শিক্ষাটি হলো: পড়া বন্ধ করুন। প্রশ্ন করা শুরু করুন। আপনি যদি একটি সহজ উপমার মাধ্যমে কোনো ধারণা ব্যাখ্যা করতে না পারেন, তবে আপনি এখনও সেটি বোঝেননি। আপনি বুঝতে পেরেছেন তা প্রমাণ করার জন্য কিছু তৈরি করুন।
উৎস: https://dev.to/sabimantock/from-i-understood-nothing-to-building-a-rag-app-4033
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi