Hybrid RAG يتفوق على Pure Vector Search — إليك ما تظهره البيانات

مشاركة:
Hybrid RAG يتفوق على Pure Vector Search — إليك ما تظهره البيانات

Pure Vector Search هو الخيار الافتراضي لمعظم تطبيقات RAG — وهذه مشكلة. الاسترجاع القائم على Embeddings يعاني من فجوة دقة موثقة: فهو ممتاز في التشابه الدلالي ولكنه يخفق دائمًا في التطابقات التامة والمصطلحات النادرة وأسماء العلم. في المعايير القياسية، يتفوق الاسترجاع الهجين الذي يجمع بين BM25 وdense embeddings على Pure Vector Search بنسبة 15–40% حسب مجموعة البيانات وتوزيع الاستعلامات. معظم الفرق لا تقيس هذه الفجوة لأنها لا تختبر البدائل. هذا المقال يشرح الآليات والأرقام وطريقة التنفيذ.

فخ Vector Search

تعمل Dense Embeddings عن طريق تحويل النص إلى فضاء متجهي عالي الأبعاد حيث تتجمع المحتويات المتشابهة دلاليًا. هذا قوي للاسترجاع على مستوى المفاهيم — فالبحث عن "نشر نموذج Machine Learning" سيعرض مستندات عن MLOps حتى لو لم تذكر العبارة نفسها. لكن هذه الخاصية نفسها تصبح عائقًا للاستعلامات الحساسة للدقة.

تأمل البحث في قاعدة معرفية تقنية عن "GPT-4o". نموذج Embedding يمثل هذا Token حسب توزيعه التدريبي — وقد يرتب مستندات عن "GPT-4" أو "GPT-4 Turbo" أو مقارنات نماذج OpenAI العامة أعلى من مستند يحتوي على السلسلة النصية الدقيقة "GPT-4o" لكنه يناقش موضوعًا مختلفًا. درجة التشابه في Embedding ليس لديها مفهوم للحدود بين "GPT-4" و"GPT-4o". نفس نمط الفشل يظهر مع رموز المنتجات (البحث عن "WD-40" يظهر محتوى قريبًا من مواد التشحيم بدلاً من المنتج نفسه)، وأرقام الإصدارات ("Python 3.12" مقابل "Python 3.1")، ومراجع القضايا القانونية، ورموز الأدوية الطبية.

السبب الجذري: Dense Embeddings تُدرَّب على أنماط التواجد المشترك، وليس على هوية الأحرف. أي مصطلح نادر في مجموعة التدريب — اسم نموذج جديد، دالة API غير معروفة، اسم شخص — يحصل على Embedding مشوش أو عام يدمر دقة الاسترجاع. هذا ليس خللاً في نموذج Embedding، بل قيد هيكلي في المنهج.

كيف يسد BM25 الفجوة

BM25 (Best Match 25) هو دالة تسجيل احتمالية تعتمد على تردد المصطلحات، وكان العمود الفقري لمحركات البحث لأكثر من 30 عامًا. يسجل المستندات بناءً على عاملين: Term Frequency (TF) — عدد مرات ظهور مصطلح الاستعلام في المستند — وInverse Document Frequency (IDF) — مدى ندرة هذا المصطلح في المجموعة الكلية. المستندات التي تحتوي على مصطلحات استعلام نادرة تحصل على دفعة قوية في التقييم؛ المصطلحات الشائعة مثل "the" أو "is" لا تساهم شيئًا تقريبًا.

بالنسبة لـ "GPT-4o"، يسجل BM25 مستندًا يحتوي على "GPT-4o" تقريبًا بشكل مثالي إذا كان المصطلح نادرًا في المجموعة (وهو كذلك في معظم قواعد المعرفة المؤسسية). لا يهتم BM25 بالتشابه الدلالي — بل يهتم بهوية المصطلح. هذا يجعله لا يُقهر تقريبًا في سيناريوهات المطابقة التامة: معرفات المنتجات، مقاطع الكود، رسائل الخطأ، البنود القانونية، الصيغ الكيميائية، وأي مجال تكون فيه الدقة أهم من الاستدعاء.

يتعامل BM25 أيضًا مع الاستعلامات متعددة المصطلحات بشكل جيد عبر وزن IDF. في استعلام مثل "Python asyncio event loop timeout"، يزن BM25 بشكل كبير "asyncio" و"timeout" (مصطلحات نادرة) ويقلل وزن "Python" (مصطلح شائع). Vector Search، على النقيض، يمزج كل المصطلحات في Embedding واحد وقد يفقد الإشارة من المصطلحات النادرة والحاسمة.

التسجيل الهجين عمليًا

الطريقة القياسية لدمج نتائج BM25 وVector هي Reciprocal Rank Fusion (RRF). تأخذ RRF القوائم المرتبة من كلا المسترجعين وتحسب درجة مدمجة لكل مستند باستخدام الصيغة: RRF_score = Σ 1 / (k + rank_i) حيث k ثابت (عادة 60) وrank_i هو موضع المستند في كل قائمة مرتبة. المستندات التي تحتل مراتب عالية في كلا القائمتين تحصل على أعلى الدرجات المدمجة؛ المستندات القوية في مسترجع واحد فقط تظل تساهم ولكنها تتعرض لعقوبة.

تكون RRF أفضل من التوليف الخطي للدرجات لأنها تتجنب مشكلات تطبيع الدرجات — فـ BM25 وCosine Similarity تعملان على مقاييس مختلفة، وتطبيعهما يضيف تعقيدًا في ضبط المعلمات. RRF قليلة المعلمات وقوية عبر أنواع الاستعلامات.

إليك إعداد مسترجع هجين بسيط باستخدام EnsembleRetriever من LangChain:


from langchain.retrievers import BM25Retriever, EnsembleRetriever
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings

# Build BM25 retriever from document list
bm25_retriever = BM25Retriever.from_documents(docs)
bm25_retriever.k = 10

# Build vector retriever
vectorstore = Chroma.from_documents(docs, OpenAIEmbeddings())
vector_retriever = vectorstore.as_retriever(search_kwargs={"k": 10})

# Combine with equal weights (RRF under the hood)
ensemble_retriever = EnsembleRetriever(
    retrievers=[bm25_retriever, vector_retriever],
    weights=[0.5, 0.5]
)

results = ensemble_retriever.invoke("GPT-4o multimodal capabilities")

يوفر LlamaIndex وظائف مكافئة من خلال QueryFusionRetriever مع mode="reciprocal_rerank". كلا التجريدين يعالجان دمج RRF داخليًا، لذا فإن تكلفة التنفيذ منخفضة بمجرد وجود Pipeline RAG Vector عامل.

أرقام الأداء الحقيقية

على معيار تمرير الفقرات MS-MARCO — مجموعة بيانات استرجاع المعلومات الأكثر استشهادًا والتي تحتوي على 8.8 مليون فقرة — يسجل الاسترجاع الهجين BM25+dense باستمرار NDCG@10 أعلى بنسبة 10–20% من الاسترجاع الكثيف الخالص. معيار BEIR لعام 2023 عبر 18 مجموعة بيانات غير متجانسة أظهر أنه لا توجد طريقة استرجاع واحدة تهيمن: النماذج الكثيفة تفوز في المجموعات الغنية دلاليًا مثل FEVER وHotpotQA، بينما يفوز BM25 أو يتعادل في المجموعات المعتمدة على المطابقة التامة مثل DBPedia وRobust04. لكن الطرق الهجينة تحتل باستمرار المرتبة العليا عبر جميع المجموعات الـ 18 — وهي النهج الوحيد الذي يتجنب الفشل الكارثي في أي نوع مجموعة بيانات واحد.

دراسة Elastic لقياس RAG في عام 2025 قامت بتقييم جودة الاسترجاع على مجموعات بيانات تذاكر دعم المؤسسات ووجدت أن البحث الهجين قلل من حالات فشل الاسترجاع (استعلامات لا تعيد مستندات ذات صلة ضمن أفضل 5) بنسبة 34% مقارنة بالبحث الدلالي الخالص. كانت المكاسب واضحة بشكل خاص للاستعلامات القصيرة المليئة بالكلمات الرئيسية — النوع الذي يهيمن على حالات استخدام الدعم والعمليات.

تقييم البحث الهجين من Pinecone (باستخدام فهرس متفرق-كثيف يجمع بين Sparse Vectors من SPLADE وDense Embeddings) أبلغ عن تحسينات MRR@10 بنسبة 18–27% على مجموعات بيانات كتالوج المنتجات والمستندات القانونية مقارنة بالاسترجاع الكثيف فقط. النتيجة: مكاسب البحث الهجين تكون أكبر عندما تحتوي المجموعة على معرفات منظمة ونصوص حرة — وصف يناسب معظم قواعد المعرفة المؤسسية.

متى تستخدم كل وضع

تعتمد استراتيجية الاسترجاع الصحيحة على نوع الاستعلام وخصائص المجموعة. إليك إطار عمل عملي للقرار:

  • Pure Vector Search: الأفضل للاستعلامات الدلالية على مستوى المفاهيم، والاسترجاع عبر اللغات، والمجموعات التي تكثر فيها إعادة الصياغة. حالات الاستخدام: البحث في الأوراق البحثية، تحليل ملاحظات العملاء، الأسئلة والأجوبة العامة على المستندات السردية.
  • Pure BM25: الأفضل للاستعلامات المطابقة التامة على المحتوى المنظم أو التقني. حالات الاستخدام: البحث في كتالوج المنتجات بواسطة SKU، البحث في الكود بواسطة اسم الدالة، استرجاع النصوص القانونية بواسطة رقم القانون، استرجاع السجلات الطبية بواسطة رمز التشخيص.
  • Hybrid (BM25 + Vector): الخيار الافتراضي الصحيح لمعظم نشرات RAG المؤسسية. حالات الاستخدام: دعم العملاء (يمزج بين استعلامات الكلمات الرئيسية مثل error codes والاستعلامات الدلالية مثل "كيف ألغي اشتراكي")، قواعد المعرفة الداخلية، الوثائق التقنية، البحث في التجارة الإلكترونية، استرجاع سياسات الموارد البشرية.

مبدأ توجيهي عملي: إذا كانت أكثر من 20% من استعلامات المستخدم تحتوي على معرفات أو أسماء نماذج أو أرقام إصدارات أو مصطلحات أخرى للمطابقة التامة، فإن البحث الهجين سيتفوق على Pure Vector. قم بتشغيل عينة من 50 استعلامًا حقيقيًا عبر كلا النهجين وقياس Precision@5 — الفرق يكون مرئيًا دائمًا تقريبًا في غضون ساعة من الاختبار.

قائمة التحقق للتنفيذ

  • قياس النظام الحالي أولاً. قم بتشغيل 50–100 استعلام تمثيلي عبر RAG Vector الحالي وقم بتقييم Precision@5 يدويًا. هذا يحدد خط الأساس ويجعل التحسن من الاسترجاع الهجين قابلاً للقياس بدلاً من الافتراض.
  • استخدم فهرسًا متفرقًا يتوافق مع مجموعتك. Elasticsearch وOpenSearch لديهما BM25 أصلي؛ Pinecone يدعم Sparse-Dense؛ Weaviate لديه BM25F؛ Qdrant يدعم Sparse Vectors. اختر الخيار الذي يتجنب إضافة خدمة بحث منفصلة.
  • ضبط k في RRF على مجموعة استعلامات محجوزة. القيمة الافتراضية k=60 قوية لكنها ليست مثالية دائمًا. بحث شبكي على k=20, 40, 60, 80 على 50 استعلامًا معلَّمًا يستغرق عادة أقل من ساعة.
  • الحفاظ على تزامن فهارس BM25 وVector. يجب تحديث كلا الفهرسَين عند إضافة/حذف/تحديث المستندات. التحديثات المفقودة في أحد الفهرسَين تؤدي بصمت إلى تدهور جودة الدمج. استخدم Pipeline إدخال موحد يكتب إلى كليهما.
  • النظر في توسيع الاستعلام لـ BM25. توليد 2–3 متغيرات للاستعلام باستخدام LLM قبل استرجاع BM25 (نمط HyDE) يحسن بشكل كبير من استدعاء الاستعلامات الحوارية التي يصوغها المستخدمون كأسئلة بدلاً من كلمات رئيسية.
  • مراقبة جودة الاسترجاع لكل استعلام في الإنتاج. سجل أي مسترجع (BM25 أو Vector) ساهم في المستندات النهائية الأعلى ترتيبًا. إذا كان أحد المسترجعين يهيمن باستمرار على أنماط استعلام معينة، فاضبط الأوزان أو وجّه أنواع الاستعلامات إلى مسترجعين متخصصين.

الخلاصة

معظم الفرق التي تبني أنظمة RAG تختار Pure Vector Retrieval افتراضيًا دون إجراء Benchmark مُتحكم به. إضافة BM25 إلى Pipeline RAG Vector موجود — باستخدام EnsembleRetriever من LangChain أو QueryFusionRetriever من LlamaIndex — هي مهمة تنفيذ ليوم واحد. المكاسب في الأداء على معظم مجموعات البيانات المؤسسية ليست هامشية: تحسن بنسبة 15–40% في دقة الاسترجاع يترجم مباشرة إلى هلوسات أقل، واستدعاءات أقل لـ LLM إلى "لا أعرف"، ودرجات رضا أعلى للمستخدم النهائي. البيانات متسقة عبر MS-MARCO وBEIR والمعايير الصناعية: الاسترجاع الهجين ليس تحسينًا — بل هو خط الأساس الذي يجب قياس Pure Vector RAG ضده.

مشاركة:
Hybrid RAG يتفوق على Pure Vector Search — إليك ما تظهره البيانات | IRCNF - Intelligent Reliable Custom Next-gen Frameworks