آموزش هوش مصنوعی

حافظه ایجنت؛ ذخیره ترجیحات مفید بدون انباشتن اطلاعات نامعتبر

متوسط مطالعه در ۱۰ دقیقه
mahdyar

حافظه ایجنت یکی از جذاب‌ترین قابلیت‌های یک دستیار است. دستیاری که یادش می‌ماند شما عصرها مطالعه می‌کنید یا به پایتون علاقه دارید، تجربه‌ی بسیار بهتری می‌سازد. اما حافظه فقط وقتی مفید است که اطلاعات ذخیره‌شده هنوز درست و مرتبط باشد. اگر دستیار یک حدس موقت را به‌عنوان ترجیح دائمی نگه دارد، شخصی‌سازی به منبع خطا تبدیل می‌شود.

در این قسمت از مجموعه‌ی آموزش هوش مصنوعی تخته سبز، انواع حافظه‌ی ایجنت را می‌شناسیم و ابزارهای ذخیره‌سازی آن را مرور می‌کنیم. بعد می‌بینیم ایجنت چطور با حافظه از گفت‌وگوهایش یاد می‌گیرد. در پایان حافظه‌ای طراحی می‌کنیم که میان ترجیح بلندمدت و درخواست موقت فرق بگذارد.

حافظه ایجنت چیست و چرا مهم است؟

حافظه برای ایجنت یعنی سازوکارهایی که به آن اجازه می‌دهند اطلاعات را نگه دارد و بعداً بازیابی کند. این اطلاعات ممکن است جزئیات یک گفت‌وگو، ترجیحات کاربر، کارهای قبلی یا حتی الگوهای آموخته‌شده باشد.

بدون حافظه، برنامه‌های هوش مصنوعی بی‌حالت‌اند؛ هر تعامل از صفر شروع می‌شود. کاربر باید هر بار همه‌چیز را از اول بگوید. این تجربه‌ای تکراری و آزاردهنده است.

چهار توانایی که حافظه می‌دهد

هوشمندی یک ایجنت به توانایی‌اش در یادآوری و استفاده از اطلاعات گذشته بستگی دارد. حافظه چهار توانایی به ایجنت می‌دهد. بازتاب؛ یادگیری از اقدام‌ها و نتیجه‌های قبلی. تعامل؛ نگه داشتن زمینه در طول گفت‌وگو.

توانایی سوم، پیش‌بینی نیاز و واکنش مناسب بر اساس داده‌های گذشته است. و چهارم، استقلال بیشتر با تکیه بر دانش ذخیره‌شده. هدف همه‌ی این‌ها ایجنتی قابل‌اعتمادتر و توانمندتر است.

هفت نوع حافظه‌ی ایجنت

حافظه یک چیز نیست. انواع مختلفی دارد که هر کدام کاربرد خودش را دارد.

حافظه‌ی کاری، کوتاه‌مدت و بلندمدت

حافظه‌ی کاری مثل یک کاغذ یادداشت موقت است که ایجنت در طول یک کار استفاده می‌کند. مرتبط‌ترین اطلاعات لحظه را نگه می‌دارد؛ مثلاً اینکه کاربر الان می‌خواهد سفری به پاریس رزرو کند.

حافظه‌ی کوتاه‌مدت اطلاعات را در طول یک گفت‌وگو یا جلسه نگه می‌دارد. اگر کاربر بپرسد «پرواز پاریس چقدر است؟» و بعد «اقامتش چطور؟»، حافظه‌ی کوتاه‌مدت می‌داند «اقامتش» به پاریس اشاره دارد. در Microsoft Agent Framework این حافظه به یک جلسه‌ی ایجنت نگاشت می‌شود.

حافظه‌ی بلندمدت میان جلسه‌ها باقی می‌ماند. ترجیحات کاربر، تعامل‌های تاریخی یا دانش عمومی را در دوره‌های طولانی نگه می‌دارد. مثلاً اینکه یک کاربر به اسکی علاقه دارد، قهوه با منظره‌ی کوه دوست دارد و به دلیل آسیب‌دیدگی قبلی، مسیرهای سخت را نمی‌خواهد.

حافظه‌ی شخصیت، رویدادی و موجودیت

حافظه‌ی شخصیت به ایجنت کمک می‌کند نقش ثابتی داشته باشد. اگر ایجنت «برنامه‌ریز متخصص سفرهای اسکی» است، این حافظه نقشش را تقویت می‌کند و پاسخ‌هایش را با همین تخصص هماهنگ نگه می‌دارد.

حافظه‌ی رویدادی یا گردش کار، توالی قدم‌های ایجنت در یک کار پیچیده را نگه می‌دارد؛ موفقیت‌ها و شکست‌ها. اگر رزرو یک پرواز به دلیل نبود جای خالی شکست خورد، ایجنت دفعه‌ی بعد گزینه‌ی دیگری را امتحان می‌کند. حافظه‌ی موجودیت هم افراد، مکان‌ها و رویدادهای خاص را از گفت‌وگوها استخراج و نگه می‌دارد.

RAG ساختاریافته

RAG ساختاریافته هم به‌عنوان یک فناوری حافظه مطرح شده است. به‌جای ذخیره‌ی متن خام، اطلاعات متراکم و ساختاریافته را از منابع مختلف، مثل گفت‌وگو، ایمیل یا تصویر، استخراج می‌کند. مثلاً جزئیات پرواز را از یک ایمیل تأیید بیرون می‌کشد و به‌صورت فیلدهای مشخص ذخیره می‌کند. نتیجه، بازیابی دقیق‌تر از جستجوی ساده‌ی کلمه‌ای است.

جدول زیر هفت نوع حافظه را کنار هم می‌گذارد.

نوع حافظهمدت نگه‌دارینمونه در دستیار آموزشی
کارییک کار«کاربر الان دنبال دوره‌ی پایتون است»
کوتاه‌مدتیک جلسه«آن دوره» یعنی همان پایتون مقدماتی
بلندمدتمیان جلسه‌هاترجیح مطالعه در عصرها
شخصیتدائمینقش مشاور تحصیلی
رویدادیمیان کارهاثبت‌نام قبلی به دلیل پر بودن ظرفیت شکست خورد
موجودیتمیان جلسه‌هانام دوره‌ها و مدرسانی که کاربر ذکر کرده
RAG ساختاریافتهبلندمدتفیلدهای استخراج‌شده از برگه‌ی ثبت‌نام

ابزارهای ذخیره‌سازی حافظه

پیاده‌سازی حافظه یک فرایند منظم است: تولید، ذخیره‌سازی، بازیابی، ترکیب، به‌روزرسانی و حتی «فراموش کردن» اطلاعات. مورد آخر به‌خصوص مهم است و در ادامه به آن برمی‌گردیم.

Mem0 و Cognee

Mem0 یک لایه‌ی حافظه‌ی ماندگار برای ایجنت‌هاست. در دو مرحله کار می‌کند. در مرحله‌ی استخراج، از پیام‌های گفت‌وگو اطلاعات مهم را پیدا می‌کند. در مرحله‌ی به‌روزرسانی، تصمیم می‌گیرد اطلاعات تازه را اضافه کند، حافظه‌ی قبلی را به‌روز کند یا حذف کند. این کار جلوی حافظه‌ی تکراری و متناقض را می‌گیرد.

Cognee یک حافظه‌ی معنایی متن‌باز است که داده‌ی ساختاریافته و بی‌ساختار را به گراف دانش تبدیل می‌کند. در بازیابی، شباهت برداری، ساختار گراف و استدلال مدل را ترکیب می‌کند. برای ایجنت‌هایی که باید رابطه‌ی میان موجودیت‌ها را بفهمند، مثل اینکه کدام دوره پیش‌نیاز کدام است، مناسب است.

ذخیره‌ی حافظه با RAG

راه دیگر، استفاده از سرویس‌های جستجو مثل Azure AI Search به‌عنوان محل ذخیره و بازیابی حافظه است. حافظه‌ها مثل اسناد نمایه می‌شوند و هنگام نیاز با جستجوی معنایی بازیابی می‌شوند.

این رویکرد برای حجم زیاد حافظه مناسب است و از همان زیرساختی استفاده می‌کند که احتمالاً برای RAG دارید. فقط یادتان باشد حافظه‌ی کاربر اطلاعات شخصی است؛ کنترل دسترسی باید تضمین کند هر کاربر فقط حافظه‌ی خودش را ببیند.

ایجنتی که از گفت‌وگو یاد می‌گیرد

یک الگوی رایج برای ایجنت‌های خودبهبوددهنده، افزودن یک «ایجنت دانش» است. این ایجنت جداگانه گفت‌وگوی کاربر و ایجنت اصلی را مشاهده می‌کند و چهار کار انجام می‌دهد.

چهار کار ایجنت دانش

اول، اطلاعات ارزشمند را شناسایی می‌کند؛ آیا بخشی از گفت‌وگو ارزش ذخیره شدن به‌عنوان دانش عمومی یا ترجیح کاربر را دارد؟ دوم، ترجیح یا یادگیری اصلی را استخراج و خلاصه می‌کند. سوم، آن را در پایگاه دانش، معمولاً یک پایگاه داده‌ی برداری، ذخیره می‌کند.

چهارم، وقتی کاربر گفت‌وگوی تازه‌ای شروع می‌کند، حافظه‌های مرتبط را بازیابی و به زمینه‌ی ایجنت اصلی اضافه می‌کند. به این ترتیب ایجنت اصلی بدون اینکه خودش درگیر مدیریت حافظه باشد، از آن بهره می‌برد.

بهینه‌سازی حافظه

دو بهینه‌سازی مهم وجود دارد. برای مدیریت تأخیر، می‌توان از یک مدل ارزان و سریع برای بررسی اولیه‌ی ارزش اطلاعات استفاده کرد و فقط در صورت لزوم سراغ استخراج دقیق‌تر رفت. این کار گفت‌وگوی کاربر را کند نمی‌کند.

برای نگه‌داری پایگاه دانش در حال رشد، اطلاعاتی که کمتر استفاده می‌شوند را می‌توان به ذخیره‌گاه سرد منتقل کرد. حافظه‌ی فعال کوچک و سریع می‌ماند.

طراحی حافظه‌ای که قابل‌اعتماد بماند

حالا به مهم‌ترین بخش می‌رسیم. حافظه‌ای که فقط اضافه می‌کند و هرگز چیزی را اصلاح یا حذف نمی‌کند، به‌مرور پر از اطلاعات کهنه و نادرست می‌شود. نمودار زیر چرخه‌ی عمر یک حافظه‌ی قابل‌اعتماد را نشان می‌دهد.

چرخه عمر حافظه ایجنت از استخراج و برچسب‌گذاری تا بازیابی و اصلاح یا حذف

منشأ و بازه‌ی اعتبار

هر حافظه باید سه برچسب داشته باشد: منشأ، یعنی از کدام گفت‌وگو یا منبع آمده؛ زمان ثبت؛ و در صورت لزوم بازه‌ی اعتبار. مهم‌ترین تمایز، فرق میان ترجیح بلندمدت و درخواست موقت است.

کد زیر حافظه را با همین برچسب‌ها ذخیره و فقط حافظه‌ی معتبر را بازیابی می‌کند:

python
from datetime import date

def remember(store: list, user_id: str, key: str, value: str, source: str, until: date | None = None):
    store.append({"user": user_id, "key": key, "value": value, "source": source,
                  "created": date.today(), "until": until})

def recall(store: list, user_id: str, key: str, today: date | None = None):
    today = today or date.today()
    valid = [m for m in store if m["user"] == user_id and m["key"] == key
             and (m["until"] is None or m["until"] >= today)]
    temporary = [m for m in valid if m["until"] is not None]
    return (temporary or valid or [None])[-1]  # موقتِ معتبر بر دائمی مقدم است

اگر کاربر بگوید «این ماه صبح‌ها درس می‌خوانم»، این ترجیح با تاریخ انقضا ذخیره می‌شود. تا پایان ماه، recall ترجیح موقت را برمی‌گرداند. بعد از آن، ترجیح بلندمدت «عصرها» دوباره فعال می‌شود؛ بی‌آنکه هرگز پاک شده باشد.

شفافیت و حق حذف

کاربر باید بتواند ببیند دستیار درباره‌اش چه چیزهایی به خاطر سپرده است. صفحه‌ای ساده با فهرست حافظه‌ها و دکمه‌ی اصلاح و حذف کافی است. این کار هم اعتماد می‌سازد و هم خطاهای حافظه را زودتر آشکار می‌کند.

حذف باید واقعی باشد؛ یعنی حافظه از پایگاه داده‌ی برداری و از هر نسخه‌ی پشتیبان مرتبط هم پاک شود. در بسیاری از کشورها این حق کاربر قانونی است، نه فقط یک امکان خوب.

سناریوی عملی؛ ترجیح دائمی و تغییر موقت

دانشجویی ترجیح می‌دهد عصرها مطالعه کند. اما برای یک ماه به دلیل تغییر برنامه‌ی کاری، صبح‌ها وقت دارد. ورودی آزمون سه بخش دارد: ترجیح قبلی، درخواست تازه و بازه‌ی اعتبار تغییر.

معیار پذیرش و نمونه‌ی شکست

اقدام مورد بررسی، ثبت تغییر موقت بدون پاک کردن بی‌دلیل ترجیح بلندمدت است. معیار پذیرش دو بخش دارد: اطلاعات درست در بازه‌ی مناسب اعمال شود و کاربر بتواند حافظه را ببیند و اصلاح کند.

شکستی که باید عمداً دنبالش بگردید این است: تبدیل درخواست موقت به یک ویژگی دائمی کاربر. اگر حافظه تغییر یک‌ماهه را جای ترجیح همیشگی بنشاند، دو ماه بعد دستیار همچنان برنامه‌ی صبح پیشنهاد می‌دهد. سناریو را با تاریخ‌های مختلف اجرا کنید و مطمئن شوید پس از انقضا، ترجیح قبلی برمی‌گردد.

تمرین عملی؛ سیاست حافظه

خروجی این تمرین یک سیاست حافظه شامل منشأ، اعتبار زمانی و روش حذف داده است:

  1. فهرست کنید دستیار شما چه چیزهایی را باید به خاطر بسپارد و چه چیزهایی را هرگز نباید ذخیره کند.
  2. تابع‌های remember و recall را با برچسب منشأ و بازه‌ی اعتبار پیاده کنید.
  3. صفحه یا دستوری طراحی کنید که کاربر با آن حافظه‌هایش را ببیند و حذف کند.

مشخص کنید کدام بخش را واقعاً اجرا کرده‌اید و کدام هنوز فرض است.

سخن پایانی

حافظه ایجنت تجربه‌ی دستیار را از تکراری به شخصی تبدیل می‌کند. هفت نوع حافظه، از کاری و کوتاه‌مدت تا بلندمدت و رویدادی، هر کدام نقش خودش را دارد. ابزارهایی مثل Mem0 و Cognee و الگوی ایجنت دانش، ساخت حافظه را ساده‌تر می‌کنند. اما حافظه‌ی قابل‌اعتماد به طراحی نیاز دارد: منشأ و زمان هر حافظه ثبت شود، درخواست موقت با بازه‌ی اعتبار ذخیره شود و کاربر بتواند حافظه‌اش را ببیند، اصلاح و حذف کند.

در قسمت بعد یک نمونه‌ی عملی با Microsoft Agent Framework می‌سازیم.

این آموزش بر پایه‌ی درس Memory for AI Agents از مجموعه‌ی آزاد AI Agents for Beginners مایکروسافت (مجوز MIT) به فارسی بازنویسی و تکمیل شده است.

پرسش‌های پرتکرار

حافظه در ایجنت هوش مصنوعی یعنی چه؟

سازوکارهایی که به ایجنت اجازه می‌دهند اطلاعات را نگه دارد و بعداً بازیابی کند. بدون حافظه هر تعامل از صفر شروع می‌شود؛ با حافظه، ایجنت ترجیحات کاربر، کارهای قبلی و نتیجه‌ی آن‌ها را به یاد می‌آورد.

فرق حافظه‌ی کوتاه‌مدت و بلندمدت چیست؟

حافظه‌ی کوتاه‌مدت اطلاعات را فقط در طول یک گفت‌وگو یا جلسه نگه می‌دارد؛ مثل اینکه «آن» در پیام بعدی به کدام شهر اشاره دارد. حافظه‌ی بلندمدت میان جلسه‌ها باقی می‌ماند؛ مثل ترجیحات همیشگی کاربر.

Mem0 چیست؟

یک لایه‌ی حافظه‌ی ماندگار برای ایجنت‌هاست که در دو مرحله کار می‌کند؛ از پیام‌های گفت‌وگو اطلاعات مهم را استخراج می‌کند و بعد تصمیم می‌گیرد آن را اضافه، به‌روز یا حذف کند تا حافظه تکراری و متناقض نشود.

چطور جلوی حافظه‌ی نادرست یا کهنه را بگیریم؟

برای هر حافظه منشأ و زمان ثبت و در صورت لزوم تاریخ انقضا نگه دارید، درخواست‌های موقت را با بازه‌ی اعتبار ذخیره کنید و به کاربر اجازه دهید حافظه‌هایش را ببیند، اصلاح کند یا پاک کند.

دیدگاه‌ها

هنوز دیدگاهی ثبت نشده است. شروع‌کننده باشید — پرسش و اصلاح را با آغوش باز می‌پذیریم.

دیدگاه بگذارید

برای **پررنگ**، *مورب*، `کد` و لینک از Markdown استفاده کنید. لینک‌ها nofollow هستند.

پنج رقم داخل تصویر را وارد کنید. اعداد فارسی و انگلیسی پذیرفته می‌شوند.

تصویر کد امنیتی پنج‌رقمی

در حال دریافت کد امنیتی…

مهلت کد تمام شد. روی «کد جدید» بزنید.