MODULE 01 / LESSON 06

مقدمه‌ای بر بازیابی اطلاعات (Introduction to Information Retrieval)

مفهوم اصلی در یک سیستم RAG (Retrieval-Augmented Generation) ، وظیفه اصلی Retriever این است که اطلاعات مفیدی را در اختیار LLM قرار دهد؛ به‌خصوص اطلاعاتی که ممکن است هنگام آموزش مدل در دسترس آن نبوده باشند. Retriever کمک می‌کند LLM…

نویسنده: محمد ابوطالبی۹۲۹ واژهماژول ۱: مبانی RAG

مفهوم اصلی

در یک سیستم RAG (Retrieval-Augmented Generation)، وظیفه اصلی Retriever این است که اطلاعات مفیدی را در اختیار LLM قرار دهد؛ به‌خصوص اطلاعاتی که ممکن است هنگام آموزش مدل در دسترس آن نبوده باشند.

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


تشبیه Retriever با کتابخانه

برای درک بهتر عملکرد Retriever، می‌توان آن را با یک کتابخانه مقایسه کرد.

فرض کنید می‌خواهید به سؤال زیر پاسخ دهید:

چگونه می‌توانم پیتزای سبک نیویورکی را در خانه درست کنم؟

در یک کتابخانه:

  • تعداد زیادی کتاب درباره موضوعات مختلف وجود دارد.
  • کتاب‌ها بر اساس ویژگی‌هایی مانند:
    • موضوع
    • ژانر
    • نویسنده
    • دسته‌بندی

در بخش‌ها و قفسه‌های مختلف قرار گرفته‌اند.


نقش کتابدار

اگر سؤال خود را با کتابدار مطرح کنید، کتابدار:

  • معنی سؤال شما را درک می‌کند.
  • بخش‌های مرتبط کتابخانه را پیدا می‌کند.
  • کتاب‌های مناسب را پیشنهاد می‌دهد.

مثلاً برای سؤال درباره پیتزای نیویورکی، ممکن است به دنبال کتاب‌هایی در بخش:

  • آشپزی
  • غذاهای ایتالیایی
  • غذاهای نیویورکی

بگردد.


ارتباط کتابخانه با Retriever

اجزای Retriever مشابه کتابخانه هستند.

کتابخانه سیستم RAG
مجموعه کتاب‌ها Knowledge Base شامل اسناد
دسته‌بندی و قفسه‌بندی Index
کتابدار Retriever
سؤال مراجعه‌کننده Prompt کاربر

Knowledge Base و Index

Knowledge Base

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

این اسناد می‌توانند شامل:

  • فایل‌ها
  • متن‌ها
  • اطلاعات سازمانی
  • داده‌های مختلف

باشند.


Index

Retriever ابتدا یک Index از اسناد Knowledge Base ایجاد می‌کند.

هدف Index:

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

است.


فرآیند کار Retriever

Retriever چند مرحله اصلی دارد:


مرحله ۱: پردازش Prompt

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

سپس تلاش می‌کند:

  • معنی سؤال را بفهمد.
  • مفهوم اصلی آن را استخراج کند.

مثلاً سؤال:

چگونه پیتزای سبک نیویورکی درست کنم؟

فقط دنبال کلمات "پیتزا" و "نیویورک" نیست، بلکه مفهوم کلی سؤال را درک می‌کند.


مرحله ۲: جستجو در Index

Retriever با استفاده از درک خود از سؤال، در Index اسناد جستجو می‌کند.


مرحله ۳: بازگرداندن اسناد مرتبط

Retriever اسنادی را که بیشترین ارتباط را با Prompt دارند برمی‌گرداند.

این اسناد سپس در اختیار LLM قرار می‌گیرند.


رتبه‌بندی اسناد (Document Ranking)

Retriever تمام اسناد را به یک شکل برنمی‌گرداند.

ابتدا میزان ارتباط هر سند با Prompt را محاسبه می‌کند.

برای هر سند:

  • یک امتیاز عددی (Score) تعیین می‌شود.
  • این امتیاز میزان ارتباط سند با سؤال را نشان می‌دهد.

معمولاً این امتیاز بر اساس:

  • میزان شباهت متن Prompt
  • میزان شباهت متن سند

محاسبه می‌شود.


انتخاب اسناد نهایی

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

روش‌های مختلفی برای محاسبه این Similarity Score وجود دارد که در ادامه دوره بررسی خواهند شد.


اهمیت حذف اطلاعات غیرمرتبط

یک Retriever خوب فقط نباید اطلاعات مرتبط را پیدا کند؛ بلکه باید اطلاعات غیرمرتبط را نیز حذف کند.

مثال:

اگر سؤال درباره:

روش تهیه پیتزای نیویورکی در خانه

باشد، اگر Retriever تمام اسناد موجود در Knowledge Base را ارسال کند:

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

مشکل ارسال اطلاعات زیاد

ارسال اسناد زیاد باعث می‌شود:

  • Prompt بزرگ‌تر شود.
  • هزینه پردازش افزایش پیدا کند.
  • ممکن است Context Window مدل کاملاً پر شود.

مشکل انتخاب تعداد اسناد

از طرف دیگر، اگر فقط چند سند اول انتخاب شوند:

ممکن است اطلاعات مفیدی در اسناد رتبه:

  • دوم
  • سوم
  • چهارم

وجود داشته باشد که از دست بروند.


چالش طراحی Retriever

در حالت ایده‌آل:

Retriever باید:

  • اسناد را کاملاً درست رتبه‌بندی کند.
  • دقیقاً تعداد مناسب سند را انتخاب کند.

اما در عمل:

  • بعضی اسناد مرتبط ممکن است رتبه پایین بگیرند.
  • بعضی اسناد غیرمرتبط ممکن است رتبه بالا بگیرند.

بنابراین تعیین تعداد مناسب اسناد دشوار است.


بهینه‌سازی Retriever

برای بهبود عملکرد Retriever باید:

  • عملکرد آن در طول زمان بررسی شود.
  • تنظیمات مختلف آزمایش شوند.
  • رفتار آن Monitoring شود.

در طول دوره، روش‌های مختلف بهینه‌سازی Retriever بررسی خواهند شد.


ارتباط Retriever با سیستم‌های دیگر

بسیاری از نرم‌افزارهای آشنا نیز عملکرد مشابه Retriever دارند.

موتور جستجوی وب

وظیفه:

  • دریافت Query
  • پیدا کردن صفحات مرتبط وب

پایگاه داده رابطه‌ای (Relational Database)

وظیفه:

  • دریافت SQL Query
  • پیدا کردن رکوردها و جدول‌های مرتبط

Information Retrieval چیست؟

حوزه Information Retrieval قبل از توسعه LLMها وجود داشته است.

این حوزه درباره:

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

است.

ایده‌های این حوزه پایه طراحی Retrieverها و سیستم‌های RAG هستند.


پیاده‌سازی Retriever

از نظر تئوری روش‌های مختلفی برای ساخت Retriever وجود دارد.

یکی از گزینه‌ها:

استفاده از دیتابیس‌های رابطه‌ای موجود.

چون بسیاری از شرکت‌ها اطلاعات خود را در دیتابیس‌های سنتی نگهداری می‌کنند، استفاده از همان داده‌ها برای RAG جذاب است.


Vector Database در Retriever

اگرچه Vector Database الزامی نیست، اما در سیستم‌های بزرگ و Production معمولاً Retrieverها بر پایه آن ساخته می‌شوند.

Vector Database چیست؟

نوع خاصی از دیتابیس که برای پیدا کردن سریع اسنادی طراحی شده است که بیشترین شباهت را با Prompt دارند.

مزیت:

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

محتوای این دوره درباره Retriever

در ادامه دوره دو موضوع اصلی بررسی می‌شوند:

1. اصول کلی Information Retrieval

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

2. Vector Database

برای ساخت Retriever در سیستم‌های RAG در مقیاس Production.


جمع‌بندی

  • Retriever وظیفه فراهم کردن اطلاعات مورد نیاز LLM را بر عهده دارد.
  • Retriever با جستجو در Knowledge Base، اسناد مرتبط را پیدا می‌کند.
  • برای جستجوی سریع، اسناد معمولاً Index می‌شوند.
  • Retriever ابتدا معنی Prompt را درک کرده و سپس اسناد مرتبط را پیدا می‌کند.
  • هر سند یک امتیاز ارتباط دریافت می‌کند و اسناد با امتیاز بالاتر انتخاب می‌شوند.
  • ارسال بیش از حد اطلاعات باعث افزایش هزینه و پر شدن Context Window می‌شود.
  • انتخاب تعداد مناسب اسناد یکی از چالش‌های مهم طراحی Retriever است.
  • Vector Database در سیستم‌های RAG بزرگ معمولاً پایه اصلی Retriever است.