البحث الهجين: متى يتفوّق BM25 على المتجهات
ما أثبته تقييم BEIR عن ضعف النماذج الكثيفة خارج نطاق تدريبها، وكيف تدمج BM25 مع المتجهات بخوارزمية RRF، وأين تضع إعادة الترتيب دون أن ينفجر الكمون.
اسأل نظامًا دلاليًّا صرفًا عن «كود الخطأ ERR-4021» وستستقبل مقاطع تتحدث عن الأخطاء عمومًا. لن يعطيك المقطع الذي يذكر هذا الكود، ببساطة لأن الرمز النادر لا معنى دلاليًّا له: هو سلسلة تُطابَق لا فكرة تُفهَم.
هذا ليس عيبًا تُصلحه بترقية نموذج التضمين. حين قيّم فريق BEIR [1] نماذج الاسترجاع على ثمانية عشر مجموعة بيانات متنوّعة دون تدريب على مجالاتها، كانت الخلاصة أن كثيرًا من النماذج الكثيفة يتراجع خارج نطاق تدريبه، بينما يظل BM25 [2] خطّ أساس قويًّا يصعب هزمه. ومستنداتك المؤسسية — بمصطلحاتها ورموزها الداخلية — هي تعريف «خارج نطاق التدريب».
أين يتفوّق كلّ أسلوب
| نوع الاستعلام | المثال | الأفضل |
|---|---|---|
| مرادفات وصياغة مختلفة | «كيف أوقف الاشتراك؟» مقابل «إلغاء العضوية» | المتجهات |
| سؤال مفاهيمي | «ما الفرق بين الاسترجاع والتوليد؟» | المتجهات |
| رمز أو معرّف | ERR-4021 · SKU-99182 |
BM25 |
| اسم دالة أو معامل | normalize_embeddings |
BM25 |
| مصطلح نادر في مجال ضيّق | اسم دواء أو مادة نظامية | BM25 |
| لغة مختلطة عربي/إنجليزي | «كيف أستخدم embeddings مع العربية؟» | الدمج |
BM25 يرجّح تطابق الكلمات بتكرارها وندرتها وطول المستند. لا يعرف أن «إلغاء» و«إيقاف» متقاربتان، لكنه يعرف يقينًا أن ERR-4021 وردت هنا ولم ترد هناك. النماذج الكثيفة تعرف العكس تمامًا. الجمع بينهما ليس حلًّا وسطًا، بل تغطية لعيبين متعاكسين.
الدمج بالرتبة لا بالدرجة
أول عقبة في الدمج أن الدرجتين غير قابلتين للمقارنة: تشابه جيب التمام محصور بين حدّين، ودرجة BM25 مفتوحة وتعتمد على المجموعة. معايرتهما مصدر أخطاء طويل الأمد. الحلّ الذي أثبت متانته هو الدمج بالرتبة — Reciprocal Rank Fusion [3]:
def rrf(rankings: list[list[str]], k: int = 60) -> list[tuple[str, float]]:
"""rankings: قوائم معرّفات مرتّبة من كل نظام بحث على حدة."""
scores: dict[str, float] = {}
for ranking in rankings:
for position, doc_id in enumerate(ranking, start=1):
scores[doc_id] = scores.get(doc_id, 0.0) + 1.0 / (k + position)
return sorted(scores.items(), key=lambda item: item[1], reverse=True)
merged = rrf([vector_results, bm25_results])[:20]
الثابت k=60 هو القيمة المتعارف عليها في الأدبيات؛ رفعه يُنعّم فروق المراكز الأولى وخفضه يضخّمها. والسلوك الجميل هنا أن المستند الذي يظهر في القائمتين معًا يصعد تلقائيًّا بلا وزن يدوي — وهو غالبًا المستند الصحيح.
الطبقة الثالثة: إعادة الترتيب
الاسترجاع سريع لأنه يقارن متجهات محسوبة مسبقًا، ولهذا هو تقريبي. النموذج التقاطعي (cross-encoder) يقرأ السؤال والمقطع معًا فيعطي درجة صلة أدقّ بكثير [4]، لكنه لا يصلح للفهرس كله لأن تكلفته خطّية بعدد المقاطع.
| الطبقة | ما تفعله | حجم المخرَج | المسؤولة عن |
|---|---|---|---|
| استرجاع هجين | بحث دلالي + BM25 ثم دمج بـRRF | ~٥٠ مرشّحًا | الاستدعاء (Recall) |
| إعادة ترتيب تقاطعية | قراءة السؤال مع كل مرشّح وتسجيله | أعلى ٥ | الدقة (Precision) |
| التوليد | إجابة مقيّدة بالمقاطع الخمسة | إجابة واحدة | الإخلاص للمصدر |
المكسب يظهر في Precision@5: مقاطع أقلّ ضجيجًا تدخل السياق، فتقلّ التكلفة ويقلّ تشتّت النموذج معًا. أما التقرير الذي نشرته Anthropic عن «الاسترجاع السياقي» [5] فيعطي إشارة عن حجم ما يمكن كسبه في هذه الطبقات: تحسين تمثيل المقاطع خفّض معدّل فشل الاسترجاع في أعلى ٢٠ نتيجة بنحو ٣٥٪، وبإضافة إعادة الترتيب اقترب الخفض من الثلثين. اقرأها كإشارة اتجاه لا كرقم مضمون على بياناتك.
الثمن كمون إضافي يتراوح بين عشرات ومئات الأجزاء من الثانية بحسب النموذج وعدد المرشّحين. قِسه على عتادك، ولا تُعد ترتيب أكثر من ٢٠–٥٠ مرشّحًا.
متى لا تحتاج الهجين
- قاعدة سردية بحتة بلا رموز ولا معرّفات: محاضر، مقالات، مراسلات.
- نظام يخدم أسئلة مفاهيمية فقط.
- المرحلة الأولى من النموذج الأوّلي: ابدأ بالمتجهات، وأضف BM25 حين تُظهر مجموعتك الذهبية فشلًا في استعلامات الرموز — لا قبل ذلك.
الأخطاء الشائعة
- أوزان يدوية من نوع
0.7 × dense + 0.3 × sparseبلا قياس؛ RRF أبسط وأمتن. - إعادة ترتيب القائمة كاملة بدل أعلى مجموعة منها، فينفجر الكمون بلا مكسب.
- إهمال تطبيع النصّ العربي قبل الفهرسة الكلمية: توحيد الألف والهمزة والتاء المربوطة وحذف التشكيل يغيّر النتائج جذريًّا، ويجب أن يُطبَّق على الاستعلام والمستند بالطريقة نفسها.
- قياس بمقياس واحد:
Recall@20قبل إعادة الترتيب وPrecision@5بعدها — لكل طبقة رقمها.
الخلاصة العملية
- طبّع النصّ العربي قبل الفهرسة الكلمية، وبالقواعد نفسها على الطرفين.
- ابنِ فهرسين على المقاطع نفسها بمعرّفات موحّدة.
- ادمج بـRRF بدل الأوزان اليدوية.
- أعد ترتيب أعلى ٢٠–٥٠ مرشّحًا، وسجّل الكمون المضاف.
- اجعل مجموعتك الذهبية تحوي استعلامات رموز واستعلامات مفاهيم معًا.
الأسئلة الشائعة
هل أحتاج قاعدة بيانات تدعم النوعين؟
ليس شرطًا. يمكنك تشغيل فهرسين منفصلين ودمج القوائم في تطبيقك بـRRF. القواعد التي تدعم الهجين أصلًا توفّر عليك مزامنة الفهرسين لا أكثر.
ما مقدار التحسّن المتوقّع؟
يتحدّد بتوزيع استعلاماتك: كلما كثرت الرموز والمعرّفات في أسئلة المستخدمين كبر المكسب، وقد يكون مهملًا في قاعدة مفاهيمية صرفة. هذا سبب إضافي للقياس قبل إضافة التعقيد.
هل تغني إعادة الترتيب عن الهجين؟
لا. إعادة الترتيب تعمل على ما وصلها، ولن تخترع مقطعًا لم يسترجعه أحد. الهجين يرفع سقف ما يمكن أن يصل، وإعادة الترتيب تنقّي ما وصل.
ماذا عن التضمينات المتفرّقة المتعلَّمة؟
بديل حديث يجمع المطابقة الحرفية مع أوزان متعلَّمة، ووجيه إن كانت بنيتك تدعمه. لكن BM25 يبقى الأرخص والأسرع تطبيقًا، وأصعب أن يُهزَم في المطابقة الحرفية.
المراجع
- Thakur, N. et al. BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models. NeurIPS 2021. arXiv:2104.08663
- Robertson, S. & Zaragoza, H. The Probabilistic Relevance Framework: BM25 and Beyond. FnTIR, 2009.
- Cormack, G., Clarke, C. & Buettcher, S. Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods. SIGIR 2009.
- Nogueira, R. & Cho, K. Passage Re-ranking with BERT. arXiv:1901.04085
- Anthropic. Introducing Contextual Retrieval. anthropic.com
- Karpukhin, V. et al. Dense Passage Retrieval for Open-Domain Question Answering. arXiv:2004.04906
اقرأ بعده
إعادة الترتيب (Reranking): كم تكلّفك الدقّة من الكمون؟
الفرق بين النموذج ثنائي الترميز والنموذج التقاطعي، ولماذا ترفع إعادة الترتيب دقّة RAG، وكم مرشّحًا تُعيد ترتيبه قبل أن ينفجر زمن الاستجابة.
اقرأ المقالنافذة السياق الطويلة: هل ألغت الحاجة إلى RAG؟
ما الذي تغيّره نوافذ السياق الكبيرة فعلًا، ولماذا يتراجع أداء النماذج حين تُدفن المعلومة وسط سياق طويل، ومتى يكون الحشو أرخص من الاسترجاع.
اقرأ المقالدليل RAG الكامل: من المستند إلى إجابة موثوقة
خط أنابيب الاسترجاع المعزّز بمراحله الست، وأين ينكسر فعلًا في الإنتاج، وما تقوله أوراق BEIR وDPR و«الضياع في المنتصف» عن كل قرار تتخذه فيه.
اقرأ المقالنشرة إسناد الأسبوعية
ثلاثة أشياء مفيدة كل أسبوع: ورقة بحثية مشروحة، قياس عملي، وخطأ شائع رأيناه في الإنتاج. بلا حشو وبلا رعايات مخفية.