حافظه عامل (Agent): ۷ نوع، که ۲ تای آنها در واقع چیزی را به خاطر نمیسپارند
عامل شما مشکل حافظه ندارد؛ بلکه دارای هفت نوع مختلف حافظه است. اکثر تیمها فقط دو نوع از آنها را میسازند.
اولین چیزی که باید درک کنید این است: مدل هیچچیز را به خاطر نمیسپارد. یک LLM یک تابع خالص (pure function) است. ورودی میگیرد و خروجی میدهد. هیچ حالتی (state) را بین فراخوانیها با خود حمل نمیکند. آنچه شبیه به حافظه به نظر میرسد، صرفاً لایهای است که با هر درخواست، تاریخچه را دوباره ارسال میکند. شما برای هر بار ارسال این توکنها هزینه پرداخت میکنید.
بیشتر تلاشهای مهندسی به دو الگو محدود میشوند: تاریخچه گفتگو (conversation history) و RAG. اینها دو مورد از آن هفت نوع هستند. مشکل چیست؟ اینها باعث نمیشوند عامل شما در طول زمان هوشمندتر شود.
در اینجا هفت نوع حافظه آورده شده است:
• کاری (Working): هر آنچه در پنجره بافت (context window) فعلی قرار دارد. • معنایی (Semantic): حقایق، ترجیحات و دانش دامنه (domain knowledge). • اپیزودیک (Episodic): گزارشی از رویدادهای گذشته و آنچه موفق یا ناموفق بوده است. • رویهای (Procedural): مهارتها، جریانهای کاری (workflows) و الگوهای ابزار. • بازیابی (Retrieval): استخراج دانش از طریق جستجوی شباهت. • پارامتری (Parametric): دانشی که در وزنهای مدل نهفته است. • آیندهنگر (Prospective): نیات آینده و وظایف زمانبندی شده.
دو مورد از اینها حافظه واقعی نیستند. RAG صرفاً یک مکانیسم تحویل است. مانند لولهکشی است، نه خودِ آب. RAG دادهها را از یک منبع به حافظه کاری منتقل میکند. اگر فقط از یک پایگاه داده برداری (vector database) استفاده کنید، فقط یک لوله ساختهاید و مایع را فراموش کردهاید.
برای ساخت عاملی که واقعاً یاد میگیرد، به یک حلقه تثبیت (consolidation loop) نیاز دارید. این یعنی تبدیل حافظه اپیزودیک به حافظه معنایی.
این فرآیند به این صورت عمل میکند: ۱. عامل یک رویداد را تجربه میکند (Episodic). ۲. عامل تکرار یک الگوی مشابه را بارها مشاهده میکند. ۳. عامل آن الگو را به یک قاعده دائمی تبدیل میکند (Semantic).
حالا دیگر نیازی نیست که عامل از طریق دوازده مثال استدلال کند؛ بلکه به سادگی یک حقیقت را اعمال میکند.
چگونه اولویتبندی کنید:
- مدیریت حافظه کاری به عنوان یک بودجه: این بالاترین هزینه شماست. از خلاصهسازی (summarization) و حذف (eviction) در مراحل اولیه استفاده کنید.
- جدا کردن منابع ذخیرهسازی: حقایق، رویدادها و قواعد را در مکانهای مختلف نگه دارید.
- استفاده از یک زمانبند (scheduler) برای حافظه آیندهنگر: برای کارهایی که باید در تاریخ مشخصی انجام شوند، از یک ذخیرهساز برداری (vector store) استفاده نکنید.
- تعیین مرز مشخص برای حافظه پارامتری: از مدل برای استدلال استفاده کنید، اما برای دادههای متغیر مانند نرخ بهره یا قوانین محصول، از منابع ذخیرهسازی خودتان استفاده کنید.
بیشتر عاملهای امروزی فقط یک پنجره بافت (context window) و یک پایگاه داده برداری (vector DB) هستند. عاملهایی برنده میشوند که میتوانند اشتباهات دیروز را به قواعد فردا تبدیل کنند.
Source: https://dev.to/shudiptotrafder/agent-memory-7-types-and-2-of-them-arent-memory-6oi
Optional learning community: https://t.me/GyaanSetuAi
