تصور کنید یک دستیار دیجیتال دارید که تمام ترجیحات سالانهٔ شما را میشناسد، اما همین حالا فراموش کرده است که یک ساعت پیش روی چه خط کدی کار میکردید. این تضاد میان اهمیت بلندمدت و نیازهای فوری، بزرگترین نقطهضعف حافظههای فعلی در عاملهای هوش مصنوعی است.
پروژهٔ Mycelium که در ۸ سپتامبر ۲۰۲۶ بهصورت متنباز منتشر شد، با این فلسفه طراحی شده که «فراموش کردن یک ویژگی است، نه یک باگ». این سامانه بهجای تکیه بر جستوجوی برداری (Vector Search) — که شبیه به یک بایگانی خشک است و فقط شباهت کلمات را میسنجد — از یک گراف ارتباطی پویا استفاده میکند که شبیه به نحوهٔ ایجاد پیوندها در مغز انسان عمل میکند. این پروژه در واقع چالشی است برای تکیهٔ فعلی صنعت بر جستوجوی سادهٔ برداری.
طبق مستندات این پروژه، اکثر حافظههای فعلی مانند یک فایل یادداشت ساده هستند؛ آنها اسناد را در یک فایل ذخیره کرده و بر اساس شباهت متنی بازیابی میکنند. آنها میدانند هر سند کجاست، اما نمیدانند کدام سند برای کاربر «حیاتیتر» است. این رویکرد اغلب در تمایز بین حقیقتی که فقط یک بار به آن نیاز دارید و یک ترجیح بنیادین که روزانه به آن ارجاع میدهید، شکست میخورد. این وضعیت را مانند یک فایل کابینت دیجیتال تصور کنید که میداند هر کاغذ کجاست، اما نمیداند شما در واقع از کدامیک استفاده میکنید.
همانطور که در تحلیلهای قبلی ما دربارهی معماریهای بازیابی اطلاعات اشاره کردیم، تکیه صرف بر شباهت معنایی باعث میشود مدلها بین یک حقیقت گذرا و یک ترجیح بنیادین تمایز قائل نشوند. این چالش در سیستمهای تجاری نیز دیده میشود؛ برای مثال، تلاشهای اخیر شرکت آنتروپیک برای ایجاد حافظه یکپارچه در کلد گامی در جهت کاهش تکرار دستورات و بهبود تداوم حافظه در محیطهای کاری است.
Mycelium برای حل این مشکل از رویکرد هبی (Hebbian approach) استفاده میکند. در این مدل، خاطرات گرههایی هستند که با تکرار استفاده، پیوندهایشان تقویت میشود. اگر دو مفهوم بهطور مکرر در یک زمینه ظاهر شوند، سیستم یک پیوند قویتر بین آنها میسازد. برعکس، خاطراتی که در طول زمان نادیده گرفته میشوند، بهطور عمدی تحلیل میروند (Decay). این تحلیل رفتن یک انتخاب طراحی آگاهانه است تا از تبدیل شدن سیستم به یک بایگانی ایستا از هر چیزی که کاربر تا به حال تایپ کرده است، جلوگیری شود.
مکانیزم «هابها» یا مراکز دانش
این سامانه برای تطبیق کلمات کلیدی از SQLite با افزونهٔ FTS5 استفاده میکند، در حالی که یک گراف ارتباطی، روابط بین مفاهیم را مدیریت میکند. در اینجا، بردار معنایی (Embedding) — که مثل یک کارت معرفی عددی برای هر واژه است و همسایگی کلمات را مشخص میکند — تنها به عنوان سیگنال ثانویه عمل میکند و نقش اصلی را به «تعداد دفعات دسترسی» و «قدرت پیوندها» میسپارد. در واقع، محرک اصلی بازیابی، فرکانس دسترسی و قدرت این اتصالات است، نه بردارها. این تغییر رویکرد از جستوجوی کلمات به درک روابط، مشابه تحولی است که در تحلیل دادههای جنایی برای کاهش حجم بررسی اسناد مشاهده شد و سرعت پردازش را بهشدت افزایش داد.
فرآیند بازیابی در Mycelium از طریق تکمیل الگو (Pattern Completion) صورت میگیرد. یک پرسوجو تنها متن را تطبیق نمیدهد، بلکه باعث فعال شدن خاطرات منطبق شده و سپس فعالسازی را در سراسر گراف پخش میکند. یک نشانهٔ ناقص، کل خوشهای را که معمولاً با آن فعال میشود، فرا میخواند. این سازوکار باعث ظهور «هابها» (Hubs) میشود؛ یعنی همان دانشهای کلیدی و تکیهگاهی که کاربر بیشترین ارجاع را به آنها دارد.
این هابها برای عاملهایی که نیاز دارند موارد زیر را درک کنند، حیاتی هستند:
- کاربر دقیقاً کیست.
- کاربر در هفتههای گذشته روی چه موضوعاتی کار کرده است.
- ترجیحات کلی کاربر.
تلهٔ تازگی (The Recency Trap)
به گزارش توسعهدهندهٔ این پروژه، در مراحل توسعه یک نقص بحرانی مشاهده شد: سیستم در یادآوری موارد مهم بیش از حد موفق بود. وقتی کاربر یک جلسه (Session) جدید را باز میکرد و میپرسید «همین الان داشتم روی چه چیزی کار میکردم؟»، هوش مصنوعی بهجای قطعهکد یک ساعت پیش، معماری کلی پروژه (که یک هاب قدرتمند بود) را برمیگرداند. سیستم سه حقیقتی را برمیگرداند که توسعهدهنده مدام آنها را چک میکرد و مطالبی از ماهها پیش که همه چیز به آنها متصل بود.
این اتفاق به این دلیل رخ میداد که خاطرات جدید، در ابتدا هیچ پیوند یا دفعات دسترسی ندارند. در سیستمی که رتبهبندی برابر است با مرکزیت (تعداد پیوندها × تعداد دسترسی)، یک خاطرهٔ یک ساعت پیش همیشه مقابل یک هابِ چندماهه که تقویت شده است، شکست میخورد. توسعهدهنده اشاره کرد که این وضعیت دقیقاً شبیه حافظهٔ انسان است؛ شما میتوانید جزئیات خانهٔ دوران کودکیتان را به یاد بیاورید، اما یادتان میرود کلیدها را کجا گذاشتهاید.
در اینجا «برجستگی» (Salience) و «تازگی» (Recency) روی دو محور متفاوت قرار دارند. وقتی برجستگی توسط تقویت تکراری تسلط یابد، خاطرات جدید بهطور ساختاری در وضعیت ضعف قرار میگیرند. توسعهدهنده متوجه شد سیستمی ساخته است که در گفتن اینکه «او کیست» عالی است، اما در گفتن اینکه «او در حال حاضر چه میکند» افتضاح است.
حل خطای دستهبندی
اولین تلاش برای رفع این مشکل، برخورد با آن به عنوان یک مسئلهٔ وزندهی بود. توسعهدهنده یک «تقویت تازگی» (Recency Boost) اضافه کرد و فرمول را به «مرکزیت + λ(تازگی)» تغییر داد. اما این کار باعث ایجاد یک مرز شکست لغزنده شد. افزایش وزن برای موارد جدید، هابهای مهم را به پایین میراند و کاربرد کلی سیستم را مختل میکرد. وقتی پیچ تنظیم را دوباره پایین میآورد، کارهای فوری دوباره در اعماق حافظه غرق میشدند. یک متغیر واحد نمیتوانست دو قصد متفاوت را مدیریت کند؛ بلکه فقط میتوانست انتخاب کند که کدامیک از آنها را ناامید کند.
راهکار نهایی، توقف استفاده از یک امتیاز واحد برای مرتبط بودن و پذیرش این واقعیت بود که «مرکزیت» و «تازگی» دو مسیر کاملاً متفاوت هستند:
- مسیر مرکزیت (Centrality Route): برای زمینههای کلی و شناسایی هابها استفاده میشود. این مسیر همچنان بر اساس پیوندها و فرکانس دسترسی است و بارگذاری زمینهٔ کلی (General Context) را مدیریت میکند.
- مسیر تازگی (Recency Route): برای تداوم فوری کار است. این مسیر موارد را صرفاً بر اساس زمان ایجاد یا آخرین تغییر رتبهبندی میکند و پیوندها و تعداد دسترسیها را کاملاً نادیده میگیرد.
با متصل کردن مسیر تازگی به لحظهٔ شروع جلسه (Session Startup)، عامل اکنون ابتدا زمینهٔ فوری را بارگذاری میکند. این کار اطلاعات لازم برای ادامه دادن کار را به عامل میدهد. پس از بارگذاری این زمینه، اگر عامل به درک گستردهتری نیاز داشته باشد، میتواند هابها را فراخوانی کند.
این جداسازی، سیستم را از یک تابع رتبهبندی ساده به سه قصد بازیابی مجزا تبدیل کرد:
- تداوم (Continuity): اخیراً چه اتفاقی افتاده است؟
- زمینه (Context): بهطور کلی چه چیزی اهمیت دارد؟
- بازیابی (Recall): چه چیزی با این نشانه مرتبط است؟
این تغییر نشان میدهد که «مرتبط بودن» (Relevance) یک معیار واحد نیست. برای هر کسی که سیستمهای بازیابی میسازد، درس این است که برجستگی و تازگی در جهتهای مخالف میکشند. اجبار آنها به قرار گرفتن در یک امتیاز واحد، تضمین میکند که سیستم در یکی از آنها بهطور نامحسوسی بد عمل کند. اگر برای برجستگی تنظیم کنید، تازگی را از دست میدهید و بالعکس.
توسعهدهنده نتیجه گرفت که مشکل یک باگ رتبهبندی نبود، بلکه یک خطای دستهبندی بود؛ یعنی داشتن یک پرسوجو در جایی که به دو پرسوجوی مجزا نیاز بود. کد این پروژه در github.com/constant-itis/mycelium-memory در دسترس است. جالب است که جداسازی کد در عمل تنها چند خط بود، اما متوجه شدن نیاز به این جداسازی ماهها زمان برد.
گام بعدی شما
- اگر در حال توسعهٔ عاملهای هوش مصنوعی هستید، بهجای یک امتیاز واحد برای Relevance، دو مسیر مجزا برای Context و Recency تعریف کنید.
- کد این پروژه را در
github.com/constant-itis/mycelium-memoryبررسی کنید تا نحوهٔ پیادهسازی گرافهای هبی را ببینید. - در سیستمهای RAG خود، مکانیسم «تحلیل رفتن» (Decay) را برای حذف دادههای کماهمیت اضافه کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو