MODULE 02 / LESSON 10

Keyword Search در Retriever — روش TF-IDF

مفهوم اصلی Keyword Search یکی از قدیمی‌ترین و پرکاربردترین روش‌های جستجو در سیستم‌های بازیابی اطلاعات ( Information Retrieval ) است. این روش: دهه‌ها در موتورهای جستجو و دیتابیس‌ها استفاده شده است. به دلیل سادگی و عملکرد مناسب،…

نویسنده: محمد ابوطالبی۹۷۰ واژهماژول ۲: Retriever

مفهوم اصلی

Keyword Search یکی از قدیمی‌ترین و پرکاربردترین روش‌های جستجو در سیستم‌های بازیابی اطلاعات (Information Retrieval) است.

این روش:

  • دهه‌ها در موتورهای جستجو و دیتابیس‌ها استفاده شده است.
  • به دلیل سادگی و عملکرد مناسب، هنوز یکی از اجزای مهم Retriever در سیستم‌های RAG مدرن است.

ایده اصلی:

اسنادی که تعداد بیشتری کلمه مشترک با Prompt دارند، احتمالاً مرتبط‌تر هستند.


نحوه عملکرد Keyword Search

در Keyword Search:

  • Prompt کاربر
  • و هر Document موجود در Knowledge Base

به شکل Bag of Words در نظر گرفته می‌شوند.


Bag of Words چیست؟

در این روش:

  • ترتیب کلمات اهمیتی ندارد.
  • فقط بررسی می‌شود:
    • چه کلماتی در متن وجود دارند؟
    • هر کلمه چند بار تکرار شده است؟

مثال:

متن:

making pizza without a pizza oven

تعداد کلمات:

کلمه تعداد
making 1
pizza 2
without 1
a 1
oven 1

Sparse Vector (بردار تنک)

برای نمایش متن، تعداد تکرار هر کلمه در یک Vector ذخیره می‌شود.

این Vector:

  • برای هر کلمه موجود در Vocabulary یک موقعیت دارد.
  • مقدار هر موقعیت تعداد تکرار آن کلمه در متن است.

مثلاً اگر Vocabulary شامل ده‌ها هزار کلمه باشد:

[0,0,0,2,0,1,0,0,1,...]

باشد.

چون بیشتر مقادیر صفر هستند، به آن:

Sparse Vector

گفته می‌شود.


ساخت Index برای Knowledge Base

برای آماده‌سازی Knowledge Base:

برای هر Document یک Sparse Vector ساخته می‌شود.

سپس همه این Vectorها در یک جدول قرار می‌گیرند.

این جدول:

Term Document Matrix

نام دارد.


Term Document Matrix

ساختار:

  • هر ستون = یک Document
  • هر ردیف = یک Word

مثال:

Word Doc1 Doc2 Doc3
pizza 2 0 1
oven 1 1 0
making 1 0 0

Inverted Index

Term Document Matrix گاهی:

Inverted Index

نامیده می‌شود.

دلیل:

در حالت معمول:

  • از Document شروع می‌کنیم.
  • می‌پرسیم چه کلماتی دارد.

اما در Inverted Index:

  • از Word شروع می‌کنیم.
  • پیدا می‌کنیم کدام Documentها آن کلمه را دارند.

مثال:

جستجو برای:

pizza

نتیجه:

Doc1
Doc3
Doc8

فرآیند Search در Retriever

مرحله ۱: آماده‌سازی Index

قبل از انجام جستجو:

  • برای تمام اسناد Sparse Vector ساخته می‌شود.
  • Inverted Index ایجاد می‌شود.

این مرحله فقط یک بار انجام می‌شود.


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

وقتی کاربر سؤال ارسال می‌کند:

Retriever برای Prompt نیز یک Sparse Vector می‌سازد.


مرحله ۳: امتیازدهی اسناد

ساده‌ترین روش:

اگر Document یک Keyword موجود در Prompt را داشته باشد، امتیاز می‌گیرد.

مثال:

Prompt:

making pizza without oven

Keywordها:

  • making
  • pizza
  • without
  • oven

هر Document بر اساس تعداد Keywordهای مشترک امتیاز می‌گیرد.


مشکل روش امتیازدهی ساده

در روش ابتدایی:

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

اما تکرار بیشتر یک Keyword ممکن است نشان‌دهنده ارتباط بیشتر باشد.


بهبود اول: شمارش تعداد تکرار کلمه

در روش بهتر:

هر بار که Keyword در Document دیده شود، امتیاز افزایش پیدا می‌کند.

مثلاً:

Document A:

pizza pizza pizza

امتیاز بیشتری نسبت به:

Document B:

pizza

می‌گیرد.


مشکل Documentهای طولانی

Documentهای طولانی ممکن است فقط به دلیل حجم زیاد متن، Keywordهای بیشتری داشته باشند.

مثلاً:

یک مقاله ۱۰۰ صفحه‌ای ممکن است کلمه Pizza را زیاد تکرار کند، اما الزاماً مرتبط‌تر نباشد.


بهبود دوم: Normalization

برای حل این مشکل:

امتیاز Document بر تعداد کلمات آن تقسیم می‌شود.

نتیجه:

  • Documentهای کوتاه و بلند منصفانه‌تر مقایسه می‌شوند.
  • اسنادی که Keyword بخش بیشتری از متن آن‌ها را تشکیل می‌دهد، امتیاز بیشتری می‌گیرند.

مشکل وزن یکسان کلمات

در روش قبلی همه Keywordها ارزش یکسان دارند.

اما همه کلمات اهمیت یکسان ندارند.

مثال:

کلمات عمومی:

  • the
  • a
  • without

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

اما کلمات خاص:

  • pizza
  • oven

احتمالاً نشان‌دهنده ارتباط بیشتری هستند.

برای حل این مشکل از:

IDF (Inverse Document Frequency)

استفاده می‌شود.


IDF چیست؟

IDF میزان خاص بودن یک کلمه در کل Knowledge Base را اندازه می‌گیرد.

ایده:

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


محاسبه Document Frequency

برای هر کلمه:

بررسی می‌شود در چند Document وجود دارد.

مثال:

فرض کنید:

  • Knowledge Base شامل 100 Document است.
  • کلمه pizza در 5 Document وجود دارد.

Document Frequency:

5 / 100 = 0.05

برای کلمه عمومی مثل:

the

که در تمام 100 Document وجود دارد:

100 / 100 = 1

محاسبه IDF

چون هدف، افزایش اهمیت کلمات نادر است، مقدار را معکوس می‌کنیم.

برای:

pizza:

1 / 0.05 = 20

برای:

the:

1 / 1 = 1

پس:

  • pizza وزن بیشتری دارد.
  • the وزن کمتری دارد.

استفاده از Log در IDF

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

به همین دلیل معمولاً از:

log(IDF)

استفاده می‌شود.

نتیجه:

  • کلمات نادر هنوز ارزش بیشتری دارند.
  • اما اختلاف وزن بیش از حد بزرگ نمی‌شود.

TF-IDF چیست؟

برای استفاده از IDF، مقادیر موجود در Index تغییر داده می‌شوند.

مقدار هر کلمه با وزن IDF آن ضرب می‌شود.

نتیجه:

TF-IDF Matrix


TF

میزان تکرار کلمه در یک Document.

IDF

میزان خاص بودن کلمه در کل Knowledge Base.

ترکیب:

TF × IDF

باعث ایجاد امتیاز نهایی می‌شود.


رتبه‌بندی با TF-IDF

برای رتبه‌بندی:

  1. Keywordهای Prompt بررسی می‌شوند.
  2. مقدار TF-IDF آن‌ها در هر Document خوانده می‌شود.
  3. امتیازها جمع می‌شوند.
  4. Documentهای با امتیاز بالاتر انتخاب می‌شوند.

مثال اهمیت کلمات

در Prompt مربوط به پیتزا:

Documentهایی که شامل کلمات خاص‌تر هستند:

  • pizza
  • oven

امتیاز بیشتری می‌گیرند.

اما Documentهایی که فقط کلمات عمومی دارند:

  • a
  • without

امتیاز کمتری دریافت می‌کنند.


جایگاه TF-IDF در سیستم‌های RAG

TF-IDF یک روش پایه و استاندارد برای ارزیابی Keyword Retrieval است.

مزایا:

  • ساده
  • سریع
  • قابل فهم
  • مؤثر برای تطابق کلمات

اما سیستم‌های مدرن معمولاً از نسخه بهبود یافته آن یعنی:

BM25

استفاده می‌کنند.


جمع‌بندی

  • Keyword Search اسناد را بر اساس اشتراک کلمات با Prompt پیدا می‌کند.
  • در این روش متن‌ها به صورت Bag of Words نمایش داده می‌شوند.
  • هر Document به یک Sparse Vector تبدیل می‌شود.
  • Term Document Matrix یا Inverted Index برای جستجوی سریع ساخته می‌شود.
  • TF-IDF باعث می‌شود کلمات خاص وزن بیشتری نسبت به کلمات عمومی داشته باشند.
  • TF تعداد تکرار کلمه در Document و IDF میزان اهمیت کلمه در کل مجموعه اسناد را نشان می‌دهد.
  • TF-IDF یکی از روش‌های پایه Keyword Search است.
  • سیستم‌های مدرن معمولاً از روش پیشرفته‌تر BM25 استفاده می‌کنند.