چرا ایجنتهای هوش مصنوعی همهچیزو فراموش میکنن
خلاصهٔ کاملتر
به گفتهٔ نویسنده، حافظه فرقِ بین یه ایجنتِ واقعاً مفید و یه API بیحافظهست. آزمایشِ Hermes Agent روشن نشون داد وقتی به ایجنت یه حافظهٔ معناییِ ساختارمند بدی، عملکردش رو کارهای پیچیده بهتر میشه: کمتر خودشو تکرار میکنه و رو استدلالِ قبلی میسازه. خبرِ خوب اینه که برای این کار به خودِ Hermes نیازی نیست و میشه سیستمو با vector databaseهای محلی خودت ساخت.
نکتهٔ اصلیِ Hermes این بود که ذخیرهٔ خاطرات بهشکلِ vector embedding (نه لاگِ متنیِ خام) اجازهٔ بازیابیِ معنایی میده، نه فقط تطبیقِ کلیدواژه؛ یعنی دو جمله با معنای یکسان ولی کلماتِ متفاوت، بردارهای نزدیک دارن. محدودیتش هم قفلبودن تو اکوسیستمِ خودش بود.
نویسنده میگه هر سیستمِ حافظهٔ معنایی سه لایهٔ مستقل داره: ذخیرهسازی (یه vector database که بردارها رو کنارِ متن و متادیتا نگه میداره)، خطِ لولهٔ embedding (تبدیلِ مشاهدهها و تصمیمها به بردار) و بازیابی و تزریق (پرسوجو با context فعلی و تزریقِ مرتبطترین خاطرات به پرامپت). چون این سه لایه مستقلن، میشه هرکدومو بدونِ دستزدن به بقیه عوض کرد.
برای دیتابیس، نویسنده ChromaDB رو سادهترین نقطهٔ شروع میدونه (in-process، مناسبِ پروتوتایپ)، Qdrant رو برای محیطِ محکمترِ محلی، FAISS رو برای جستوجوی سریعِ محض بدونِ persistence، و LanceDB رو برای اسکنِ حافظههای بزرگ. برای embedding هم گزینههای محلی مثل nomic-embed-text یا all-MiniLM رو معرفی میکنه. یه تابعِ ساده برای ساختِ embedding این شکلیه:
def embed_text(text: str) -> list[float]:
response = ollama.embeddings(
model="nomic-embed-text",
prompt=text
)
return response["embedding"]یه تصمیمِ مهم اینه که چی رو embed کنی. به گفتهٔ نویسنده نباید لاگِ خامِ گفتگو رو بریزی؛ بهجاش باید مشاهدههای خلاصهشده، تصمیمها همراه با دلیل، نتیجهٔ کارها و ترجیحاتِ کاربرو ذخیره کنی. برای همین بهتره قبل از ذخیره، یه گامِ استخراجِ حافظه بذاری که فقط محتوای ارزشمندو در یکی دو جمله بیرون بکشه؛ این کار کیفیتِ بازیابیو خیلی بالا میبره.
نویسنده چند تکنیکِ تکمیلی هم میگه: جستوجوی ترکیبی (semantic + کلیدواژه) برای اسمهای خاص و شناسهها، افتِ زمانی که خاطراتِ قدیمیترو کموزنتر میکنه، و جداکردنِ حافظهٔ رویدادی (اتفاقهای خاص) از حافظهٔ معنایی (دانشِ کلیِ ساختهشده). برای مدیریتِ درازمدت هم حذفِ موارد تکراری، ادغامِ دورهای (خوشهبندی و خلاصهسازیِ خاطراتِ مشابه) و امتیازِ اهمیت رو پیشنهاد میده.
در آخر نویسنده هشدار میده که تزریقِ حافظه میتونه سریع context رو پُر کنه؛ پس روی تعدادِ خاطراتِ تزریقشده سقف بذار (۵ تا ۸ کافیه) و خاطراتِ قدیمیترو خلاصه کن. رایجترین اشتباهها هم اینن: ذخیرهٔ بیشازحد و تحتاللفظی، بیتوجهی به کیفیتِ بازیابی، و ریختنِ همهچی تو یه collection واحد بهجای تفکیکِ انواعِ حافظه.
نکات کلیدی:
- حافظهٔ معنایی خاطراتو بهشکلِ embedding ذخیره و بر اساسِ معنا بازیابی میکنه، نه کلیدواژه.
- سه لایهٔ مستقل: ذخیرهسازی، خطِ لولهٔ embedding، و بازیابی/تزریق.
- قبل از ذخیره یه گامِ استخراج بذار تا سیگنالِ خلاصه ذخیره بشه نه لاگِ خام.
- افتِ زمانی، جستوجوی ترکیبی و تفکیکِ حافظهٔ رویدادی از معنایی کیفیتو بالا میبره.
- روی تعدادِ خاطراتِ تزریقشده سقف بذار تا context پُر نشه.




