تیپ #۳۳

بازرتبه‌بندی: بهترین قطعه‌ها را اول بیاور

جست‌وجوی برداری سریع است، اما در تشخیص تفاوت‌های ظریف ضعیف عمل می‌کند؛ چون پرسش و متن را جداگانه کدگذاری می‌کند، فهرست نتایج اولیه فقط تقریبی درست است. راه‌حل این است که ۵۰ تا ۱۰۰ قطعه‌ی کاندید را بگیرید و با یک مدل بازرتبه‌بند که پرسش و قطعه را هم‌زمان می‌خواند دوباره امتیازدهی کنید. 🥇 بعد فقط ۳ تا ۵ قطعه‌ی برتر را به مدل زبانی بدهید: کیفیت پاسخ بالا می‌رود و هزینه هم کنترل‌شده می‌ماند.

توضیح کامل‌تر

در بازیابی دومرحله‌ای، مرحله‌ی اول باید از میان میلیون‌ها قطعه در کسری از ثانیه چند ده کاندید را بیرون بکشد و به همین دلیل ناچار است پرسش و قطعه را جدا از هم به بردار تبدیل کند. همین جدایی باعث می‌شود مدل نتواند تعامل واژه‌به‌واژه‌ی پرسش و متن را ببیند و قطعه‌های مرتبط اما با واژگان متفاوت را از دست بدهد. بازرتبه‌بند این نقص را جبران می‌کند: مدل cross-encoder پرسش و قطعه را با هم در یک ورودی می‌بیند و امتیاز دقیق‌تری برای میزان ارتباط می‌دهد، اما چون برای هر جفت باید یک بار اجرا شود، اجرای آن روی کل پایگاه داده اقتصادی نیست. راه‌حل عملی همان قیف آشنای بازیابی است: ۵۰ تا ۱۰۰ کاندید از جست‌وجوی برداری، سپس بازرتبه‌بندی، و در نهایت ۳ تا ۵ قطعه برای پرامپت. مثلاً در یک دستیار پشتیبانی، پرسش «چطور رمز عبورم را عوض کنم» ممکن است قطعه‌ای درباره‌ی بازیابی حساب را در رتبه‌ی اول بیاورد، در حالی که بازرتبه‌بند قطعه‌ی دقیق تنظیمات امنیتی و تغییر گذرواژه را بالا می‌کشد. هزینه‌ی این کار چند صد میلی‌ثانیه تأخیر بیشتر است، اما معمولاً یکی از بزرگ‌ترین بهبودهای کیفیت به ازای هر خط کد اضافه است.

نکته پیشرفته
← بازگشت به همهٔ نکته‌های روز