وقتی پاسخ یک مدل زبانی برای مسئله‌ای تخصصی کافی نیست، یکی از نخستین پیشنهادها معمولا این است: «مدل را Fine-tune کنیم.» این پیشنهاد گاهی درست است، اما در بسیاری از پروژه‌ها مسئله اصلا با آموزش دوباره مدل حل نمی‌شود. شاید مدل رفتار مناسبی دارد و فقط سند لازم را در اختیار ندارد؛ شاید دانش موردنیاز آن‌قدر محدود است که می‌توان همه آن را از پیش در بافت مدل قرار داد؛ شاید پاسخ به یک پرسش، به کشف چند رابطه و اجرای استدلال چندمرحله‌ای نیاز دارد؛ و شاید هم دانش کافی است، اما مدل هنوز نمی‌داند دستور را چگونه دنبال کند.

RAG، CAG، KAG، Fine-tuning و Instruction tuning پنج نام پرتکرار برای پاسخ‌دادن به این مسائل‌اند، اما پنج گزینه هم‌سطح نیستند. سه مورد نخست معمولا دانش یا زمینه‌ای بیرون از مدل را هنگام پاسخ‌گویی در اختیار آن می‌گذارند، در حالی که دو مورد آخر از خانواده آموزش‌اند و پارامترهای قابل‌آموزش مدل یا افزونه‌های آن را تغییر می‌دهند. مهم‌تر اینکه Instruction tuning خود نوعی Fine-tuning است، نه رقیبی کاملا جدا از آن.

در RAG، CAG و KAG چیزی کنار مدل می‌گذاریم تا هنگام پاسخ‌گویی از آن استفاده کند؛ در Fine-tuning اثر آموزش را در پارامترهای قابل‌آموزش مدل یا افزونه‌های آن ثبت می‌کنیم.

مدل پایه؛ فردی تحصیل‌کرده، اما نه دانای کل

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

اگر از چنین فردی بدون دادن منبع تازه‌ای درباره موضوعی سؤال کنیم، پاسخ را از آموخته‌های پیشین خود می‌سازد. مدل زبانی نیز در استفاده مستقیم، پاسخ را بر پایه الگوهایی تولید می‌کند که در پارامترهایش تثبیت شده‌اند. ممکن است پاسخ درست باشد، ممکن است دانش مدل ناکافی یا قدیمی باشد و ممکن است مدل با اطمینان پاسخی بسازد که واقعیت ندارد. مدل پایه طبق تعریف برای استفاده در دامنه‌های مختلف قابل انطباق است، اما به‌خودی‌خود محصولی کامل و قابل اتکا برای هر کاربرد نیست. افزون بر این، بیشتر مدل‌هایی که امروز به‌عنوان دستیار یا چت‌بات می‌شناسیم، مدل پایه خام نیستند و پیش‌تر Instruction tuning و معمولا مراحل دیگری از آموزش هم‌ترازی را پشت سر گذاشته‌اند. گزارش Stanford CRFM درباره مدل‌های پایه نیز بر همین ماهیت عمومی اما ناتمام این مدل‌ها تاکید می‌کند.

دو خانواده اصلی: افزودن زمینه یا تغییر پارامترها

پیش از ورود به مثال‌ها، بهتر است مسئله را روی دو محور ببینیم. محور نخست این است که آیا برای افزودن دانش یا توانایی تازه قرار است پارامترهای قابل‌آموزش تغییر کنند یا نه. در RAG، CAG و شکل متعارفی از KAG، می‌توان دانش بیرونی را بدون آموزش دوباره مدل اصلی و از طریق بافت در اختیارش قرار داد. در Fine-tuning و Instruction tuning، یک فرایند آموزش اجرا می‌شود و همه پارامترها، بخشی از آن‌ها یا پارامترهای افزوده‌شده‌ای مانند آداپترهای LoRA تغییر می‌کنند. البته اجزایی مانند بازیاب، بازرتبه‌بند یا حتی مولد در یک سامانه RAG یا KAG نیز می‌توانند جداگانه آموزش ببینند؛ تمایز موردنظر این است که افزودن و به‌روزرسانی دانش بیرونی در این معماری‌ها ذاتا به تغییر وزن‌های مدل پایه وابسته نیست.

محور دوم به شیوه رساندن دانش بیرونی مربوط است. آیا برای هر پرسش باید چند قطعه مرتبط بازیابی شود؟ آیا مجموعه دانش کوچک و نسبتا ثابتی داریم که می‌توان آن را یک‌بار در بافت قرار داد و محاسباتش را کش کرد؟ یا پرسش به روابط صریح، قواعد، محاسبه و استدلال چندمرحله‌ای نیاز دارد؟ پاسخ این سه پرسش به‌ترتیب ما را به RAG، CAG یا KAG نزدیک می‌کند.

RAG؛ هر بار فیش‌های مرتبط را از کتابخانه پیدا کن

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

این تصویر ساده، منطق Retrieval-Augmented Generation یا «تولید تقویت‌شده با بازیابی» را نشان می‌دهد. در یک پیاده‌سازی متعارف، اسناد به قطعه‌ها تقسیم و نمایه‌گذاری می‌شوند؛ پرسش کاربر به جست‌وجوی معنایی، واژگانی یا ترکیبی فرستاده می‌شود؛ چند قطعه برتر پس از بازیابی و احتمالا بازرتبه‌بندی وارد بافت مدل می‌شوند؛ و مدل پاسخ را با اتکا به پرسش و قطعه‌های دریافتی تولید می‌کند. در مقاله اصلی RAG، این روش به‌صورت ترکیب حافظه پارامتری مدل و حافظه غیرپارامتری بیرونی صورت‌بندی شد.

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

در ترگمان، برای پاسخ به خبرهای روز همین جدایی میان آموزش و رساندن اطلاعات تازه را به کار گرفتیم. مدل Aya Expanse هشت‌میلیاردی را با بهره‌گیری از دادگان فارسی TLPC فاین‌تیون کرده بودیم، اما خبرهای جدید از خزش ساعتی منابع داخلی و ترکیب بازیابی با طراحی پرامپت به پاسخ می‌رسیدند. برای هر خبر دوباره مدل را آموزش نمی‌دادیم؛ آموزش، مدل پایهٔ خدمت را آماده کرده بود و بازیابی، اطلاعات متغیر را به آن می‌رساند.

CAG؛ کتابخانه کوچک را یک‌بار روی میز بگذار

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

در این یادداشت CAG را به معنای Cache-Augmented Generation به‌کار می‌بریم. ایده اصلی این است که مجموعه دانش محدود از پیش در بافت طولانی مدل قرار گیرد و وضعیت محاسباتی آن، معمولا KV cache، برای درخواست‌های بعدی دوباره استفاده شود. به این ترتیب، مرحله بازیابی بلادرنگ حذف می‌شود و خطر انتخاب قطعه نامرتبط نیز کاهش می‌یابد. مقاله معرفی CAG این روش را برای موقعیت‌هایی پیشنهاد می‌کند که دانش‌نامه محدود و قابل مدیریت است و می‌توان آن را در بافت مدل از پیش بارگذاری کرد. این اصطلاح در مقایسه با RAG نوتر و هنوز کم‌تثبیت‌تر است و نباید هر نوع استفاده از cache یا بافت طولانی را بی‌درنگ CAG نامید.

این توضیح با «به‌خاطر سپردن» یا آموزش مدل تفاوت دارد. پس از حذف یا بی‌اعتبارشدن کش، مدل چیزی از آن مجموعه را به‌عنوان دانش تازه در وزن‌های خود نگه نداشته است. CAG همچنین صرفا استفاده دوباره از چند فیش بازیابی‌شده در گفت‌وگوی قبلی نیست؛ ویژگی تعیین‌کننده آن، آماده‌سازی دانش مشترک و استفاده دوباره از محاسبات آن به‌جای بازیابی مجدد برای هر پرسش است. اگر مجموعه اسناد بزرگ باشد، مرتب تغییر کند، برای کاربران مختلف مجوزهای متفاوت داشته باشد یا بخش زیادی از آن برای هر پرسش نامرتبط باشد، هزینه پرکردن بافت، مصرف حافظه کش و دشواری ابطال آن می‌تواند مزیت روش را از بین ببرد. اصطلاح CAG در بعضی نوشته‌ها با معنای دیگری مانند Context-Augmented Generation نیز دیده می‌شود؛ بنابراین در طراحی و قرارداد پروژه باید تعریف موردنظر صریح نوشته شود.

KAG؛ فقط فیش پیدا نکن، نقشه دانش و مسیر استدلال بساز

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

این مثال به Knowledge-Augmented Generation یا KAG نزدیک‌تر است. KAG نامی کاملا یکنواخت برای یک استاندارد واحد نیست، اما در چارچوبی که در مقاله KAG معرفی شده، ترکیبی از گراف دانش، قطعه‌های متنی، نمایه‌گذاری متقابل، صورت منطقی پرسش و موتور استدلال ترکیبی به کار می‌رود. هدف این است که محدودیت بازیابی صرفا مبتنی بر شباهت برداری، به‌ویژه در روابط زمانی، عددی، قواعد تخصصی و پرسش‌های چندمرحله‌ای، جبران شود. از دید معماری سامانه، KAG را می‌توان عضوی ساختاریافته‌تر و استدلال‌محورتر از خانواده گسترده سامانه‌های تقویت‌شده با دانش دانست، نه لزوما جهانی کاملا جدا از RAG.

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

Fine-tuning؛ مهارت یا رفتار مدل را با آموزش تغییر بده

اکنون به خانواده دیگری می‌رسیم. فرض کنیم مدل پایه ما مانند یک پزشک عمومی است: دانش پزشکی گسترده‌ای دارد، اما قرار است در یک کار تخصصی و تکرارشونده عملکرد متفاوتی نشان دهد. پزشک برای جراحی قلب یک دوره تخصصی می‌گذراند و سپس ممکن است برای یک حوزه محدودتر مانند مداخلات دریچه آئورت آموزش بیشتری ببیند. پس از این دوره، برای هر بیمار لازم نیست همه کتاب‌های آموزشی دوباره روی میز او گذاشته شوند؛ اثر آموزش در مهارت‌ها و الگوهای تصمیم‌گیری او باقی مانده است. در مدل زبانی نیز Fine-tuning با ادامه آموزش روی داده‌های هدف، پارامترهای مدل یا پارامترهای افزوده‌شده به آن را تغییر می‌دهد.

Fine-tuning یک روش واحد نیست. در آموزش کامل، همه یا بخش بزرگی از وزن‌های مدل تغییر می‌کنند؛ در روش‌های کم‌پارامتر مانند LoRA، وزن‌های اصلی ثابت می‌مانند و ماتریس‌ها یا آداپترهای کوچکی آموزش داده می‌شوند. با وجود ثابت‌ماندن وزن‌های پایه در LoRA، سامانه حاصل همچنان رفتار آموخته‌شده تازه‌ای دارد، زیرا پارامترهای قابل‌آموزش افزوده‌شده در زمان استنتاج فعال‌اند. مقاله LoRA نشان داد که می‌توان با آموزش تعداد بسیار کمتری پارامتر، مدل را برای وظایف پایین‌دستی انطباق داد.

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

برای اطلاعاتی که مکرر تغییر می‌کنند، نیازمند استناد دقیق‌اند یا باید بر اساس سطح دسترسی کاربر انتخاب شوند، Fine-tuning معمولا جایگزین مناسبی برای RAG نیست. به‌روزرسانی یک بخشنامه در پایگاه اسناد آسان‌تر از ساخت نسخه تازه مدل است و حذف یک واقعیت از وزن‌ها نیز به سادگی حذف یک سند از نمایه نیست. هزینه آموزش، خطر بیش‌برازش یا افت توانایی‌های قبلی، نشت داده‌های حساس، مدیریت نسخه‌ها و نیاز به ارزیابی دقیق، همگی باید پیش از انتخاب این مسیر سنجیده شوند.

Instruction tuning؛ Fine-tuning برای فهم و اجرای دستور

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

Instruction tuning معمولا نوعی Fine-tuning نظارت‌شده روی مجموعه‌ای از نمونه‌های «دستور، ورودی و پاسخ مطلوب» است. هدف فقط افزودن دانش موضوعی نیست؛ مدل باید مقصود دستور را تشخیص دهد، قالب و محدودیت‌ها را رعایت کند و توانایی آموخته‌شده را به دستورهای ندیده تعمیم دهد. پژوهش FLAN نشان داد که آموزش روی مجموعه‌ای از وظایف بیان‌شده به زبان دستور می‌تواند عملکرد zero-shot روی وظایف ندیده را بهبود دهد.

رابطه این دو اصطلاح را می‌توان ساده بیان کرد: هر Instruction tuning نوعی Fine-tuning است، اما هر Fine-tuning لزوما Instruction tuning نیست. اگر مدلی را فقط برای تشخیص نوع یک سند یا پیش‌بینی برچسبی مشخص آموزش دهیم، Fine-tuning انجام داده‌ایم؛ اگر آن را با دستورهای متنوع و پاسخ‌های نمونه آموزش دهیم تا فرمان‌ها را بهتر دنبال کند، وارد Instruction tuning شده‌ایم. بسیاری از مدل‌هایی که در نامشان واژه‌های Instruct یا Chat دیده می‌شود، نسخه‌های آموزش‌دیده یک مدل پایه‌اند. Instruction tuning نیز اطلاعات لحظه‌ای، سند سازمانی تازه یا قابلیت استناد را به‌طور خودکار ایجاد نمی‌کند و معمولا در کنار RAG، CAG یا KAG به کار می‌رود.

مقایسه در یک نگاه

روشآیا افزودن دانش به آموزش مدل نیاز دارد؟دانش یا توانایی از کجا می‌آید؟مناسب‌ترین کاربردمحدودیت اصلی
RAGخیر؛ هرچند اجزای سامانه می‌توانند آموزش ببینندچند قطعه که برای هر پرسش از منبع بیرونی بازیابی می‌شونداسناد زیاد، متغیر، قابل استناد و دارای کنترل دسترسیخطای بازیابی، تاخیر جست‌وجو و ورود قطعه نامرتبط
CAGخیرمجموعه محدود دانش که از پیش در بافت بارگذاری و محاسباتش کش می‌شوددانش‌نامه کوچک و نسبتا ثابت با پرسش‌های پرتکرارظرفیت بافت، حافظه کش، هزینه prefill و ابطال کش
KAGخیر؛ آموزش اجزای کمکی ممکن استگراف دانش، متن منبع، قواعد و استدلال هدایت‌شدهروابط پیچیده، پرسش‌های چندمرحله‌ای، قواعد زمانی و عددیساخت و نگهداری پرهزینه‌تر و پیچیدگی ارزیابی
Fine-tuningبله؛ وزن‌های مدل یا آداپترهانمونه‌های آموزشی دامنه یا وظیفهرفتار پایدار، قالب خروجی، اصطلاحات و وظیفه تخصصی تکرارشوندههزینه آموزش و نسخه‌بندی، دشواری اصلاح دانش و خطر افت یا نشت
Instruction tuningبله؛ زیرمجموعه Fine-tuningنمونه‌های دستور و پاسخ مطلوب در یک یا چند وظیفهدستورپذیری، تعمیم به فرمان‌های تازه و تنظیم شیوه پاسخجایگزین دانش تازه، بازیابی منبع یا کنترل دسترسی نیست

کدام روش را انتخاب کنیم؟

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

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

برای مسئله رفتاری، ابتدا باید یک خط پایه با پرامپت روشن، خروجی ساخت‌یافته و چند مثال سنجیده شود. اگر این راه در مقیاس واقعی همچنان ناپایدار، طولانی یا گران است و نمونه‌های آموزشی باکیفیت در اختیار داریم، Fine-tuning می‌تواند منطقی باشد. اگر هدف اصلی، دنبال‌کردن طیف متنوعی از دستورها و تعمیم شیوه پاسخ‌گویی است، Instruction tuning صورت تخصصی‌تر همان انتخاب خواهد بود. در هر دو حالت، مجموعه ارزیابی مستقل باید پیش از آموزش آماده باشد؛ وگرنه بهترشدن روی مثال‌های آموزشی ممکن است با بهترشدن محصول اشتباه گرفته شود.

چند نمونه عملی انتخاب را روشن‌تر می‌کند:

  • دستیار پاسخ‌گو بر اساس آخرین آیین‌نامه‌ها و بخشنامه‌های سازمان: RAG، همراه با کنترل دسترسی و ارجاع به بند منبع.
  • پرسش‌وپاسخ پرتکرار روی یک راهنمای فنی کوتاه و ثابت که کامل در بافت جا می‌شود: CAG، پس از مقایسه واقعی هزینه و تاخیر با RAG.
  • تحلیل مقرراتی که به ارجاع میان مواد، تبصره‌ها، تاریخ اعتبار و استثناها وابسته است: KAG یا ترکیبی از RAG، گراف دانش و موتور قواعد.
  • تبدیل انبوه درخواست‌های پشتیبانی به یک ساختار JSON ثابت، وقتی پرامپت و few-shot به پایداری لازم نرسیده‌اند: Fine-tuning یا روشی کم‌پارامتر مانند LoRA.
  • ساخت نسخه‌ای از مدل پایه که دستورهای متنوع را بهتر بفهمد و پاسخ را برای مخاطبان مختلف تنظیم کند: Instruction tuning.

در پروژه واقعی، پاسخ نهایی اغلب «ترکیبی از این‌ها» است. ممکن است یک مدل Instruct را با LoRA برای رفتار تخصصی‌تر تنظیم کنیم و سپس برای دسترسی به آخرین اسناد به آن RAG بدهیم. ممکن است بخش کوچکی از دانش ثابت را کش کنیم، اسناد متغیر را بازیابی کنیم و برای چند پرسش پیچیده از گراف دانش کمک بگیریم. این ترکیب زمانی مفید است که هر جزء یک شکست مشخص را حل کند؛ افزودن لایه‌های بیشتر بدون معیار ارزیابی، فقط سامانه را پیچیده‌تر می‌کند.

پنج سوءبرداشت رایج

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

سوم اینکه Fine-tuning روش مناسبی برای «ریختن همه اسناد شرکت داخل مدل» نیست. دانش متغیر، قابل حذف و نیازمند استناد معمولا باید بیرون از وزن‌ها باقی بماند. چهارم اینکه CAG حافظه نامحدود یا رایگان ایجاد نمی‌کند؛ پنجره بافت، زمان prefill، حافظه KV cache و سیاست به‌روزرسانی همچنان محدودیت‌های واقعی‌اند. پنجم اینکه KAG صرفا نام تازه‌ای برای RAG پیشرفته یا تحقیق عامل‌محور نیست؛ اگر ساختار دانش، رابطه‌ها و استدلال هدایت‌شده در کار نباشد، بهتر است معماری را با نام دقیق‌تری توصیف کنیم.

جمع‌بندی؛ اول نوع مسئله را انتخاب کنیم، بعد نام روش را

RAG، CAG و KAG عمدتا سه شیوه برای رساندن دانش بیرونی به یک مدل ثابت‌اند: بازیابی قطعه‌های مرتبط در هر درخواست، آماده‌سازی و کش‌کردن یک مجموعه محدود، یا ساختاردهی دانش و هدایت استدلال روی روابط و قواعد. Fine-tuning خانواده‌ای از روش‌های آموزش برای تغییر رفتار یا مهارت مدل است و Instruction tuning زیرمجموعه‌ای از آن برای بهتر دنبال‌کردن دستورها به شمار می‌رود.

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

منابع برای مطالعه بیشتر