فرض کنید کاربر یک کوئری میفرسته و میخواییم یه سری اسناد مربوط رو بازیابی کنیم. یه مشکل اینجاست که روشهای مختلف Retrieval، هرکدوم از یک زاویه به کوئری نگاه میکنن و ممکنه نتایج متفاوتی بدن.
مثلاً BM25
بیشتر روی Keyword و میزان تطابق کلمات تمرکز میکنه. اگر کاربر دقیقاً یک عبارت یا اصطلاح خاص رو جستجو کنه، BM25 میتونه خیلی خوب عمل کنه.
در مقابل، Vector Search
متن کوئری و اسناد رو به Vector تبدیل میکنه و بر اساس Semantic Similarity دنبال محتواهایی میگرده که از نظر معنایی به Query نزدیک هستن حتی اگر دقیقاً از همان کلمات استفاده نشده باشه.
مثلاً اگر Query این باشه:
How can I reduce my electricity bill?ممکنه BM25 بیشتر دنبال اسنادی بگرده که کلمات
electricity و bill رو دارن، ولی Vector Search میتونه اسناد دربارهی energy consumption optimization رو هم پیدا کنه، چون از نظر معنایی مرتبطه.اما اینجا یک مشکل جدید داریم: Score این دو سیستم قابل مقایسه مستقیم نیست.
مثلاً:
BM25 Score = 17.4Vector Similarity = 0.83این دو عدد مقیاس و معنای متفاوتی دارن بنابراین نمیتونیم بهسادگی اینارو با هم جمع کنیم.
اینجاست که Reciprocal Rank Fusion (RRF) وارد میشه.
و RRF بهجای اینکه به مقدار Scoreها نگاه کنه، به Rank هر Document نگاه میکنه:
RRF(d) = Σ 1 / (k + rank(d))یعنی اگر یک سند هم در BM25 و هم در Vector Search رتبه خوبی داشته باشه، امتیاز نهایی بالاتری میگیره.
مثلاً اگر یک Document در BM25 رتبه 1 و در Vector Search رتبه 3 باشه، از هر دو Retrieval امتیاز میگیره و در Ranking نهایی بالا میاد.
در واقع RRF خودش Document رو از نظر معنایی ارزیابی نمیکنه؛ کاری که انجام میده اینه که Ranking چند Retrieval System مختلف رو با هم Fusion میکنه.
به همین دلیل RRF یکی از روشهای ساده و کاربردی برای ساخت Hybrid Retrieval در سیستمهای RAG محسوب میشه.
@silicon_brain | از هوش مصنوعی عقب نمانید