حافظه در ایجنتهای هوش مصنوعی: از کانتکست ویندو تا جستجوی معنایی
خلاصهٔ کاملتر
یه مدل زبانی بهتنهایی کاملاً stateless هست؛ یعنی هر بار که بهش یه پرامپت میدی، یه جواب میگیری و تمام — مدل دیگه تو رو نمیشناسه. اما ایجنت یه لایه orchestration دور مدل داره که تصمیم میگیره هر بار چی توی پرامپت بذاره. بهعبارت سادهتر، «حافظه» در ایجنتها یعنی: این دفعه چی رو توی پرامپت بریزیم؟
سادهترین روش اینه که کل مکالمه رو هر بار دوباره توی پرامپت بذاری. تا وقتی همهچیز جا بشه، مدل حافظه کاملی داره. مشکل اینجاست که هر مدل یه context window محدود داره. وقتی مکالمه بزرگتر از این سقف بشه، باید چیزی حذف بشه. سادهترین سیاست FIFO هست — قدیمیترین ترن اول حذف میشه — که اگه اون ترن حاوی اطلاعات مهم مثل اسم کاربر بوده باشه، میتونه خیلی بد تموم بشه.
دو نوع حافظه اصلی وجود داره که مکمل همدیگهن: حافظه کاری (working memory) شامل مکالمه جاری، ترنهای اخیر و ابزارهای در حال اجراست؛ حافظه بلندمدت (long-term memory) چیزاییه که ارزش نگهداشتن دارن، بهصورت embedding ذخیره میشن و بر اساس نیاز بازیابی میشن. یکی از چالشهای جدی، مدیریت تضاد اطلاعات و حفظ حریم خصوصیه؛ مثلاً اگه کاربر بگه «داری از استانبول به برلین نقل مکان میکنم»، سیستم باید اطلاعات قدیمی رو supersede کنه نه حذف، چون ممکنه بعداً بپرسی «قبلاً کجا زندگی میکردم؟». و اطلاعات حساس مثل شماره کارت بانکی باید قبل از ذخیره redact بشن.
embedding ها ابزار اصلی برای جستجوی معناییان. هر تکه متن به یه بردار عددی تبدیل میشه (مثلاً ۱۵۳۶ یا ۳۰۷۲ بُعد در مدلهای OpenAI) بهگونهای که متنهای با معنای مشابه، بردارهای نزدیک به هم دارن. وقتی کاربر یه سوال میپرسه، سوال هم embed میشه و با cosine similarity نزدیکترین خاطرات پیدا میشن و توی پرامپت گنجونده میشن.
از دید علوم شناختی، چهار نوع حافظه برای ایجنتها تعریف میشه:
- Episodic: لاگ زماندار رویدادها — «سهشنبه کاربر درباره Berserk پرسید»
- Semantic: دانش پایه و واقعیتها — مثل یه کاتالوگ آثار هنری
- Procedural: مهارتها و ابزارها — چطور یه tool رو صدا بزنم
- Working: کانتکست زنده و فعال توی پرامپت جاری
وقتی همه اینها کنار هم باشن، یه ایجنت میتونه به سوالی مثل «بیشتر درباره اون اثر Refik که گفتی بگو» جواب بده: episodic پیدا میکنه اون مکالمه کجا بوده، semantic جزئیات اثر رو میآره، procedural اگه داده زندهای لازم باشه tool میزنه، و working همه اینها رو کنار پیام جدید کاربر میذاره تا LLM جواب بده. RAG (Retrieval-Augmented Generation) همین پایپلاین کامله که اکثر ایجنتهای تولیدی روش کار میکنن.
نکات کلیدی:
- مدلهای زبانی statelessان؛ «حافظه» یعنی ایجنت تصمیم بگیره هر ترن چی توی پرامپت بذاره
- context window محدوده، پس FIFO سادهترین ولی بدترین سیاست حذفه
- حافظه کاری (working) برای استدلال لحظهایه؛ حافظه بلندمدت با embedding و vector search کار میکنه
- مدیریت تضاد اطلاعات و redact کردن PII از مهمترین چالشهای طراحی حافظهست
- چهار نوع حافظه (episodic, semantic, procedural, working) مکمل همدیگهن
- پایپلاین RAG قلب اکثر ایجنتهای تولیدی امروزیه




