MODULE 01 / LESSON 04

معماری کلی RAG (RAG Architecture Overview)

مفهوم اصلی در یک سیستم RAG (Retrieval-Augmented Generation) سه جزء اصلی وجود دارد: LLM (Large Language Model) مدل زبانی که وظیفه تولید پاسخ را بر عهده دارد. Knowledge Base مجموعه‌ای از اطلاعات مرتبط که می‌تواند شامل اسناد و…

نویسنده: محمد ابوطالبی۸۵۰ واژهماژول ۱: مبانی RAG

مفهوم اصلی

در یک سیستم RAG (Retrieval-Augmented Generation) سه جزء اصلی وجود دارد:

  1. LLM (Large Language Model)
    مدل زبانی که وظیفه تولید پاسخ را بر عهده دارد.

  2. Knowledge Base
    مجموعه‌ای از اطلاعات مرتبط که می‌تواند شامل اسناد و داده‌های مفید باشد.

  3. Retriever
    بخشی که وظیفه جستجو در Knowledge Base و پیدا کردن اطلاعات مرتبط را دارد.

تفاوت اصلی بین استفاده مستقیم از LLM و استفاده از RAG، اضافه شدن مرحله Retrieval توسط Retriever است.


نحوه کار معمول یک LLM

در حالت عادی:

  1. کاربر یک Prompt وارد می‌کند.
  2. Prompt به LLM ارسال می‌شود.
  3. LLM آن را پردازش کرده و پاسخ تولید می‌کند.

روند ساده:

User Prompt → LLM → Response

نحوه کار یک سیستم RAG

از دید کاربر، تجربه استفاده از RAG مانند یک LLM معمولی است:

  • کاربر سؤال می‌پرسد.
  • پاسخ دریافت می‌کند.

اما در داخل سیستم مراحل بیشتری انجام می‌شود.


مراحل پردازش در RAG

مرحله ۱: دریافت Prompt

سیستم RAG سؤال کاربر را دریافت می‌کند.

مثال:

چرا هتل‌های ونکوور در آخر هفته آینده بسیار گران هستند؟


مرحله ۲: ارسال سؤال به Retriever

Prompt ابتدا به Retriever ارسال می‌شود.

Retriever به یک Knowledge Base دسترسی دارد.

از نظر عملی، Knowledge Base معمولاً یک پایگاه داده شامل اسناد مفید است.


مرحله ۳: جستجو در Knowledge Base

Retriever پایگاه داده را جستجو می‌کند و اسنادی را که مرتبط‌ترین اطلاعات را دارند پیدا می‌کند.

خروجی:

  • چند سند مرتبط
  • اطلاعات مورد نیاز برای پاسخ

مرحله ۴: ساخت Prompt تقویت‌شده (Augmented Prompt)

سیستم اطلاعات پیدا شده را به Prompt اصلی اضافه می‌کند.

مثال:

Answer the following question:

Why are hotels in Vancouver so expensive this coming weekend?

Here are five relevant articles that may help you respond:

[متن مقالات مرتبط]

در این مرحله، سؤال اصلی همراه با اطلاعات اضافی به LLM داده می‌شود.


مرحله ۵: تولید پاسخ توسط LLM

اکنون سیستم مانند یک LLM معمولی عمل می‌کند.

Prompt تقویت‌شده به LLM ارسال می‌شود و مدل پاسخ را تولید می‌کند.

LLM از دو منبع اطلاعات استفاده می‌کند:

  1. دانش موجود در داده‌های آموزشی خودش
  2. اطلاعات اضافی دریافت‌شده از اسناد بازیابی‌شده

مزایای معماری RAG

1. دسترسی LLM به اطلاعاتی که در آموزش آن وجود نداشته است

مهم‌ترین مزیت RAG این است که اطلاعات جدید یا اختصاصی را در اختیار LLM قرار می‌دهد.

نمونه اطلاعات:

  • سیاست‌های شرکت
  • اطلاعات شخصی
  • اخبار جدید

در بسیاری از موارد، RAG تنها راه فراهم کردن چنین اطلاعاتی برای LLM است.


2. کاهش Hallucination (توهم مدل)

مفهوم Hallucination

گاهی LLM درباره موضوعاتی پاسخ تولید می‌کند که:

  • در داده‌های آموزشی آن وجود نداشته‌اند.
  • یا اطلاعات بسیار کمی درباره آن‌ها داشته است.

در نتیجه ممکن است پاسخ:

  • عمومی
  • اشتباه
  • گمراه‌کننده

باشد.


نقش RAG در کاهش Hallucination

با اضافه کردن اطلاعات مرتبط داخل Prompt:

  • پاسخ LLM به اطلاعات واقعی‌تر متصل می‌شود.
  • احتمال تولید متن اشتباه کاهش پیدا می‌کند.
  • پاسخ‌ها کمتر عمومی و گمراه‌کننده می‌شوند.

3. به‌روزرسانی آسان اطلاعات LLM

مشکل مدل‌های زبانی

آموزش مجدد یک LLM:

  • هزینه زیادی دارد.
  • زمان‌بر است.

به همین دلیل مدل‌ها نمی‌توانند همیشه اطلاعات جدید را یاد بگیرند.


راه‌حل RAG

در RAG نیازی به آموزش دوباره مدل نیست.

فقط کافی است اطلاعات موجود در Knowledge Base به‌روزرسانی شود.

مانند به‌روزرسانی یک دیتابیس معمولی.

پس از Index شدن اطلاعات جدید:

  • LLM می‌تواند بر اساس داده‌های جدید پاسخ دهد.

4. امکان ارائه Source و Citation

RAG می‌تواند اطلاعات مربوط به منبع را نیز به Prompt اضافه کند.

LLM سپس می‌تواند:

  • پاسخ را همراه با منبع ارائه دهد.
  • امکان بررسی و اعتبارسنجی پاسخ را برای کاربر فراهم کند.

مزیت:

  • افزایش اعتماد به پاسخ
  • امکان بررسی عمیق‌تر اطلاعات

5. تمرکز هر بخش روی وظیفه اصلی خود

در معماری RAG، هر جزء کاری را انجام می‌دهد که در آن بهتر است.

Retriever

وظیفه:

  • جستجو در حجم زیادی از اطلاعات
  • فیلتر کردن اطلاعات مهم
  • پیدا کردن مرتبط‌ترین محتوا

LLM

وظیفه:

  • تولید متن مناسب
  • ساخت پاسخ نهایی

در نتیجه LLM مجبور نیست:

  • تمام اطلاعات جهان را جستجو کند.
  • خودش مرحله پیدا کردن اطلاعات را انجام دهد.

نمونه ساده پیاده‌سازی RAG

در یک مثال ساده، دو تابع اصلی وجود دارد:

تابع Retrieve

یک Wrapper برای Retriever است.

ورودی:

Text Query

خروجی:

Relevant Documents

وظیفه:

  • دریافت سؤال
  • پیدا کردن اسناد مرتبط از Knowledge Base

تابع Generate

یک Wrapper برای LLM است.

ورودی:

Text Prompt

خروجی:

LLM Response

وظیفه:

  • ارسال Prompt به مدل
  • دریافت پاسخ

روند مثال عملی

سؤال کاربر:

Why are hotel prices in Vancouver super expensive this weekend?

حالت اول: ارسال مستقیم به LLM

User Question
      ↓
     LLM
      ↓
  Response

حالت دوم: استفاده از RAG

1. Retrieval

Retriever اطلاعات مرتبط را پیدا می‌کند.


2. ساخت Prompt تقویت‌شده

ترکیب:

Original Question
+
Retrieved Documents

3. ارسال به LLM

LLM پاسخ را با استفاده از اطلاعات جدید تولید می‌کند.

نتیجه:

  • پاسخ دقیق‌تر
  • استفاده از اطلاعات Knowledge Base

جمع‌بندی

  • معماری RAG از سه بخش اصلی تشکیل شده است: LLM، Retriever و Knowledge Base.
  • تفاوت اصلی RAG با LLM معمولی، اضافه شدن مرحله Retrieval است.
  • Retriever اطلاعات مرتبط را از Knowledge Base پیدا می‌کند.
  • اطلاعات بازیابی‌شده به Prompt اضافه می‌شوند و یک Augmented Prompt ساخته می‌شود.
  • LLM با استفاده از دانش قبلی خود و اطلاعات جدید پاسخ تولید می‌کند.
  • RAG باعث کاهش Hallucination، افزایش دقت، امکان استفاده از اطلاعات خصوصی و به‌روزرسانی آسان‌تر می‌شود.
  • در RAG، Retriever مسئول پیدا کردن اطلاعات و LLM مسئول تولید پاسخ است.