RAG چگونه کار می‌کند؟ توضیح گام‌به‌گام برای غیرمهندسان

The Yaragent Team7 دقیقه مطالعه

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

مشکلی که RAG قرار است حل کند

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

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

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

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

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

گام اول: خرد شدن اسناد به قطعات کوچک

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

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

گام دوم: قطعات، قابل جست‌وجو بر اساس معنا می‌شوند

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

این همان بخشی است که شبیه جادو به‌نظر می‌رسد اما درواقع فقط ریاضیات است: «چطور عضویتم را کنسل کنم؟» و «سیاست کنسلی ما» می‌توانند دقیقاً کنار هم در این فضا قرار بگیرند، چون معنای مشابهی دارند، هرچند تقریباً هیچ واژه‌ی مشترکی ندارند. جست‌وجوی سنتی بر اساس کلمه‌ی کلیدی — همان روش Ctrl+F — کاملاً این ارتباط را از دست می‌دهد. جست‌وجو در این فضای عددی برای پیداکردن نزدیک‌ترین تطبیق‌ها را جست‌وجوی برداری یا vector search می‌نامند.

گام سوم: اول بازیابی، بعد تولید پاسخ

این همان توالی است که به RAG نامش را داده، و برای تک‌تک پیام‌ها از نو اجرا می‌شود، نه فقط یک‌بار در زمان راه‌اندازی:

  1. بازدیدکننده در چت سوالی می‌پرسد.
  2. خود سوال به همان نوع embedding قطعات سند تبدیل می‌شود.
  3. سیستم دنبال قطعاتی می‌گردد که معنایشان به سوال نزدیک‌ترین باشد.
  4. بهترین قطعات مطابق — نه کل پایگاه‌دانش — همراه با سوال اصلی در اختیار مدل زبانی قرار می‌گیرد.
  5. مدل پاسخ را فقط بر اساس همان مطالب بازیابی‌شده تولید می‌کند.

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

چرا این با fine-tuning فرق دارد

fine-tuning چیزی را که مدل «باور دارد» با آموزش دوباره تغییر می‌دهد؛ فرایندی کند و پرمصرف که باید هر بار ساعت کاری، قیمت یا سیاستی تغییر کرد، تکرارش کنید. RAG اصلاً به مدل دست نمی‌زند. چیزی را که در لحظه‌ی پرسیدن سوال به مدل نشان داده می‌شود تغییر می‌دهد.

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

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

هم مهندسی پرامپت و هم fine-tuning تلاش می‌کنند مدل را از طریق دستورالعمل یا آموزش «بهتر رفتار کند» وادار کنند؛ اما هیچ‌کدام راهی نمی‌دهند که بعداً بررسی کنید آیا پاسخ واقعاً بر چیزی واقعی مبتنی بوده یا نه. RAG این راه را می‌دهد، چون هر پاسخ را می‌شود تا قطعات بازیابی‌شده‌ی مشخصی ردیابی کرد.

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

جایگاه فلوهای هدایت‌شده در این میان

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

اگر بازدیدکننده وسط یکی از این فلوها سوالی نامرتبط بپرسد، RAG از روی اسناد به آن جواب می‌دهد، و فلو دقیقاً از همان‌جایی که متوقف شده بود ادامه پیدا می‌کند. RAG و فلوهای هدایت‌شده رقیب هم نیستند؛ دو ابزارند که هرکدام کار خودشان را انجام می‌دهند.

آماده‌کردن محتوای کسب‌وکارتان برای بازیابی دقیق‌تر

کیفیت بازیابی به چیزی بستگی دارد که به سیستم می‌دهید. چند نکته همیشه دقت بازیابی را بالا می‌برد:

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

اگر می‌خواهید پیش از هر تصمیمی ببینید محتوای وب‌سایت خودتان چقدر برای چنین سیستمی آماده است، ابزار رایگان Website AI-Readiness Checker یاراگنت در چند دقیقه به آن امتیاز می‌دهد؛ و پلن رایگان خود یاراگنت هم راه‌اندازی‌اش حدود ده دقیقه طول می‌کشد، بدون نیاز به کارت اعتباری.