এজেন্টের মেমরি: ৭টি ধরন, এবং এর মধ্যে ২টি আসলে মনে রাখে না
আপনার এজেন্টের মেমরিতে কোনো সমস্যা নেই। এর সাতটি ভিন্ন ধরনের মেমরি রয়েছে। বেশিরভাগ টিম কেবল দুটি তৈরি করে।
প্রথম যে বিষয়টি আপনাকে বুঝতে হবে তা হলো: মডেলটি কিছুই মনে রাখে না। একটি LLM হলো একটি pure function। এটি একটি ইনপুট গ্রহণ করে এবং একটি আউটপুট প্রদান করে। এটি কলগুলোর মধ্যে কোনো state বহন করে না। যা মেমরির মতো মনে হয়, তা আসলে প্রতিটি রিকোয়েস্টের সাথে হিস্ট্রি পুনরায় পাঠানোর একটি লেয়ার মাত্র। আপনাকে প্রতিবার সেই টোকেনগুলোর জন্য মূল্য দিতে হয়।
বেশিরভাগ ইঞ্জিনিয়ারিং প্রচেষ্টা দুটি প্যাটার্নে সীমাবদ্ধ থাকে: conversation history এবং RAG। এগুলো সাতটি ধরনের মধ্যে দুটি। সমস্যাটি কী? এগুলো সময়ের সাথে সাথে আপনার এজেন্টকে আরও বুদ্ধিমান করে তোলে না।
এখানে মেমরির সাতটি ধরন দেওয়া হলো:
• Working: বর্তমান context window-এর সবকিছু। • Semantic: তথ্য, পছন্দ এবং ডোমেইন নলেজ। • Episodic: অতীতের ঘটনা এবং কী কাজ করেছে বা কী ব্যর্থ হয়েছে তার একটি লগ। • Procedural: দক্ষতা, ওয়ার্কফ্লো এবং টুলের প্যাটার্ন। • Retrieval: similarity search-এর মাধ্যমে জ্ঞান আহরণ করা। • Parametric: মডেলের weights-এ গেঁথে থাকা জ্ঞান। • Prospective: ভবিষ্যতের পরিকল্পনা এবং নির্ধারিত কাজ।
এর মধ্যে দুটি প্রকৃত মেমরি নয়। RAG হলো কেবল একটি ডেলিভারি মেকানিজম। এটি হলো প্লাম্বিং বা পাইপলাইন, পানি নয়। এটি একটি স্টোর থেকে ডেটাকে working memory-তে নিয়ে আসে। আপনি যদি কেবল একটি vector database ব্যবহার করেন, তবে আপনি একটি পাইপ তৈরি করেছেন কিন্তু তরলটি ভুলে গেছেন।
এমন একটি এজেন্ট তৈরি করতে যা প্রকৃতপক্ষে শিখতে পারে, আপনার একটি consolidation loop প্রয়োজন। এর অর্থ হলো episodic memory-কে semantic memory-তে রূপান্তরিত করা।
প্রক্রিয়াটি এভাবে কাজ করে:
- এজেন্ট একটি ঘটনার সম্মুখীন হয় (Episodic)।
- এজেন্ট একই প্যাটার্ন বারবার দেখতে পায়।
- এজেন্ট সেই প্যাটার্নটিকে একটি স্থায়ী নিয়মে রূপান্তর করে (Semantic)।
এখন, এজেন্টকে বারোটি উদাহরণের মাধ্যমে যুক্তি দেওয়ার প্রয়োজন নেই। এটি কেবল একটি তথ্য প্রয়োগ করে।
আপনার বিল্ডকে কীভাবে অগ্রাধিকার দেবেন:
- working memory-কে একটি বাজেট হিসেবে পরিচালনা করুন। এটি আপনার সবচেয়ে বড় খরচ। দ্রুত summarization এবং eviction ব্যবহার করুন।
- আপনার স্টোরগুলোকে আলাদা রাখুন। তথ্য, ঘটনা এবং নিয়মগুলো ভিন্ন ভিন্ন জায়গায় রাখুন।
- prospective memory-র জন্য একটি scheduler ব্যবহার করুন। নির্দিষ্ট তারিখে যা হওয়া প্রয়োজন, তার জন্য vector store ব্যবহার করবেন না।
- parametric memory-র জন্য একটি কঠোর সীমারেখা টানুন। যুক্তির জন্য মডেল ব্যবহার করুন, কিন্তু সুদের হার বা পণ্যের নিয়মের মতো পরিবর্তনশীল (volatile) ডেটার জন্য আপনার নিজস্ব স্টোর ব্যবহার করুন।
বর্তমানের বেশিরভাগ এজেন্ট কেবল একটি context window এবং একটি vector DB মাত্র। যে এজেন্টগুলো জয়ী হয়, সেগুলো হলো সেই সব এজেন্ট যারা গতকালের ভুলগুলোকে আগামীকালের নিয়মে রূপান্তর করতে পারে।
উৎস: https://dev.to/shudiptotrafder/agent-memory-7-types-and-2-of-them-arent-memory-6oi
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi
