HyperAI

اندماج الرتبة المتبادلة (RRF)

Reciprocal Rank Fusion (RRF) هي خوارزمية تقوم بتقييم درجات البحث لنتائج متعددة تم تصنيفها مسبقًا لإنتاج مجموعة نتائج موحدة.إنها طريقة لدمج مجموعات نتائج متعددة ذات مؤشرات صلة مختلفة في مجموعة نتائج واحدة. لا يلزم تعديل RRF، ولا يلزم ربط مقاييس الصلة المختلفة مع بعضها البعض للحصول على نتائج عالية الجودة. وتنتج هذه التقنية، التي تم تطويرها بالتعاون بين جامعة واترلو (كندا) وجوجل، "نتائج أفضل من أي نظام منفرد وأفضل من طرق إعادة الترتيب القياسية"، وفقًا لمؤلفيها.

عملية RRF

المبدأ الأساسي لـ RRF هو أن المستندات التي تظهر باستمرار في المراكز العليا عبر استراتيجيات البحث المختلفة من المرجح أن تكون أكثر صلة وبالتالي يجب أن تحصل على ترتيب أعلى في النتائج المدمجة.

فيما يلي تفصيل مبسط لعملية RRF:

  1. جمع نتائج البحث المصنفة من استعلامات متعددة متزامنة.
  2. تعيين درجة تصنيف متبادلة لكل نتيجة في القائمة المرتبة. تولد عملية RRF درجة بحث جديدة لكل تطابق في كل مجموعة نتائج. بالنسبة لكل مستند في نتائج البحث، تقوم الخوارزمية بتعيين درجة تصنيف متبادلة استنادًا إلى موقعه في القائمة. يتم حساب النتيجة على النحو التالي 1/(الرتبة + k)، حيث "الرتبة" هي موضع المستند في القائمة و"k" هو ثابت. تظهر الملاحظات التجريبية أن k يعمل بشكل أفضل عندما يتم تعيينه على قيمة صغيرة، مثل 60. لاحظ أن قيمة "k" هذه هي ثابت في خوارزمية RRF وهي مختلفة تمامًا عن "k" التي تضبط عدد أقرب الجيران.
  3. دمج النتائج. تقوم الخوارزمية بإضافة درجات التصنيف المتبادلة التي تم الحصول عليها من كل استراتيجية بحث لكل مستند، مما يؤدي إلى إنشاء درجة مجمعة لكل مستند.
  4. تقوم الخوارزمية بتصنيف المستندات بناءً على الدرجات المجمعة وترتيبها وفقًا لذلك. وتشكل القائمة الناتجة ترتيب المجموعة.

يمكن وصف عملية الاندماج المتبادل للرتب (RRF) باستخدام مخطط انسيابي:

الشكل 1:مخطط انسيابي للاندماج المتبادل للرتب (RRF). يوضح الشكل الخطوات المتبعة في عملية تصنيف RRF.

تنفيذ RRF

تستخدم RRF الصيغة التالية لتحديد درجة التصنيف لكل مستند:

score = 0.0
for q in queries:
    if d in result(q):
        score += 1.0 / ( k + rank( result(q), d ) )
return score

# where
# k is a ranking constant
# q is a query in the set of queries
# d is a document in the result set of q
# result(q) is the result set of q
# rank( result(q), d ) is d's rank within the result(q) starting from 1

(الرمز من وثائق Elasticsearch)

مراجع

【1】https://safjan.com/implementing-rank-fusion-in-python/

【2】https://www.elastic.co/guide/en/elasticsearch/reference/current/rrf.html