تفاوت حافظه، Context و RAG چیست؟ یک مدل زبانی واقعاً چه چیزی را به خاطر میسپارد؟
وقتی میگوییم «هوش مصنوعی یادش مانده»، دقیقاً منظور چیست؟
در مکالمات روزمره، وقتی یک انسان چیزی را به خاطر میسپارد، انتظار داریم آن اطلاعات در ذهن او باقی بماند و بعدها بتواند بدون اینکه دوباره آن را ببیند، از آن استفاده کند.
اما در یک مدل زبانی چنین فرآیندی لزوماً اتفاق نمیافتد.
فرض کنید به یک مدل بگویید:
«اسم من علی است.»
اگر چند پیام بعد از آن بپرسید:
«اسم من چیست؟»
مدل ممکن است پاسخ درست بدهد.
اما دلیل این پاسخ الزاماً این نیست که مدل یک حافظه دائمی شبیه حافظه انسان ایجاد کرده است.
ممکن است اطلاعات مربوط به «علی» هنوز در Context مکالمه قرار داشته باشد.
اگر این اطلاعات از Context حذف شود، وضعیت میتواند کاملاً متفاوت باشد.
اینجا اولین تفاوت مهم شکل میگیرد:
Context با Memory یکی نیست.
Context چیست؟
Context یا زمینه، مجموعه اطلاعاتی است که در زمان تولید پاسخ در اختیار مدل قرار میگیرد.
این اطلاعات میتواند شامل موارد مختلفی باشد:
- پیامهای قبلی مکالمه
- پیام فعلی کاربر
- دستورهای سیستم
- فایلهای ارسالشده
- نتایج جستجو
- اطلاعات بازیابیشده از پایگاه داده
- خروجی ابزارها
- بخشی از تاریخچه گفتگو
مدل هنگام تولید پاسخ، این اطلاعات را به عنوان ورودی در اختیار دارد.
به همین دلیل اگر چند پیام قبلی هنوز در Context باشند، مدل میتواند بر اساس آنها پاسخ دهد.
اما Context معمولاً یک فضای کاری برای پردازش فعلی است، نه الزاماً حافظه دائمی.
Context Window چیست؟
Context Window حداکثر مقدار Tokenهایی است که یک مدل میتواند در یک فرآیند پردازش در اختیار داشته باشد.
برای مثال اگر یک مدل Context Window برابر 128K Token داشته باشد، این عدد نشاندهنده تعداد Tokenهایی است که مدل میتواند در محدوده Context خود پردازش کند، نه 128 هزار کلمه.
این تفاوت مهم است، چون همانطور که در مقاله Tokenization توضیح دادیم، Token با Word یکسان نیست.
بنابراین:
Context Window = ظرفیت اطلاعات قابل پردازش در یک درخواست
نه:
Context Window = حافظه دائمی مدل
پس اگر Context حافظه نیست، چرا مدل مکالمه قبلی را میداند؟
چون سیستم میتواند بخشی از مکالمه قبلی را دوباره در اختیار مدل قرار دهد.
فرض کنید گفتگوی شما اینطور باشد:
کاربر:
«من برنامهنویس Laravel هستم.»
مدل:
«متوجه شدم.»
چند پیام بعد:
کاربر:
«برای پروژه جدیدم چه معماری پیشنهاد میکنی؟»
اگر پیام قبلی هنوز در Context قرار داشته باشد، مدل میتواند بفهمد منظور شما پروژه Laravel است.
در واقع مدل لزوماً از یک حافظه داخلی جداگانه استفاده نکرده است.
اطلاعات قبلی هنوز به عنوان بخشی از ورودی در اختیار مدل قرار دارد.
به زبان ساده:
مدل لازم نیست چیزی را به خاطر سپرده باشد، اگر هنوز آن را جلوی چشمش گذاشته باشید.
انسانها هم گاهی دقیقاً همین کار را میکنند، فقط اسمش را میگذاریم «یادداشت برداشتن».
حافظه واقعی مدل کجاست؟
اینجا باید بین دو مفهوم مهم تفاوت بگذاریم:
Parametric Memory
و
Non-Parametric Memory
در ادبیات RAG، Hugging Face نیز مدل از پیشآموزشدیده را به عنوان نوعی حافظه پارامتریک و منابع خارجی را به عنوان حافظه غیرپارامتریک توضیح میدهد.
حافظه پارامتریک چیست؟
مدلهای زبانی در هنگام آموزش روی حجم عظیمی از دادهها، پارامترهای خود را تنظیم میکنند.
این پارامترها وزنهای شبکه عصبی هستند.
در نتیجه بخشی از الگوها، روابط و اطلاعاتی که مدل در طول آموزش یاد گرفته، در پارامترهای آن مدل منعکس میشود.
به این نوع اطلاعات میتوان حافظه پارامتریک گفت.
اما یک نکته بسیار مهم وجود دارد:
مدل معمولاً مثل یک پایگاه داده، یک جدول شامل «سؤال → جواب» درون خودش ندارد.
مثلاً قرار نیست داخل مدل رکوردی شبیه این وجود داشته باشد:
«پایتخت فرانسه = پاریس»
دانش مدل در میلیاردها پارامتر و الگوهای آماری شبکه توزیع شده است.
به همین دلیل نمیتوان به سادگی گفت یک جمله خاص دقیقاً در کدام قسمت مدل ذخیره شده است.
آیا مدل هر چیزی را که در آموزش دیده، به خاطر میسپارد؟
خیر.
مدل در طول آموزش الگوها و روابط آماری را یاد میگیرد و این اطلاعات در پارامترهای آن منعکس میشود.
این با ذخیرهسازی دقیق و قابل جستجوی یک پایگاه داده متفاوت است.
به همین دلیل مدل ممکن است:
- بعضی اطلاعات را بسیار خوب بداند
- بعضی اطلاعات را ناقص به خاطر داشته باشد
- اطلاعات مشابه را با هم ترکیب کند
- درباره یک موضوع پاسخ نادرست تولید کند
- یا اطلاعاتی را که در دادههای آموزشی وجود داشتهاند، دقیقاً بازتولید نکند
این یکی از دلایلی است که استفاده از مدل بهتنهایی برای اطلاعات دقیق، جدید یا اختصاصی همیشه کافی نیست.
Training چه تفاوتی با Memory دارد؟
Training یا آموزش، فرآیندی است که طی آن پارامترهای مدل تغییر میکنند.
اگر یک مدل با دادههای جدید دوباره آموزش داده شود، ممکن است دانش آن در سطح پارامترها تغییر کند.
اما این فرآیند با ذخیره کردن یک خاطره ساده تفاوت دارد.
فرض کنید به مدل بگویید:
«از این به بعد بدان که شرکت من در سال ۱۴۰۵ تأسیس شده است.»
اگر صرفاً این جمله را در یک مکالمه بگویید، پارامترهای مدل بهطور ناگهانی تغییر نمیکنند.
مدل برای یادگیری دائمی در سطح پارامترها به فرآیندهای آموزشی یا تنظیم مدل نیاز دارد.
بنابراین:
Conversation ≠ Training
و:
Memory ≠ تغییر مستقیم وزنهای مدل
Fine-tuning چه تفاوتی با Memory دارد؟
Fine-tuning روشی برای آموزش بیشتر یک مدل از پیشآموزشدیده با دادههای خاص است.
مثلاً میتوان مدلی را با مجموعهای از نمونههای تخصصی آموزش داد تا در یک حوزه یا سبک مشخص عملکرد بهتری داشته باشد.
اما Fine-tuning نیز چیزی شبیه «دفترچه خاطرات کاربر» نیست.
اگر بخواهید یک دستیار برای هر کاربر اطلاعات شخصی جداگانهای نگه دارد، آموزش دوباره مدل برای هر کاربر روش منطقی و اقتصادی نیست.
اینجاست که حافظه خارجی وارد معماری سیستم میشود.
Memory در یک دستیار هوش مصنوعی چیست؟
وقتی امروزه درباره Memory در یک دستیار هوش مصنوعی صحبت میکنیم، معمولاً منظور یک لایه نرمافزاری در اطراف مدل است.
این لایه میتواند اطلاعات مهم را ذخیره کند و در زمان مناسب دوباره به مدل ارائه دهد.
مثلاً سیستم میتواند اطلاعاتی مانند:
- نام کاربر
- ترجیحات کاربر
- زبان مورد علاقه
- پروژههای قبلی
- تنظیمات کاری
- اطلاعات مهمی که کاربر خواسته حفظ شود
را در یک پایگاه داده ذخیره کند.
بعد وقتی کاربر دوباره با سیستم صحبت میکند، برنامه اطلاعات مرتبط را بازیابی کرده و به Context اضافه میکند.
در این حالت:
Memory خارج از خود مدل قرار دارد.
مدل فقط اطلاعاتی را که سیستم حافظه در اختیارش میگذارد، هنگام پاسخگویی مشاهده میکند.
یک مثال ساده برای درک Memory
فرض کنید به یک دستیار بگویید:
«من توسعهدهنده Laravel هستم و ترجیح میدهم کدها را با PHP 8.4 بنویسم.»
سیستم میتواند این اطلاعات را در حافظه کاربر ذخیره کند.
چند ماه بعد، شما یک گفتگوی کاملاً جدید ایجاد میکنید.
سیستم تشخیص میدهد اطلاعات مربوط به برنامهنویسی شما مرتبط است و آن را بازیابی میکند.
سپس این اطلاعات به Context اضافه میشود.
مدل میبیند:
«کاربر توسعهدهنده Laravel است و PHP 8.4 را ترجیح میدهد.»
و پاسخ خود را براساس آن تنظیم میکند.
از دید کاربر:
هوش مصنوعی یادش بوده است.
از دید معماری:
سیستم اطلاعات را ذخیره کرده، بازیابی کرده و دوباره به مدل داده است.
این تفاوت ظاهراً کوچک، از نظر فنی بسیار مهم است.
RAG چیست؟
RAG مخفف Retrieval-Augmented Generation است.
به زبان ساده، RAG یعنی:
قبل از اینکه مدل پاسخ بدهد، اطلاعات مرتبط از یک منبع خارجی پیدا و به مدل داده شود.
Hugging Face، RAG را ترکیبی از یک مدل زبانی از پیشآموزشدیده و یک منبع داده خارجی معرفی میکند که در زمان inference اطلاعات مرتبط را بازیابی کرده و تولید پاسخ را بر اساس آن انجام میدهد.
فرآیند کلی RAG را میتوان اینگونه تصور کرد:
سؤال کاربر
↓
جستجو در پایگاه دانش
↓
بازیابی اطلاعات مرتبط
↓
اضافه شدن اطلاعات به Context
↓
ارسال Context به مدل
↓
تولید پاسخ
بنابراین RAG اساساً روشی برای وصل کردن مدل به دانش خارجی است.
RAG چه مشکلی را حل میکند؟
مدلهای زبانی دانش خود را از دادههایی که در فرآیند آموزش دیدهاند به دست میآورند.
اما جهان بعد از آموزش مدل ادامه پیدا میکند.
قیمتها تغییر میکنند.
قوانین تغییر میکنند.
مستندات نرمافزارها تغییر میکنند.
محصولات جدید منتشر میشوند.
شرکتها اطلاعات جدید منتشر میکنند.
بنابراین نمیتوان برای هر تغییر کوچک، کل مدل را دوباره آموزش داد.
RAG راه دیگری ارائه میکند.
به جای تغییر دادن مدل، منبع اطلاعاتی را بهروزرسانی میکنیم.
Hugging Face نیز یکی از مزیتهای اصلی RAG را امکان بهروزرسانی دانش با تغییر Index به جای آموزش مجدد کل مدل میداند.
RAG چگونه کار میکند؟
یک سیستم RAG معمولاً چند مرحله اصلی دارد.
مرحله اول: آمادهسازی دانش
اسناد، صفحات وب، فایلهای PDF، مستندات، دیتابیس یا منابع دیگر جمعآوری میشوند.
مرحله دوم: تقسیم اسناد
متنهای طولانی معمولاً به بخشهای کوچکتر تقسیم میشوند.
این بخشها را میتوان Chunk نامید.
مرحله سوم: تبدیل به Embedding
هر بخش متن میتواند به یک نمایش برداری تبدیل شود.
مرحله چهارم: ذخیره در Vector Database
Embeddingها در یک سیستم قابل جستجو ذخیره میشوند.
مرحله پنجم: دریافت سؤال
کاربر سؤال خود را ارسال میکند.
مرحله ششم: Retrieval
سیستم بخشهایی از دانش را که به سؤال مرتبطتر هستند پیدا میکند.
مرحله هفتم: ساخت Context
اطلاعات بازیابیشده همراه با سؤال کاربر در Context قرار میگیرند.
مرحله هشتم: Generation
مدل با استفاده از Context پاسخ تولید میکند.
در نمونههای RAG موجود در مستندات Hugging Face نیز Retriever اسناد مرتبط را بازیابی میکند و اطلاعات بازیابیشده به ورودی مدل اضافه میشود.
آیا RAG همان Memory است؟
نه.
هر دو میتوانند از یک پایگاه داده خارجی استفاده کنند، اما هدف آنها متفاوت است.
Memory معمولاً برای حفظ اطلاعات مربوط به کاربر، مکالمه یا وضعیت سیستم استفاده میشود.
RAG معمولاً برای بازیابی دانش مرتبط از یک مجموعه اطلاعات استفاده میشود.
مثلاً:
«کاربر ترجیح میدهد پاسخها فارسی باشند.»
این میتواند Memory باشد.
اما:
«مستندات نسخه 5.0 این نرمافزار میگوید API جدید چگونه کار میکند.»
این بیشتر یک مورد RAG است.
البته در سیستمهای واقعی این دو میتوانند با هم ترکیب شوند.
تفاوت Context و RAG چیست؟
این دو مفهوم نیز خیلی اوقات با هم اشتباه گرفته میشوند.
Context همان اطلاعاتی است که در اختیار مدل قرار گرفته است.
RAG یک روش برای پیدا کردن بخشی از اطلاعات موردنیاز و قرار دادن آن در Context است.
بنابراین:
Context = اطلاعات حاضر در مقابل مدل
RAG = روشی برای پیدا کردن اطلاعات مرتبط و وارد کردن آنها به Context
میتوان گفت RAG یکی از راههای ساخت Context است.
تفاوت Memory و Context چیست؟
این تفاوت را میتوان با یک مثال ساده فهمید.
فرض کنید شما به مدل گفتهاید:
«من قهوه بدون شکر دوست دارم.»
اگر این جمله هنوز در Context باشد، مدل میتواند از آن استفاده کند.
اما اگر سیستم بخواهد این ترجیح را برای ماههای آینده حفظ کند، میتواند آن را در Memory ذخیره کند.
در این صورت:
Context = چیزی که الان در اختیار مدل است
Memory = چیزی که سیستم برای استفاده در آینده نگه میدارد
وقتی Memory لازم باشد، سیستم آن را بازیابی کرده و وارد Context میکند.
آیا RAG باعث میشود مدل چیزی را یاد بگیرد؟
خیر.
این یکی از رایجترین سوءتفاهمها درباره RAG است.
وقتی RAG یک سند را از پایگاه داده پیدا میکند، مدل معمولاً آن سند را برای همان درخواست دریافت میکند.
این به معنی تغییر دائمی وزنهای مدل نیست.
پس اگر امروز یک PDF جدید وارد سیستم RAG کنید، مدل پایه بهطور دائمی با خواندن آن PDF آموزش نمیبیند.
بلکه:
↓
ذخیره در منبع خارجی
↓
Retrieval
↓
Context
↓
پاسخ
این همان تفاوت مهم بین RAG و Training است.
پس چرا RAG باعث میشود مدل درباره یک موضوع جدید جواب بدهد؟
چون مدل لازم نیست همه اطلاعات را در پارامترهای خودش داشته باشد.
فرض کنید شما یک پایگاه دانش شامل 10 هزار سند دارید.
کاربر میپرسد:
«قانون مرخصی در شرکت ما چیست؟»
RAG میتواند سند مرتبط را پیدا کند.
سپس بخشی از آن سند به Context مدل اضافه میشود.
مدل براساس همان اطلاعات پاسخ تولید میکند.
در نتیجه مدل لازم نیست قوانین شرکت شما را از قبل در پارامترهای خود یاد گرفته باشد.
آیا RAG جلوی Hallucination را میگیرد؟
بهطور کامل نه.
RAG میتواند پاسخها را به اطلاعات خارجی متصل کند و احتمال پاسخهای بیاساس را کاهش دهد، اما تضمین نمیکند مدل همیشه درست پاسخ دهد.
خود فرآیند Retrieval ممکن است اطلاعات اشتباه یا نامرتبط پیدا کند.
حتی اگر سند درست پیدا شود، مدل ممکن است آن را اشتباه تفسیر کند.
Hugging Face در توضیح Agentic RAG نیز به مشکلاتی مانند Retrieval ضعیف، عدم تطابق سؤال و سند و محدودیت Context اشاره میکند.
بنابراین:
RAG ≠ حذف Hallucination
بلکه:
RAG = فراهم کردن شواهد و زمینه بهتر برای تولید پاسخ
RAG چه تفاوتی با جستجوی اینترنت دارد؟
RAG الزاماً به معنای جستجوی اینترنت نیست.
منبع RAG میتواند هر چیزی باشد:
- فایل PDF
- دیتابیس
- مستندات شرکت
- سایت داخلی
- مقالات
- کتاب
- فایلهای پروژه
- پایگاه دانش
- سیستم CRM
- Wiki
- API
- اسناد حقوقی
- اطلاعات محصول
بنابراین یک RAG میتواند کاملاً خصوصی و بدون دسترسی به اینترنت کار کند.
آیا میتوان Memory را با RAG ساخت؟
بله.
در معماریهای مدرن، Memory میتواند از تکنیکهای Retrieval استفاده کند.
مثلاً اطلاعات مربوط به کاربر در یک پایگاه داده ذخیره میشود.
وقتی کاربر پیام جدیدی ارسال میکند، سیستم بررسی میکند کدام خاطرات قبلی به این پیام مرتبط هستند.
سپس خاطرات مرتبط را بازیابی کرده و وارد Context میکند.
در این حالت معماری تقریباً به شکل زیر است:
User
↓
Current Query
↓
Memory Retrieval
↓
Relevant Memories
↓
Context
↓
LLM
↓
Response
بنابراین Memory و RAG میتوانند از یک فناوری مشابه استفاده کنند، اما هدف سیستم متفاوت است.
تفاوت RAG معمولی و Memory Retrieval
فرض کنید شما یک دستیار فروش دارید.
در RAG معمولی ممکن است سیستم به سؤال زیر پاسخ دهد:
«قیمت محصول X چقدر است؟»
و اطلاعات قیمت را از کاتالوگ محصولات پیدا کند.
اما در Memory Retrieval ممکن است سیستم بداند:
«این مشتری قبلاً محصول X را خریده و معمولاً مدل حرفهای را ترجیح میدهد.»
در اینجا اطلاعات مربوط به دانش محصول با اطلاعات مربوط به کاربر ترکیب میشوند.
یک سیستم حرفهای میتواند هر دو را وارد Context کند.
Context چگونه محدود میشود؟
حتی اگر مدل Context بسیار بزرگی داشته باشد، این فضا نامحدود نیست.
اگر اطلاعات بیش از ظرفیت Context باشد، سیستم باید تصمیم بگیرد چه چیزی را نگه دارد و چه چیزی را حذف یا خلاصه کند.
برای مثال در یک مکالمه بسیار طولانی ممکن است سیستم:
- پیامهای قدیمی را حذف کند
- مکالمه را خلاصه کند
- فقط بخشهای مهم را نگه دارد
- اطلاعات مرتبط را از Memory بازیابی کند
- اسناد مرتبط را از RAG وارد کند
بنابراین Context Management یکی از بخشهای مهم ساخت سیستمهای LLM است.
در نمونههای RAG خود Hugging Face نیز تعداد اسناد بازیابیشده و حداکثر طول Context قابل تنظیم است.
آیا مدل میتواند همه Context را به یک اندازه به یاد داشته باشد؟
نه لزوماً.
اینکه اطلاعاتی در Context قرار دارد به این معنی نیست که مدل در همه شرایط با همان کیفیت از آن استفاده میکند.
در Contextهای بسیار طولانی، پیدا کردن اطلاعات مهم میتواند دشوارتر شود.
به همین دلیل سیستمهای RAG معمولاً تلاش میکنند به جای ارسال حجم عظیمی از اسناد، بخشهای مرتبطتر را انتخاب کنند.
در نمونه Advanced RAG از Hugging Face نیز اسناد بازیابیشده ابتدا جمعآوری و پردازش شده و سپس همراه با Query در قالب Prompt به مدل داده میشوند.
حافظه کوتاهمدت و بلندمدت در AI
برای سادهتر شدن موضوع میتوان معماری یک دستیار را به دو نوع حافظه تقسیم کرد.
حافظه کوتاهمدت
اطلاعاتی که در Context مکالمه فعلی قرار دارند.
مثلاً:
«من الان دارم روی پروژه X کار میکنم.»
این اطلاعات ممکن است فقط برای همان مکالمه لازم باشد.
حافظه بلندمدت
اطلاعاتی که سیستم برای استفاده در آینده ذخیره میکند.
مثلاً:
«کاربر همیشه پاسخهای فارسی میخواهد.»
این اطلاعات میتواند در یک پایگاه داده ذخیره شده و در مکالمات آینده بازیابی شود.
البته این تقسیمبندی یک مدل معماری است و الزاماً به معنی وجود دو بخش سختافزاری جداگانه در مدل نیست.
Knowledge Base چیست؟
Knowledge Base یا پایگاه دانش مجموعهای از اطلاعات ساختاریافته یا غیرساختاریافته است که سیستم میتواند از آن استفاده کند.
برای مثال یک شرکت میتواند Knowledge Base شامل این موارد داشته باشد:
- قوانین شرکت
- راهنمای محصولات
- مستندات فنی
- قراردادها
- پرسشهای متداول
- اطلاعات خدمات
- دستورالعملهای داخلی
RAG میتواند به این Knowledge Base متصل شود و اطلاعات مرتبط را هنگام پاسخگویی بازیابی کند.
آیا Knowledge Base همان Memory است؟
نه دقیقاً.
Knowledge Base معمولاً دانش عمومی یا سازمانی را نگه میدارد.
Memory بیشتر برای وضعیت، سابقه یا اطلاعات شخصی مرتبط با کاربر یا تعاملات استفاده میشود.
مثلاً:
Knowledge Base:
«شرکت از ساعت 8 تا 16 فعالیت میکند.»
Memory:
«این کاربر معمولاً جلساتش را ساعت 10 برگزار میکند.»
البته در معماریهای واقعی مرز میان این دو میتواند بسته به طراحی سیستم متفاوت باشد.
یک مثال کامل از دستیار هوش مصنوعی
فرض کنید یک شرکت یک دستیار هوش مصنوعی داخلی ساخته است.
کاربر میپرسد:
«برای مشتری X چه پیشنهادی بدهم؟»
سیستم میتواند چند منبع اطلاعات داشته باشد.
Context
پیام فعلی کاربر و مکالمه فعلی.
Memory
اطلاعاتی که سیستم درباره کاربر یا تعاملات قبلی حفظ کرده است.
RAG
بازیابی اطلاعات مشتری از CRM، محصولات، قیمتها و مستندات شرکت.
Model Knowledge
دانشی که مدل در زمان آموزش عمومی خود یاد گرفته است.
سپس همه این اطلاعات میتوانند در کنار هم قرار بگیرند:
Model Knowledge
Current Context
Retrieved Memory
Retrieved Knowledge
=
Input نهایی مدل
و مدل بر اساس این مجموعه پاسخ تولید میکند.
این معماری بسیار نزدیکتر به چیزی است که امروز از یک دستیار هوشمند واقعی انتظار داریم.
یک مدل زبانی واقعاً چه چیزی را به خاطر میسپارد؟
پاسخ کوتاه این است:
مدل به معنای انسانی کلمه چیزی را «به خاطر نمیسپارد».
آنچه درون مدل قرار دارد، نتیجه تغییر پارامترهای شبکه در فرآیند آموزش است.
آنچه در Context قرار دارد، اطلاعات فعلی مورد استفاده برای تولید پاسخ است.
آنچه در Memory ذخیره میشود، معمولاً دادهای خارجی است که سیستم برای استفادههای بعدی نگه میدارد.
و آنچه RAG انجام میدهد، پیدا کردن اطلاعات مرتبط از یک منبع خارجی و قرار دادن آن در اختیار مدل است.
پس اگر یک مدل بعد از چند ماه اطلاعاتی درباره شما را به یاد میآورد، لزوماً به این معنی نیست که آن اطلاعات در وزنهای مدل ذخیره شده است.
ممکن است سیستم حافظه خارجی داشته باشد.
یک تشبیه ساده
برای درک کل موضوع، مدل را یک نویسنده بسیار قدرتمند فرض کنید.
پارامترهای مدل:
دانش و مهارتهایی که نویسنده در طول آموزش به دست آورده است.
Context:
برگههایی که همین الان روی میز نویسنده قرار دادهاید.
Memory:
دفترچهای که اطلاعات مهم را برای مراجعه در آینده در آن نگه میدارید.
RAG:
کتابخانهداری که وقتی سؤال میپرسید، کتابهای مرتبط را پیدا کرده و روی میز نویسنده میگذارد.
Training:
سالها آموزش و مطالعهای که باعث شده خود نویسنده دانش و مهارت جدید پیدا کند.
در این تشبیه، RAG کتاب را به نویسنده نمیچسباند.
فقط کتاب مناسب را سر وقت روی میز میگذارد.
چرا RAG برای مدلهای جدید همچنان مهم است؟
حتی مدلهایی با Context Window بسیار بزرگ هم لزوماً جای RAG را نمیگیرند.
فرض کنید یک شرکت میلیونها صفحه سند دارد.
اینکه مدل بتواند Context بسیار بزرگی داشته باشد، به این معنی نیست که باید تمام اسناد را در هر درخواست وارد Context کنیم.
Retrieval میتواند ابتدا اطلاعات مرتبط را پیدا کند و فقط بخش مناسب را به مدل بدهد.
این کار میتواند:
- مصرف Token را کاهش دهد
- اطلاعات نامرتبط را حذف کند
- پاسخ را به اسناد مشخص متصل کند
- بهروزرسانی دانش را سادهتر کند
- امکان استفاده از دادههای خصوصی را فراهم کند
راحتتر است که مدل 20 صفحه مرتبط را بخواند تا اینکه 20 میلیون صفحه را روی میز بگذاریم و انتظار داشته باشیم خودش با لبخند انسانی همهشان را مرتب کند.
آینده حافظه در سیستمهای هوش مصنوعی
سیستمهای AI مدرن به سمت معماریهایی حرکت میکنند که در آنها مدل تنها یک بخش از سیستم است.
یک دستیار پیشرفته میتواند همزمان داشته باشد:
- مدل زبانی
- Context Management
- حافظه کوتاهمدت
- حافظه بلندمدت
- Vector Database
- Knowledge Base
- RAG
- ابزارها
- APIها
- تاریخچه تعاملات
- سیستم مدیریت دسترسی
در چنین معماریای دیگر نمیتوان گفت:
«هوش مصنوعی یک مدل است.»
مدل تبدیل به موتور استدلال و تولید زبان میشود و لایههای اطراف آن، حافظه، دانش، ابزار و محیط کاری را فراهم میکنند.
این موضوع یکی از پایههای اصلی ساخت AI Agentهای مدرن نیز محسوب میشود.
جمعبندی
تفاوت میان Memory، Context و RAG یکی از مهمترین مفاهیم برای درک نحوه کار سیستمهای هوش مصنوعی مدرن است.
Context اطلاعاتی است که در لحظه در اختیار مدل قرار دارد.
Context Window ظرفیت Tokenهایی است که مدل میتواند در آن محدوده پردازش کند.
Memory معمولاً یک لایه خارجی است که اطلاعات مهم را برای استفادههای آینده ذخیره میکند.
RAG روشی برای بازیابی اطلاعات از یک منبع خارجی و قرار دادن اطلاعات مرتبط در Context است.
Training باعث تغییر پارامترهای مدل میشود و با ذخیره یک خاطره ساده تفاوت دارد.
بنابراین وقتی میگوییم:
«این هوش مصنوعی حرفهای قبلی من را یادش مانده است»
باید سؤال دقیقتری بپرسیم:
آیا اطلاعات هنوز در Context بوده؟
آیا در Memory ذخیره شده؟
آیا از یک Knowledge Base با RAG بازیابی شده؟
یا واقعاً مدل با Training یا Fine-tuning دانش جدیدی در پارامترهای خود پیدا کرده است؟
این چهار حالت از بیرون ممکن است شبیه هم به نظر برسند، اما از نظر فنی کاملاً متفاوتاند.
و مهمتر از همه، RAG به این معنی نیست که مدل چیزی را برای همیشه یاد گرفته است. RAG بیشتر شبیه این است که در لحظه مناسب، کتاب درست را جلوی مدل بگذاریم. مدل آن کتاب را میخواند، از اطلاعاتش استفاده میکند و پاسخ میدهد، بدون اینکه لزوماً چیزی در وزنهای خودش تغییر کرده باشد.