استرجاع المعلومات1994تأسيسي12 دقيقة قراءة
نظام Okapi في مسابقة TREC-3
Okapi at TREC-3
Robertson, S. E. · Walker, S. · Jones, S. · Hancock-Beaulieu, M. M. · Gatford, M. — TREC
المشكلة
أنظمة البحث القديمة كانت تقع في أحد فخَّين: إمّا أن تتعامل مع التكرار بشكل خطّي — فكلمة تظهر 100 مرة تعني أن الوثيقة أكثر صلة بمئة ضعف — أو أن تتجاهل التكرار تماماً وتكتفي بسؤال واحد: هل الكلمة موجودة أم لا؟ كلا الأسلوبين لا يعكس واقع الصلة. الوثائق الطويلة كانت تحصد درجات عالية لمجرّد أنها تحتوي كلمات أكثر، بصرف النظر عن مدى تركيزها. والكلمات الشائعة مثل «في» و«من» كانت تُغرق الكلمات النادرة التي تحمل المعنى الفعلي. باختصار، لم تكن هناك طريقة مبدئية تجمع بين أهمية الكلمة وتكرارها وطول الوثيقة في درجة ترتيب واحدة متوازنة.
الإسهام
(أفضل تطابق 25): دالة لترتيب الوثائق مُشتقَّة من الإطار الاحتمالي للصلة. الفكرة أنها تمرّ على كل كلمة في الاستعلام وتسأل ثلاثة أسئلة: (1) ما مدى ندرة هذه الكلمة في المجموعة الوثائقية؟ — وهذا ما يُعرف . (2) كم مرة تظهر في هذه الوثيقة تحديداً؟ — لكن بإشباع يتحكّم فيه المعامل k₁، بحيث لا يُضيف التكرار العاشر إلا قدراً ضئيلاً مقارنةً بالأول. (3) هل الوثيقة طويلة بشكل غير عادي؟ — والمعامل b يُعاقب الوثائق الطويلة بتناسب. المحصّلة معادلة مغلقة الصيغة بمعاملَين حُرَّين فقط، تفوّقت على كل ما سبقها في مسابقات TREC وأصبحت المرجع الأساسي في لثلاثة عقود متواصلة.
الأثر
يصعب أن تجد معادلة ترتيب أوسع انتشاراً من BM25 في تاريخ البحث. عملياً كل محرّك بحث معروف — من Lucene إلى Elasticsearch إلى Solr — استخدم BM25 أو صيغة قريبة منها كدالّة تقييم افتراضية. هيمنت على مسابقات TREC لسنوات، ولا تزال هي المعيار الذي تُقاس عليه نماذج الاسترجاع العصبية الحديثة مثل DPR وColBERT وSPLADE. بل إن أنظمة (RAG) غالباً ما تعتمد على BM25 كمسترجع أوّلي حتى حين تكون بقية المنظومة مبنية على تضمينات كثيفة. والمفاهيم التي أرستها — إشباع التكرار وتسوية الطول — أصبحت لغة مشتركة بين الباحثين في استرجاع المعلومات.
تخيّل أمين مكتبة خبيراً تسأله عن موضوع معيّن. الطريقة البدائية أن يعدّ كم مرة ظهرت كلمتك في كل كتاب ويرتّبها بناءً على ذلك — لكنّ موسوعة ضخمة من 500 صفحة تذكر «مناخ» عشرين مرة بين سطورها ليست بالضرورة أنفع من تقرير بحثي من عشر صفحات يدور كله حول المناخ. وكلمة مثل «في» تظهر في كل صفحة تقريباً، فلا تدلّك على شيء.
BM25 هو المنطق الذكي الذي يتّبعه هذا الأمين: يُعلي من شأن الكلمات النادرة (كتاب يذكر «التربة الصقيعية» أدلّ على الموضوع من كتاب يذكر «الطقس»)، ويُطبّق مبدأ العائد المتناقص (الذِّكر الخامس يضيف أقل بكثير من الأول)، ويُراعي طول الكتاب حتى يتنافس الكتيِّب المركَّز والموسوعة الضخمة على أرضية عادلة.
المشكلة: عدّ الكلمات الخام يُضلِّل
قبل BM25 كان الأسلوب السائد في ترتيب نتائج البحث هو TF-IDF، والفكرة بسيطة: خُذ عدد مرات ظهور الكلمة في الوثيقة () واضربه في مقياس ندرتها عبر المجموعة كلها (التكرار المعكوس للوثائق). كان هذا تقدّماً كبيراً على المطابقة المنطقية البحتة التي تقول «موجود أو غير موجود»، لكنه حمل عيبين جوهريين:
-
التكرار الخطّي. إذا ظهرت كلمة «عصبي» عشرين مرة، يمنحها TF-IDF ضعف درجة عشر مرات بالضبط. لكن عملياً، الفرق في صلة وثيقة تذكرها 10 مرات مقابل 20 مرة ضئيل جداً — التكرارات الأولى هي التي تُثبّت الموضوع، وبعدها تتناقص القيمة المضافة بسرعة.
-
غياب تسوية الطول. ورقة مسحية من 10,000 كلمة تحتوي بطبيعتها على تكرارات أكثر لأي كلمة مقارنةً بملخّص من 500 كلمة. لذلك ينحاز TF-IDF منهجياً نحو الوثائق الطويلة حتى لو كانت الوثيقة القصيرة أكثر تركيزاً على الموضوع.
حين انطلقت مسابقات TREC التقييمية في مطلع التسعينيات، ظهرت هذه العيوب بجلاء: لأول مرة اختُبرت أنظمة الاسترجاع على مجموعات وثائق كبيرة وواقعية، وتبيّن أن انحياز الطول مصدر رئيسي للأخطاء.
الفكرة: ثلاث قوى للصلة
طريقة عمل BM25 واضحة: لكل كلمة في الاستعلام تُحسب مساهمة منفصلة، ثم تُجمع المساهمات للحصول على الدرجة النهائية. والمفتاح أن كل مساهمة تُوازن بين ثلاث قوى — تخيّلها كثلاثة أسئلة تسألها المعادلة عن كل كلمة:
1. ما مدى ندرة هذه الكلمة؟ (مُركَّب ) — كلمة تظهر في 5 وثائق من أصل مليون أثمن بكثير من كلمة تظهر في نصف مليون وثيقة. مثلاً، كلمة «» تدلّك على موضوع الوثيقة أكثر بكثير من كلمة «نظام». فـBM25 يرفع وزن الكلمات النادرة المُميِّزة تلقائياً.
2. كم مرة ظهرت في هذه الوثيقة بالذات؟ (مُركَّب التكرار المُشبَع) — كلّما تكرّرت الكلمة أكثر دلّ ذلك على ارتباط أقوى بالموضوع، لكن بعائد يتناقص بسرعة. الفرق بين الغياب التام وظهور الكلمة مرة واحدة ضخم، أما الفرق بين 10 تكرارات و11 فلا يكاد يُذكر. المعامل هو ما يتحكّم في سرعة هذا الإشباع.
3. هل الوثيقة طويلة بشكل غير اعتيادي؟ (تسوية الطول) — وثيقة من 10,000 كلمة تذكر «عصبي» خمس مرات أقلّ تركيزاً من وثيقة قصيرة فيها العدد نفسه من التكرارات. المعامل يضبط مقدار هذه المعاقبة: عند يُتجاهل الطول كلياً، وعند تُطبَّق تسوية كاملة تُعامل الوثيقة كأنها بالطول المتوسط.
المعادلة: BM25 بصيغتها الكاملة
بعد أن اتّضحت الحدس الثلاثة — مكافأة الندرة، وإشباع التكرار، وتسوية الطول — حان وقت المعادلة التي تُترجم هذا كله في سطر واحد:
فكّر فيها كخطّ إنتاج: المعادلة تمرّ على كل كلمة في الاستعلام وتُصدر درجة معناها «هذه الكلمة بهذا المستوى من الندرة × هذه الوثيقة تستخدمها بهذه الكثافة (بعد مراعاة الطول).» ثم تُجمع الدرجات لتحصل على درجة الصلة الإجمالية.
السرّ في المقام: هو المحرّك الذي يُنتج الإشباع والتسوية معاً. حين يكون التكرار كبيراً جداً، يقترب الكسر من سقف ثابت هو . وإذا كانت الوثيقة ضعف المتوسط في الطول مع ، فإن المعادلة تُخفّض تكرارها الفعّال كأنها تحتوي على ذِكر أقلّ ممّا فيها فعلاً.
تشريح المكوِّنات
لنمشِ مع كل مُركَّب بمثال عملي. تخيّل أن لدينا مجموعة من مليون مقالة إخبارية، ومستخدم يبحث عن « الشبكات العصبية».
مِن أين جاءت BM25: نموذج بواسون الثنائي
BM25 لم تأتِ من فراغ أو تجربة وخطأ — بل لها اشتقاق نظري محكم من . الفكرة المحورية هي ما يُسمّى نُخبوية المصطلح (term eliteness): أي وثيقة إمّا أن تكون «عن» مصطلح معيّن فعلاً، أو لا. إذا كانت الوثيقة نخبوية لمصطلح "neural" مثلاً، فستجد الكلمة تتكرّر فيها بكثافة؛ وإن لم تكن كذلك، فإمّا أن تظهر نادراً أو لا تظهر أصلاً.
صاغ Robertson وWalker هذه الفكرة رياضياً عبر نموذج بواسون الثنائي: تكرارات المصطلح في الوثائق النخبوية تتبع بواسون بمتوسط مرتفع ، وفي الوثائق غير النخبوية تتبع توزيع بواسون آخر بمتوسط منخفض . حين تمزج بين التوزيعين يظهر سلوك الإشباع بشكل طبيعي: كلّما زاد التكرار اقتربنا من اليقين بأن الوثيقة نخبوية لهذا المصطلح، فتُضيف كل تكرار إضافي معلومة أقلّ.
والتقريب المغلق لهذا المزيج هو بالضبط مُركَّب التكرار في BM25: ، حيث يعكس النسبة بين متوسطَي التوزيعين. إذن هذا ليس اختياراً اعتباطياً — بل هو الجواب الرياضي المنهجي لسؤال: «بمعلومية هذا العدد من التكرارات، ما أن تكون الوثيقة نخبوية لهذا المصطلح؟»
كيف تستخدم محرّكات البحث BM25
BM25 لا يعمل في فراغ — بل يعتمد على بنية بيانات تُسمّى الفهرس المقلوب. تخيّله كفهرس آخر الكتاب، لكن بحجم هائل يشمل ملايين الوثائق:
لكل كلمة في ، يحتفظ الفهرس بـقائمة نشر (posting list) فيها معرّفات الوثائق التي تحتوي تلك الكلمة، مع عدد تكراراتها في كل وثيقة. حين يصل استعلام، يذهب المحرّك مباشرةً إلى قائمة النشر الخاصة بكل كلمة في الاستعلام، ويحسب مساهمة BM25 لكل وثيقة، ويُراكم الدرجات. ثم تُرتَّب النتائج حسب مجموع الدرجات.
الجمال هنا في الكفاءة: بدلاً من مسح كل وثيقة في المجموعة (وقد تصل إلى المليارات)، لا يمسّ BM25 إلا الوثائق التي تحتوي كلمة واحدة على الأقل من الاستعلام. وإذا أضفت تحسينات مثل — أي التوقّف عن حساب الدرجات حين يتّضح أن أي وثيقة متبقية لن تتغلّب على أفضل النتائج الحالية — يستطيع BM25 ترتيب ملايين الوثائق في أجزاء من الثانية.
المعادلة في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import math
from collections import Counter
def bm25_score(query_terms, doc_tf, doc_len, avg_doc_len,
doc_freq, num_docs, k1=1.5, b=0.75):
"""حساب درجة وثيقة واحدة لاستعلام باستخدام BM25.
المعاملات:
query_terms: قائمة كلمات الاستعلام، مثلاً ["neural", "network"]
doc_tf: قاموس يربط كل مصطلح بتكراره في هذه الوثيقة
doc_len: عدد كلمات هذه الوثيقة
avg_doc_len: متوسط طول الوثيقة في المجموعة
doc_freq: قاموس يربط كل مصطلح بعدد الوثائق التي تحتويه
num_docs: إجمالي عدد الوثائق في المجموعة
k1: معامل الإشباع (أعلى = إشباع أبطأ)
b: تسوية الطول (0 = لا تسوية، 1 = تسوية كاملة)
"""
score = 0.0
for term in query_terms:
# 1. التكرار المعكوس — ما مدى ندرة هذا المصطلح؟
n = doc_freq.get(term, 0)
idf = math.log((num_docs - n + 0.5) / (n + 0.5) + 1)
# 2. تكرار المصطلح — كم مرة يظهر هنا؟
tf = doc_tf.get(term, 0)
# 3. تسوية الطول — اضبط وفقاً لحجم الوثيقة
norm = 1 - b + b * (doc_len / avg_doc_len)
# ادمج: تكرار مُشبَع × التكرار المعكوس
tf_component = (tf * (k1 + 1)) / (tf + k1 * norm)
score += idf * tf_component
return score
# هذا كل شيء. دالة التقييم هذه من 8 أسطر هي ما يشغّل
# Elasticsearch وLucene وSolr ومعظم محرّكات البحث حول العالم.
# نموذج الترتيب بأكمله يتسع في حلقة for واحدة.BM25 مقابل الاسترجاع الكثيف: تكامل لا تنافس
في السنوات الأخيرة برزت نماذج مثل DPR وColBERT. هذه النماذج تُحوّل الاستعلام والوثيقة إلى كثيفة ثم تقيس الصلة عبر في . ميزتها الكبرى أنها تلتقط التشابه الدلالي: تعرف مثلاً أن «سيارة» و«مركبة» مرتبطتان حتى لو لم تتشاركا حرفاً واحداً.
BM25 في المقابل معجمي بالكامل: لا يطابق إلا الكلمات نفسها (أو جذورها)، ولا يفهم الترادف ولا إعادة الصياغة. لكنه يتفوّق في جوانب لا تزال النماذج الكثيفة تعاني منها:
- المطابقة الحرفية الدقيقة. حين يبحث المستخدم عن اسم منتج أو رمز خطأ أو مصطلح تقني بعينه، فالمطابقة الحرفية هي المطلوب تماماً. النماذج الكثيفة قد تخلط بين كيانات متشابهة دلالياً لكنها مختلفة فعلياً.
- قابلية التفسير. يمكنك فحص تفصيل درجة BM25 ومعرفة لماذا تصدّرت وثيقة معيّنة: أي كلمات تطابقت وما قيمة IDF والتكرار لكل منها. النماذج الكثيفة صندوق أسود في هذا الشأن.
- لا يحتاج بيانات تدريب. BM25 يعمل فوراً على أي مجموعة نصية دون تعنون. النماذج الكثيفة تحتاج أزواج صلة مُعنونة أو .
- السرعة على نطاق واسع. البحث عبر الفهرس المقلوب دون خطّي في التعقيد، بينما البحث عن للمتّجهات الكثيفة — وإن كان سريعاً — أصعب في الضبط والتحسين.
لذلك استقرّت الأنظمة الإنتاجية الحديثة على الاسترجاع الهجين: يعمل BM25 كمسترجع مرحلة أولى يُنقّي ملايين الوثائق إلى بضعة آلاف بسرعة، ثم يأتي كثيف أو متقاطع ليختار الأفضل منها. هكذا تجتمع كفاءة BM25 ودقّته الحرفية مع الفهم الدلالي للنماذج العصبية.
ما الذي أتاحه BM25
1994
BM25 (نظام Okapi في TREC-3)
قدّم معادلة تجمع بين إشباع التكرار وتسوية الطول. تفوّق على جميع الطرق السابقة في مسار الاسترجاع الحُرّ ضمن مسابقة TREC.
2000
Lucene يتبنّى تقييم BM25
مكتبة البحث مفتوحة المصدر التي أصبحت أساس Elasticsearch وSolr بدأت بـTF-IDF ثم تحوّلت لاحقاً إلى BM25 كدالة ترتيب افتراضية.
2004
BM25F — الوثائق المُهيكلة
طوّرت BM25 لتتعامل مع حقول الوثيقة (العنوان، المتن، الرابط) بأوزان مستقلّة ثم تدمجها. أصبحت ركيزة ترتيب نتائج البحث في مايكروسوفت وشركات أخرى.
2019
DPR — استرجاع المقاطع الكثيف
أول نموذج استرجاع عصبي يتفوّق على BM25 بشكل مستقرّ، مستخدماً متّجهات كثيفة مبنية على BERT. منذ ذلك الحين أصبح BM25 هو المعيار الذي يُقاس عليه كل نموذج جديد.
2020
ColBERT — استرجاع التفاعل المتأخر
احتفظ بتمثيل مستقلّ لكل رمز بدلاً من تكثيف الوثيقة في متّجه واحد، فحقّق توازناً بين الكفاءة والمطابقة الدلالية. ومع ذلك لا يزال BM25 هو مرجع المقارنة.
2020
REALM — نموذج لغوي معزَّز بالاسترجاع
أظهر أن تدريب نموذج لغوي مسبقاً بالتزامن مع مسترجع يرفع أداء الإجابة عن الأسئلة. وقد لعب BM25 دور المسترجع الأوّلي في كثير من أنظمة التوليد المعزَّز بالاسترجاع.
2024
الاسترجاع الهجين يصبح معياراً
أنظمة التوليد المعزَّز بالاسترجاع في الإنتاج استقرّت على الجمع بين BM25 والاسترجاع الكثيف كمرحلة أولى مزدوجة: دقّة المطابقة المعجمية من جهة، والتغطية الدلالية من جهة أخرى.
بعد ثلاثة عقود من ظهورها، لا تزال BM25 العمود الفقري لأنظمة البحث الإنتاجية. في كل مرة تبحث في Elasticsearch، أو تستعلم من منظومة توليد معزَّز بالاسترجاع، أو تستخدم أداة بحث في الشيفرة البرمجية — من المرجّح أن BM25 تعمل خلف الكواليس في المرحلة الأولى. الأجيال التي جاءت بعدها لم تستبدلها — بل بنت فوقها.
المرجعRobertson, Walker, Jones, Hancock-Beaulieu, Gatford. Okapi at TREC-3. TREC, 1994.
مصطلحات هذه الورقة
- BM25BM25
- استرجاع المعلوماتInformation Retrieval
- الفهرس المقلوبInverted Index
- تكرار المصطلحTerm Frequency
- التكرار المعكوس للوثائقInverse Document Frequency
- تسوية طول الوثيقةDocument Length Normalization
- الاسترجاع المتناثرSparse Retrieval
- حقيبة الكلماتBag of Words
- الاسترجاع الكثيفDense Retrieval