وقتی در مورد مزایای منحصر به فرد ساختن عاملهای هوش مصنوعی صحبت میشود، دو مورد عمدتاً مورد بحث قرار میگیرند: قابلیت فراخوانی ابزارها برای تکمیل وظایف و قابلیت بهبود در طول زمان. حافظه پایه و اساس ایجاد عاملی است که خودبهخود بهتر میشود و میتواند تجربههای بهتری برای کاربران ما خلق کند.
در این درس، به بررسی مفهوم حافظه برای عاملهای هوش مصنوعی و نحوه مدیریت و استفاده از آن برای سودمندی برنامههایمان خواهیم پرداخت.
این درس شامل موارد زیر خواهد بود:
• درک حافظه عاملهای هوش مصنوعی: حافظه چیست و چرا برای عاملها ضروری است.
• پیادهسازی و ذخیرهسازی حافظه: روشهای عملی برای افزودن قابلیت حافظه به عاملهای هوش مصنوعی شما، با تمرکز بر حافظه کوتاهمدت و بلندمدت.
• خودبهبود عاملهای هوش مصنوعی: چگونه حافظه به عاملها امکان میدهد از تعاملات گذشته بیاموزند و در طول زمان بهتر شوند.
این درس شامل دو آموزش جامع در دفترچه نوتبوک است:
• 13-agent-memory.ipynb: پیادهسازی حافظه با استفاده از Mem0 و Azure AI Search با چارچوب Semantic Kernel
• 13-agent-memory-cognee.ipynb: پیادهسازی حافظهٔ ساختیافته با استفاده از Cognee، که بهطور خودکار گراف دانش پشتیبانیشده توسط امبدینگها میسازد، گراف را بصریسازی میکند و بازیابی هوشمند را فراهم میآورد
پس از تکمیل این درس، شما خواهید دانست چگونه:
• تمایز بین انواع مختلف حافظه عاملهای هوش مصنوعی را قائل شوید، از جمله حافظه کاری، کوتاهمدت و بلندمدت، و همچنین اشکال تخصصی مانند حافظهٔ شخصیت (persona) و حافظهٔ اپیزودیک.
• حافظه کوتاهمدت و بلندمدت را برای عاملهای هوش مصنوعی پیادهسازی و مدیریت کنید با استفاده از چارچوب Semantic Kernel، بهرهگیری از ابزارهایی مانند Mem0، Cognee، Whiteboard memory و یکپارچهسازی با Azure AI Search.
• اصول پشت عاملهای خودبهبود را درک کنید و چگونه سیستمهای مدیریت حافظهٔ قوی به یادگیری و سازگاری مداوم کمک میکنند.
در ریشهٔ موضوع، حافظه برای عاملهای هوش مصنوعی به مکانیزمهایی اشاره دارد که به آنها اجازه میدهد اطلاعات را نگهداری و بازیابی کنند. این اطلاعات میتواند شامل جزئیات مشخصی از یک گفتگو، ترجیحات کاربر، اقدامات گذشته، یا حتی الگوهای یادگرفتهشده باشد.
بدون حافظه، برنامههای هوش مصنوعی اغلب بدون حالت (stateless) هستند، به این معنی که هر تعامل از ابتدا شروع میشود. این امر منجر به تجربهای تکراری و ناامیدکننده برای کاربر میشود که در آن عامل زمینه یا ترجیحات قبلی را «فراموش» میکند.
هوش یک عامل به شدت با توانایی آن در یادآوری و استفاده از اطلاعات گذشته گره خورده است. حافظه به عاملها امکان میدهد که:
• بازتابی باشند: از اقدامات و نتایج گذشته بیاموزند.
• تعاملی باشند: حفظ زمینه در طول یک گفتگوی جاری.
• پیشنگر و واکنشی باشند: نیازها را پیشبینی کنند یا بر اساس دادههای تاریخی پاسخ مناسب دهند.
• خودمختار باشند: با تکیه بر دانش ذخیرهشده، مستقلتر عمل کنند.
هدف از پیادهسازی حافظه، قابلاعتمادتر و توانمندتر کردن عاملها است.
این را مانند یک قطعه کاغذ یادداشت در نظر بگیرید که عامل در طول یک کار یا فرآیند فکری واحد از آن استفاده میکند. حافظه کاری اطلاعات فوری لازم برای محاسبه گام بعدی را نگه میدارد.
برای عاملهای هوش مصنوعی، حافظه کاری اغلب مرتبطترین اطلاعات را از یک گفتگو ضبط میکند، حتی اگر کل تاریخچهٔ چت طولانی یا قطعشده باشد. تمرکز آن بر استخراج عناصر کلیدی مانند نیازها، پیشنهادها، تصمیمات و اقدامات است.
نمونهٔ حافظه کاری
در یک عامل رزرو سفر، حافظه کاری ممکن است درخواست جاری کاربر را مانند «میخواهم سفری به پاریس رزرو کنم» ضبط کند. این نیاز مشخص در زمینهٔ فوری عامل نگهداری میشود تا تعامل جاری را هدایت کند.
این نوع حافظه اطلاعات را برای مدت یک گفتگو یا جلسهٔ واحد حفظ میکند. این پسزمینهٔ چت فعلی است که به عامل امکان میدهد به نوبتهای قبلی گفتگو ارجاع دهد.
نمونهٔ حافظهٔ کوتاهمدت
اگر کاربری بپرسد «یک پرواز به پاریس چقدر هزینه دارد؟» و سپس بپرسد «اقامت آنجا چطور؟»، حافظهٔ کوتاهمدت اطمینان میدهد که عامل میداند «آنجا» به «پاریس» در همان گفتگو اشاره دارد.
این اطلاعاتی است که در میان چندین گفتگو یا جلسه باقی میماند. این به عاملها اجازه میدهد ترجیحات کاربر، تعاملات تاریخی یا دانش عمومی را در طول دورههای طولانیتری به خاطر بسپارند. این برای سفارشیسازی مهم است.
نمونهٔ حافظهٔ بلندمدت
یک حافظهٔ بلندمدت ممکن است ذخیره کند که «بن از اسکی و فعالیتهای فضای باز لذت میبرد، قهوه را با چشمانداز کوه دوست دارد، و بهخاطر یک آسیبدیدگی گذشته میخواهد از مسیرهای اسکی پیشرفته اجتناب کند». این اطلاعات، آموختهشده از تعاملات قبلی، در جلسات برنامهریزی سفر آینده تأثیر میگذارد و آنها را بسیار شخصیسازیشده میکند.
این نوع حافظهٔ تخصصی به عامل کمک میکند یک «شخصیت» یا «نمایه» ثابت توسعه دهد. این امکان را میدهد که عامل جزئیاتی دربارهٔ خود یا نقش مورد نظرش را به خاطر بسپارد و تعاملات را روانتر و متمرکزتر کند.
نمونهٔ حافظهٔ شخصیت اگر عامل سفر برای «برنامهریز متخصص اسکی» طراحی شده باشد، حافظهٔ شخصیت ممکن است این نقش را تقویت کند و پاسخهای او را مطابق لحن و دانش یک کارشناس هدایت کند.
این حافظه دنبالهٔ گامهایی را که یک عامل در طول یک کار پیچیده برمیدارد، از جمله موفقیتها و شکستها، ذخیره میکند. شبیه به بهخاطر سپردن «اپیزودها» یا تجربیات گذشته برای یادگیری از آنها است.
نمونهٔ حافظهٔ اپیزودیک
اگر عامل تلاش کرده باشد یک پرواز خاص را رزرو کند اما بهخاطر عدم در دسترس بودن شکست بخورد، حافظهٔ اپیزودیک میتواند این شکست را ثبت کند تا عامل در تلاش بعدی پروازهای جایگزین را امتحان کند یا کاربر را با اطلاعات دقیقتری در مورد مشکل مطلع سازد.
این شامل استخراج و به خاطر سپردن موجودیتهای خاص (مانند افراد، مکانها یا اشیاء) و رویدادها از گفتگوها است. این امکان را میدهد که عامل درکی ساختاریافته از عناصر کلیدی بحثشده بسازد.
نمونهٔ حافظهٔ موجودیت
از یک گفتگو دربارهٔ یک سفر گذشته، عامل ممکن است «پاریس»، «برج ایفل» و «شام در رستوران Le Chat Noir» را بهعنوان موجودیتها استخراج کند. در تعامل بعدی، عامل میتواند «Le Chat Noir» را به یاد بیاورد و پیشنهاد رزرو مجدد دهد.
در حالی که RAG یک تکنیک گستردهتر است، «Structured RAG» بهعنوان یک فناوری قدرتمند حافظه برجسته شده است. این روش اطلاعات متراکم و ساختیافته را از منابع مختلف (گفتگوها، ایمیلها، تصاویر) استخراج میکند و از آن برای افزایش دقت، بازیابی و سرعت در پاسخها استفاده میکند. بر خلاف RAG کلاسیک که فقط بر تشابه معنایی تکیه دارد، Structured RAG با ساختار ذاتی اطلاعات کار میکند.
نمونهٔ Structured RAG
بهجای تطبیق صرف کلیدواژهها، Structured RAG میتواند جزئیات پرواز (مقصد، تاریخ، زمان، ایرلاین) را از یک ایمیل پارس کند و آنها را بهصورت ساختیافته ذخیره کند. این امکان پرسشهای دقیقی مانند «کدام پرواز را برای سهشنبه به پاریس رزرو کردم؟» را فراهم میکند.
پیادهسازی حافظه برای عاملهای هوش مصنوعی شامل یک فرآیند سیستماتیک از «مدیریت حافظه» است که تولید، ذخیره، بازیابی، یکپارچهسازی، بهروزرسانی و حتی «فراموشی» (یا حذف) اطلاعات را در بر میگیرد. بازیابی بهویژه یک جنبهٔ حیاتی است.
یکی از راههای ذخیره و مدیریت حافظهٔ عامل استفاده از ابزارهای تخصصی مانند Mem0 است. Mem0 بهعنوان یک لایهٔ حافظهٔ پایدار عمل میکند و به عاملها امکان میدهد تعاملات مرتبط را به خاطر بسپارند، ترجیحات کاربران و متن واقعی را ذخیره کنند و از موفقیتها و شکستها در طول زمان بیاموزند. ایده این است که عاملهای بدون حالت به عاملهای دارای حالت تبدیل شوند.
این سامانه از طریق یک «خط لولهٔ حافظهٔ دو مرحلهای: استخراج و بهروزرسانی» کار میکند. ابتدا پیامهایی که به رشتهٔ یک عامل اضافه میشوند به سرویس Mem0 ارسال میشوند که از یک مدل بزرگ زبانی (Large Language Model) برای خلاصهسازی تاریخچهٔ گفتگو و استخراج حافظههای جدید استفاده میکند. در ادامه، یک مرحلهٔ بهروزرسانی مبتنی بر LLM مشخص میکند که آیا باید این حافظهها اضافه، تغییر یا حذف شوند و آنها را در یک مخزن دادهٔ ترکیبی ذخیره میکند که میتواند شامل پایگاههای دادهٔ برداری، گراف و کلید-مقدار باشد. این سیستم از انواع مختلف حافظه پشتیبانی میکند و میتواند حافظهٔ گرافی برای مدیریت روابط بین موجودیتها را نیز دربر گیرد.
رویکرد قدرتمند دیگر استفاده از Cognee است، یک حافظهٔ معنایی متنباز برای عاملهای هوش مصنوعی که دادههای ساختیافته و غیرساختیافته را به گرافهای دانش قابل پرسوجو پشتیبانیشده توسط امبدینگها تبدیل میکند. Cognee معماری «ذخیرهٔ دوگانه»ای فراهم میکند که جستجوی شباهت برداری را با روابط گرافی ترکیب میکند و به عاملها اجازه میدهد نه تنها بفهمند چه اطلاعاتی مشابه است، بلکه مفاهیم چگونه به یکدیگر مرتبط هستند.
این سامانه در بازیابی هیبریدی که ترکیبی از شباهت برداری، ساختار گراف و استدلال LLM است، برتری دارد - از جستجوی قطعات خام تا پرسشوپاسخ آگاه از گراف. سیستم حافظهٔ زندهای را نگه میدارد که تکامل مییابد و رشد میکند در حالی که بهصورت یک گراف متصل قابل پرسوجو باقی میماند و از هر دو زمینهٔ جلسهٔ کوتاهمدت و حافظهٔ پایدار بلندمدت پشتیبانی میکند.
آموزش دفترچهٔ Cognee (13-agent-memory-cognee.ipynb) ساخت این لایهٔ حافظهٔ یکپارچه را نشان میدهد، همراه با مثالهای عملی از وارد کردن منابع دادهٔ متنوع، بصریسازی گراف دانش و پرسوجو با استراتژیهای جستجوی مختلف متناسب با نیازهای خاص عامل.
فراتر از ابزارهای حافظهٔ تخصصی مانند mem0 ، میتوانید از سرویسهای جستجوی قوی مانند Azure AI Search بهعنوان بکاند برای ذخیره و بازیابی حافظهها استفاده کنید، بهویژه برای Structured RAG.
این به شما امکان میدهد پاسخهای عامل خود را با دادههای خودتان پایهگذاری کنید و از این طریق پاسخهای مرتبطتر و دقیقتری بهدست آورید. Azure AI Search میتواند برای ذخیرهٔ حافظههای سفر کاربرمحور، کاتالوگ محصولات یا هر دانش دامنهای دیگری استفاده شود.
Azure AI Search قابلیتهایی مانند Structured RAG را پشتیبانی میکند که در استخراج و بازیابی اطلاعات متراکم و ساختیافته از مجموعههای دادهٔ بزرگ مانند تاریخچهٔ گفتگوها، ایمیلها یا حتی تصاویر برتری دارد. این در مقایسه با روشهای سنتی خرد کردن متن و امبدینگها «دقت و بازیابی فوقالعادهای» فراهم میکند.
الگوی رایجی برای عاملهای خودبهبود شامل معرفی یک «عامل دانش» (knowledge agent) است. این عامل جداگانه گفتگو اصلی بین کاربر و عامل اصلی را مشاهده میکند. نقش آن عبارت است از:
-
شناسایی اطلاعات ارزشمند: تعیین اینکه آیا بخشی از گفتگو ارزش ذخیره شدن بهعنوان دانش عمومی یا ترجیح خاص کاربر را دارد یا خیر.
-
استخراج و خلاصهسازی: تقطیر یادگیری یا ترجیح اساسی از گفتگو.
-
ذخیره در پایگاه دانش: پایداری این اطلاعات استخراجشده، معمولاً در یک پایگاه دادهٔ برداری، تا بعداً قابل بازیابی باشد.
-
تقویت پرسوجوهای آینده: وقتی کاربر یک پرسوجوی جدید شروع میکند، عامل دانش اطلاعات مرتبط ذخیرهشده را بازیابی کرده و آن را به پرسش کاربر اضافه میکند تا زمینهٔ حیاتی را به عامل اصلی ارائه دهد (مشابه RAG).
• مدیریت تأخیر: برای جلوگیری از کند شدن تعاملات کاربر، میتوان ابتدا از یک مدل ارزانتر و سریعتر استفاده کرد تا سریع بررسی کند آیا اطلاعات ارزش ذخیره شدن یا بازیابی را دارند یا خیر، و تنها در صورت لزوم فرایند استخراج/بازیابی پیچیدهتر را فراخوانی کرد.
• نگهداری پایگاه دانش: برای یک پایگاه دانش رو به رشد، اطلاعات کمتر استفادهشده میتواند به «ذخیرهسازی سرد» منتقل شود تا هزینهها مدیریت شوند.
به Microsoft Foundry Discord بپیوندید تا با دیگر یادگیرندگان ملاقات کنید، در ساعات اداری شرکت کنید و پاسخ سؤالات خود دربارهٔ عاملهای هوش مصنوعی را دریافت کنید.
سلب مسئولیت: این سند با استفاده از سرویس ترجمهٔ ماشینی Co-op Translator ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس یا حیاتی، ترجمهٔ حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوءتفاهم یا تفسیر نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.