مفهوم اصلی
Metadata Filtering سادهترین و احتمالاً آشناترین تکنیکی است که در یک Retriever استفاده میشود.
هدف آن:
محدود کردن اسناد قابل بررسی توسط Retriever بر اساس اطلاعات Metadata موجود برای هر سند.
Metadata Filtering از معیارهای مشخص و ثابت (Rigid Criteria) استفاده میکند تا مجموعه اسنادی که Retriever باید بررسی کند، کوچکتر شود.
Metadata چیست؟
Metadata اطلاعاتی درباره یک سند است، نه محتوای اصلی آن.
نمونههایی از Metadata:
- عنوان سند (Title)
- نویسنده (Author)
- تاریخ ایجاد یا انتشار (Creation Date)
- سطح دسترسی (Access Privileges)
- دستهبندی یا نوع سند
مثال: سیستم Retriever برای آرشیو روزنامه
فرض کنید در یک روزنامه کار میکنید و میخواهید یک Retriever برای تمام مقالات منتشرشده در تاریخچه روزنامه بسازید.
Knowledge Base
شامل:
- هزاران مقاله مختلف
هر مقاله دارای Metadata مانند:
- عنوان مقاله
- تاریخ انتشار
- نویسنده
- بخش روزنامه (Section)
است.
نحوه عملکرد Metadata Filtering
در این سیستم:
- متن کامل مقالهها در Knowledge Base ذخیره شده است.
- اما فیلتر اولیه بر اساس Metadata انجام میشود.
جستجو روی Metadata شبیه نوشتن یک Query در SQL است.
نمونه فیلترهای ساده
فیلتر بر اساس تاریخ
میتوان تمام مقالات منتشرشده در یک روز مشخص را پیدا کرد.
فیلتر بر اساس نویسنده
میتوان تمام مقالات نوشتهشده توسط یک نویسنده خاص را پیدا کرد.
فیلترهای ترکیبی
میتوان چند شرط را همزمان اعمال کرد.
مثال:
پیدا کردن:
تمام مقالات بخش Opinion که بین ژوئن و جولای ۲۰۲۴ توسط یک خبرنگار خاص نوشته شدهاند.
شرایط:
- بخش مقاله = Opinion
- تاریخ انتشار بین June و July 2024
- نویسنده = خبرنگار موردنظر
فقط مقالاتی برگردانده میشوند که تمام این شرایط را داشته باشند.
ارتباط با Spreadsheet
اگر تاکنون یک جدول در Excel یا Spreadsheet را فیلتر کرده باشید، در واقع Metadata Filtering انجام دادهاید.
یعنی:
- یک مجموعه بزرگ داده دارید.
- معیارهای مشخص تعیین میکنید.
- فقط مواردی که شرایط را دارند نگه میدارید.
نقش Metadata Filtering در RAG
در یک سیستم RAG معمولاً Metadata Filtering بهتنهایی وظیفه Retrieval را انجام نمیدهد.
بلکه:
برای محدود کردن نتایج تولیدشده توسط سایر تکنیکهای Retrieval استفاده میشود.
یعنی معمولاً:
- ابتدا Keyword Search یا Semantic Search انجام میشود.
- سپس Metadata Filtering نتایج را محدود میکند.
Metadata Filter معمولاً از کجا میآید؟
معمولاً فیلترها از متن Prompt کاربر استخراج نمیشوند.
بلکه بر اساس ویژگیهای دیگر کاربر تعیین میشوند.
مثال: محدودیت دسترسی کاربران
فرض کنید یک روزنامه:
- بعضی مقالات رایگان دارد.
- بعضی مقالات فقط برای مشترکین پولی قابل مشاهده هستند.
برای هر مقاله یک Metadata ذخیره میشود:
Access = Free
یا:
Access = Paid
فرآیند جستجو
وقتی کاربر جستجو میکند:
- سیستم بررسی میکند کاربر اشتراک پولی دارد یا خیر.
- اگر کاربر مشترک نباشد:
- Metadata Filter فعال میشود.
- مقالات Paid حذف میشوند.
مثال: محدودیت منطقه جغرافیایی
فرض کنید روزنامه در مناطق مختلف جهان نسخههای متفاوت منتشر میکند.
برای هر مقاله Metadata ذخیره میشود:
Region = Europe
یا:
Region = Asia
وقتی کاربر درخواست میدهد:
- سیستم موقعیت کاربر را تشخیص میدهد.
- فقط مقالات مربوط به منطقه او را برمیگرداند.
مزایای Metadata Filtering
1. سادگی مفهومی
این روش ساده است.
مزیت:
- درک عملکرد سیستم آسان است.
- خطایابی (Debugging) راحتتر انجام میشود.
2. سرعت و بلوغ تکنولوژی
Metadata Filtering:
- سریع است.
- سالها استفاده شده است.
- بهینهسازیهای زیادی برای آن وجود دارد.
3. کنترل دقیق روی اسناد
مهمترین مزیت:
Metadata Filtering تنها روشی است که اجازه میدهد سیستم با معیارهای کاملاً مشخص تصمیم بگیرد چه اسنادی:
- وارد Retrieval شوند.
- حذف شوند.
مثلاً:
- فقط اسناد یک دپارتمان خاص.
- فقط اسناد کاربران مجاز.
- فقط اسناد یک بازه زمانی مشخص.
محدودیتهای Metadata Filtering
با وجود مزایا، محدودیتهای مهمی دارد.
1. تکنیک جستجوی واقعی نیست
Metadata Filtering بیشتر یک ابزار محدودکننده است، نه یک روش اصلی Search.
یعنی:
- نمیتواند مفهوم متن سند را بفهمد.
- فقط Metadata را بررسی میکند.
2. بیش از حد سختگیر است
اگر Metadata مناسب وجود نداشته باشد، ممکن است اطلاعات مفید حذف شوند.
3. محتوای سند را نادیده میگیرد
Metadata Filtering متن اصلی سند را بررسی نمیکند.
ممکن است:
- دو سند Metadata مشابه داشته باشند.
- اما یکی مرتبط و دیگری غیرمرتبط باشد.
4. رتبهبندی انجام نمیدهد
پس از عبور از فیلتر:
- اسناد رتبهبندی نمیشوند.
- مشخص نمیشود کدام سند مهمتر است.
جایگاه Metadata Filtering در Retriever
یک Retriever فقط بر اساس Metadata Filtering تقریباً بیاستفاده خواهد بود.
دلیل:
Retriever نیاز دارد بداند:
آیا محتوای واقعی یک سند با Prompt کاربر مرتبط است یا خیر؟
برای این کار نیاز به تکنیکهای دیگری مانند:
- Keyword Search
- Semantic Search
وجود دارد.
جمعبندی
- Metadata Filtering اسناد را بر اساس اطلاعات جانبی آنها محدود میکند.
- Metadata شامل اطلاعاتی مانند عنوان، نویسنده، تاریخ و سطح دسترسی است.
- عملکرد آن شبیه فیلتر کردن دادهها در Spreadsheet یا Queryهای SQL است.
- در RAG معمولاً برای محدود کردن نتایج سایر روشهای Retrieval استفاده میشود.
- مزیت اصلی آن کنترل دقیق و قطعی روی اینکه چه اسنادی وارد فرآیند شوند است.
- محدودیت آن این است که محتوای سند را درک نمیکند و رتبهبندی انجام نمیدهد.
- یک Retriever واقعی باید Metadata Filtering را با روشهایی مانند Keyword Search و Semantic Search ترکیب کند.