وقتی دربارهٔ مزایای منحصربهفرد ساخت عاملهای هوش مصنوعی صحبت میشود، عمدتاً دو مورد مطرح میشوند: توانایی فراخوانی ابزارها برای تکمیل وظایف و توانایی بهبود در طول زمان. حافظه پایهٔ ایجاد عاملی است که خودش را بهبود میبخشد و میتواند تجربههای بهتری برای کاربران فراهم کند.
در این درس، به این خواهیم پرداخت که حافظه برای عاملهای هوش مصنوعی چیست و چگونه میتوانیم آن را مدیریت کنیم و برای بهبود برنامههای خود از آن استفاده کنیم.
این درس شامل موارد زیر است:
• درک حافظهٔ عاملهای هوش مصنوعی: حافظه چیست و چرا برای عوامل ضروری است.
• پیادهسازی و ذخیرهسازی حافظه: روشهای عملی برای افزودن قابلیتهای حافظه به عاملهای هوش مصنوعی شما، با تمرکز بر حافظه کوتاهمدت و بلندمدت.
• خودبهبودی عاملهای هوش مصنوعی: چگونه حافظه به عاملها امکان میدهد از تعاملات گذشته بیاموزند و در طول زمان بهتر شوند.
این درس دو دفترچهٔ آموزشی جامع را شامل میشود:
• 13-agent-memory.ipynb: پیادهسازی حافظه با استفاده از Mem0 و Azure AI Search همراه با Microsoft Agent Framework
• 13-agent-memory-cognee.ipynb: پیادهسازی حافظهٔ ساختیافته با استفاده از Cognee، ساخت خودکار گراف دانش مبتنی بر امبدینگها، نمایش تصویری گراف و بازیابی هوشمند
پس از تکمیل این درس، شما خواهید دانست چگونه:
• بین انواع مختلف حافظهٔ عاملهای هوش مصنوعی تمایز قائل شوید، از جمله حافظهٔ کاری، کوتاهمدت و بلندمدت، و همچنین شکلهای تخصصیتر مانند حافظهٔ شخصیت و حافظهٔ اپیزودیک.
• حافظهٔ کوتاهمدت و بلندمدت را برای عاملهای هوش مصنوعی پیادهسازی و مدیریت کنید با استفاده از Microsoft Agent Framework، بهرهگیری از ابزارهایی مانند Mem0، Cognee، حافظهٔ Whiteboard، و یکپارچهسازی با Azure AI Search.
• اصول پشت عاملهای هوش مصنوعی خودبهبوددهنده را درک کنید و چگونه سیستمهای مدیریت حافظهٔ قوی به یادگیری و سازگاری پیوسته کمک میکنند.
در هستهٔ خود، حافظه برای عاملهای هوش مصنوعی به مکانیزمهایی اشاره دارد که به آنها اجازه میدهد اطلاعات را نگهدارند و یادآوری کنند. این اطلاعات میتواند جزئیات مشخصی دربارهٔ یک گفتگو، ترجیحات کاربر، اقدامات گذشته یا حتی الگوهای یادگرفته شده باشد.
بدون حافظه، برنامههای هوش مصنوعی اغلب بدون حالت هستند، به این معنی که هر تعامل از ابتدا آغاز میشود. این منجر به تجربهای تکراری و ناامیدکننده برای کاربر میشود که در آن عامل زمینه یا ترجیحات قبلی را «فراموش» میکند.
هوش یک عامل به شدت با توانایی آن در یادآوری و بهکارگیری اطلاعات گذشته پیوند دارد. حافظه به عاملها امکان میدهد تا:
• انعکاسی باشند: از اقدامات و نتایج گذشته بیاموزند.
• تعاملپذیر باشند: نگهداشتن زمینه در طول یک گفتگو جریانیافته.
• پیشگیر و واکنشی باشند: نیازها را پیشبینی کنند یا بر اساس دادههای تاریخی به درستی واکنش نشان دهند.
• مستقل باشند: با تکیه بر دانش ذخیرهشده، عملکردی مستقلتر داشته باشند.
هدف از پیادهسازی حافظه این است که عاملها را قابلاعتمادتر و توانمندتر سازد.
این را مانند یک برگهٔ یادداشت موقت در نظر بگیرید که عامل در طول یک وظیفه یا فرایند فکری واحد از آن استفاده میکند. این حافظه اطلاعات فوری موردنیاز برای محاسبهٔ گام بعدی را در خود نگه میدارد.
برای عاملهای هوش مصنوعی، حافظهٔ کاری اغلب اطلاعات مرتبطترین قسمتهای یک گفتگو را ثبت میکند، حتی اگر تاریخچهٔ کامل چت طولانی یا بریده شده باشد. تمرکز آن بر استخراج عناصر کلیدی مانند نیازها، پیشنهادها، تصمیمها و اقدامات است.
مثال حافظهٔ کاری
در یک عامل رزرو سفر، حافظهٔ کاری ممکن است درخواست فعلی کاربر را ضبط کند، مانند «میخواهم سفر به پاریس رزرو کنم». این نیاز مشخص در زمینهٔ فوری عامل نگه داشته میشود تا تعامل جاری را هدایت کند.
این نوع حافظه اطلاعات را برای مدت یک گفتگو یا جلسه نگه میدارد. این همان زمینهٔ چت جاری است که به عامل اجازه میدهد به نوبتهای قبلی در دیالوگ ارجاع دهد.
مثال حافظهٔ کوتاهمدت
اگر کاربر بپرسد: «قیمت پرواز به پاریس چقدر خواهد بود؟» و سپس دنبال کند با «اقامت آنجا چطور؟»، حافظهٔ کوتاهمدت تضمین میکند که عامل میداند «آنجا» به «پاریس» در همان گفتگو اشاره دارد.
این اطلاعاتی است که در میان چندین گفتگو یا جلسه باقی میماند. این امکان را به عاملها میدهد که ترجیحات کاربر، تعاملات تاریخی یا دانش عمومی را در طول دورههای طولانیتر به خاطر بسپارند. این برای شخصیسازی اهمیت دارد.
مثال حافظهٔ بلندمدت
یک حافظهٔ بلندمدت ممکن است ذخیره کند که «بن از اسکی و فعالیتهای بیرونی لذت میبرد، قهوه با چشمانداز کوه را دوست دارد و بهدلیل یک آسیب گذشته میخواهد از پیستهای پیشرفته دوری کند». این اطلاعات که از تعاملات قبلی آموخته شدهاند، توصیهها را در جلسات برنامهریزی سفر بعدی تحت تأثیر قرار میدهند و آنها را بسیار شخصی میکنند.
این نوع حافظهٔ تخصصی به عامل کمک میکند تا «شخصیت» یا «پرسونا»ی ثابتی را توسعه دهد. این امکان را میدهد که عامل جزئیاتی دربارهٔ خودش یا نقش مورد نظرش را به خاطر بسپارد و تعاملات را روانتر و متمرکزتر کند.
مثال حافظهٔ شخصیت اگر عامل سفر برای نقش «برنامهریز متخصص اسکی» طراحی شده باشد، حافظهٔ شخصیت میتواند این نقش را تقویت کند و پاسخها را در جهت لحن و دانش یک متخصص تنظیم کند.
این حافظه توالی گامهایی را که عامل در طول یک وظیفهٔ پیچیده برداشته است، از جمله موفقیتها و شکستها، ذخیره میکند. مانند یادآوری «اپیزودها» یا تجربیات گذشته برای یادگیری از آنها است.
مثال حافظهٔ اپیزودیک
اگر عامل تلاش کرده باشد یک پرواز خاص را رزرو کند اما بهدلیل عدم دسترسی موفق نشود، حافظهٔ اپیزودیک میتواند این شکست را ضبط کند و به عامل اجازه دهد پروازهای جایگزین را امتحان کند یا در تلاش بعدی به کاربر با آگاهی بیشتری دربارهٔ مشکل اطلاع دهد.
این شامل استخراج و بهخاطر سپردن موجودیتهای مشخص (مانند افراد، مکانها یا اشیاء) و رویدادها از گفتگوها است. این به عامل اجازه میدهد تا درکی ساختیافته از عناصر کلیدی مورد بحث بسازد.
مثال حافظهٔ موجودیت
از یک گفتگو دربارهٔ سفر گذشته، عامل ممکن است «پاریس»، «برج ایفل» و «شام در رستوران Le Chat Noir» را بهعنوان موجودیت استخراج کند. در تعامل بعدی، عامل میتواند «Le Chat Noir» را به یاد آورد و پیشنهاد رزرو مجدد آن را بدهد.
در حالی که RAG یک فنّ گستردهتر است، «RAG ساختاری» بهعنوان یک فناوری حافظهٔ قدرتمند برجسته شده است. این روش اطلاعات متراکم و ساختیافته را از منابع مختلف (گفتگوها، ایمیلها، تصاویر) استخراج میکند و از آن برای افزایش دقت، بازیابی و سرعت در پاسخها استفاده میکند. بر خلاف RAG کلاسیک که صرفاً بر شباهت معنایی تکیه دارد، RAG ساختاری با ساختار ذاتی اطلاعات کار میکند.
مثال RAG ساختاری
بهجای صرفاً تطبیق کلمات کلیدی، RAG ساختاری میتواند جزئیات پرواز (مقصد، تاریخ، زمان، ایرلاین) را از یک ایمیل پارس کند و آنها را بهصورت ساختیافته ذخیره کند. این امکان پرسوجوهای دقیقی مانند «چه پروازی را روز سهشنبه به پاریس رزرو کردم؟» را فراهم میآورد.
پیادهسازی حافظه برای عاملهای هوش مصنوعی شامل فرایندی سیستماتیک از «مدیریت حافظه» است که تولید، ذخیرهسازی، بازیابی، ادغام، بهروزرسانی و حتی «فراموشی» (یا حذف) اطلاعات را دربر میگیرد. بازیابی بهویژه یک جنبهٔ حیاتی است.
یکی از راهها برای ذخیره و مدیریت حافظهٔ عامل استفاده از ابزارهای تخصصی مانند Mem0 است. Mem0 بهعنوان یک لایهٔ حافظهٔ پایدار عمل میکند و به عاملها اجازه میدهد تعاملات مرتبط را یادآوری کنند، ترجیحات کاربر و زمینهٔ واقعی را ذخیره کنند و از موفقیتها و شکستها در طول زمان بیاموزند. ایده این است که عاملهای بدون حالت به عاملهای دارای حالت تبدیل شوند.
این سیستم از طریق یک «خط لولهٔ حافظهٔ دو مرحلهای: استخراج و بهروزرسانی» عمل میکند. ابتدا پیامهایی که به موضوع عامل اضافه میشوند به سرویس Mem0 ارسال میگردند که از یک مدل زبان بزرگ برای خلاصهسازی تاریخچهٔ گفتگو و استخراج خاطرات جدید استفاده میکند. سپس، یک مرحلهٔ بهروزرسانی مبتنی بر مدل تعیین میکند که آیا این خاطرات باید اضافه، اصلاح یا حذف شوند و آنها را در یک ذخیرهٔ دادهٔ ترکیبی که میتواند شامل پایگاههای دادهٔ برداری، گراف و کلید-مقدار باشد، نگهداری میکند. این سیستم همچنین از انواع مختلف حافظه پشتیبانی میکند و میتواند حافظهٔ گراف برای مدیریت روابط بین موجودیتها را در بر بگیرد.
رویکرد قدرتمند دیگری استفاده از Cognee است، یک حافظهٔ معنایی متنباز برای عاملهای هوش مصنوعی که دادههای ساختیافته و غیرساختیافته را به گرافهای دانش قابلپرسوجو تبدیل میکند که توسط امبدینگها پشتیبانی میشوند. Cognee یک معماری «دو مخزنی» فراهم میآورد که جستجوی شباهت برداری را با روابط گرافی ترکیب میکند، و به عاملها امکان میدهد نه تنها بفهمند چه اطلاعاتی مشابه است، بلکه مفاهیم چگونه به یکدیگر مرتبطاند.
این سیستم در بازیابی ترکیبی که شباهت برداری، ساختار گراف و استدلال مدل زبان را با هم میآمیزد، برتری دارد — از جستجوی قطعهٔ خام تا پرسش و پاسخ آگاه از گراف. این سیستم «حافظهٔ زنده» را حفظ میکند که تکامل مییابد و رشد میکند در حالی که همچنان بهصورت یک گراف متصل قابلپرسوجو باقی میماند و از هر دو زمینهٔ جلسهٔ کوتاهمدت و حافظهٔ پایدار بلندمدت پشتیبانی میکند.
دفترچهٔ آموزشی Cognee (13-agent-memory-cognee.ipynb) نشان میدهد چگونه این لایهٔ حافظهٔ یکپارچه را بسازید، با مثالهای عملی از وارد کردن منابع دادهٔ متنوع، نمایش تصویری گراف دانش و پرسوجو با استراتژیهای جستجوی متفاوت مطابق نیازهای خاص عامل.
فراتر از ابزارهای حافظهٔ تخصصی مانند mem0، میتوانید از سرویسهای جستجوی قوی مانند Azure AI Search بهعنوان پشتیبان برای ذخیره و بازیابی خاطرات استفاده کنید، بهویژه برای RAG ساختاری.
این امکان را به شما میدهد که پاسخهای عامل خود را با دادههای خودتان زمینسازی کنید و پاسخهای مرتبطتر و دقیقتری فراهم آورید. Azure AI Search میتواند برای ذخیرهٔ خاطرات سفر کاربر، کاتالوگ محصولات یا هر دانش دامنهای دیگری استفاده شود.
Azure AI Search قابلیتهایی مانند RAG ساختاری را پشتیبانی میکند که در استخراج و بازیابی اطلاعات متراکم و ساختیافته از مجموعه دادههای بزرگ مانند تاریخچهٔ گفتگوها، ایمیلها یا حتی تصاویر برتری دارد. این نسبت به رویکردهای سنتی خرد کردن متن و امبدینگها «دقت و بازیابی فوقالعاده» فراهم میآورد.
یک الگوی رایج برای عاملهای خودبهبوددهنده، معرفی یک «عامل دانش» است. این عامل جداگانه گفتگو اصلی بین کاربر و عامل اصلی را مشاهده میکند. نقش آن این است که:
شناسایی اطلاعات ارزشمند: تعیین کند آیا بخشی از گفتگو ارزش ذخیره شدن بهعنوان دانش عمومی یا ترجیح خاص کاربر را دارد یا خیر.
استخراج و خلاصهسازی: یادگیری یا ترجیح اصلی را از گفتگو استخراج و تقطیر کند.
ذخیره در پایگاه دانش: این اطلاعات استخراجشده را معمولاً در یک پایگاه دادهٔ برداری پایدار کند تا بعدها قابل بازیابی باشد.
تقویت پرسوجوهای آینده: وقتی کاربر یک پرسوجوی جدید آغاز میکند، عامل دانش اطلاعات مرتبط ذخیرهشده را بازیابی کرده و به درخواست کاربر اضافه میکند، و زمینهٔ حیاتی را به عامل اصلی میدهد (مشابه RAG).
• مدیریت تأخیر: برای جلوگیری از کند شدن تعاملات کاربر، میتوان در ابتدا از یک مدل ارزانتر و سریعتر استفاده کرد تا بهسرعت بررسی کند آیا اطلاعات ارزش ذخیره شدن یا بازیابی را دارد یا خیر، و تنها در صورت نیاز فرایند استخراج/بازیابی پیچیدهتر را فراخوانی کرد.
• نگهداری پایگاه دانش: برای یک پایگاه دانش رو به رشد، اطلاعات کمتر استفادهشده میتوانند به «ذخیرهسازی سرد» منتقل شوند تا هزینهها مدیریت شود.
به Microsoft Foundry Discord بپیوندید تا با سایر یادگیرندگان ملاقات کنید، در ساعتهای حضور در دفتر شرکت کنید و سوالات خود دربارهٔ عاملهای هوش مصنوعی را مطرح کنید.
سلب مسئولیت: این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator (https://github.com/Azure/co-op-translator) ترجمه شده است. اگرچه ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری آن باید بهعنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوءتفاهم یا برداشت نادرستی که از استفاده از این ترجمه ناشی شود، مسئول نیستیم.