وحدة 4 / 11

استراتيجيات الاسترجاع: Top-k، Hybrid، إعادة الترتيب

المكاسب:

  • تنفيذ بحث مختلط يجمع بين التحديد العلوي والبحث الدلالي والبحث عن الكلمات الرئيسية
  • زيادة دقة البحث الأول مع إعادة الترتيب
  • جعل الأسئلة الصعبة أكثر قابلية للبحث باستخدام تقنيات مثل تحويل الاستعلام وHyDE

لقد قمت بتمزيق المستندات بشكل جيد ووضعها في قاعدة بيانات المتجهات. الآن العمل الحقيقي: جلب القطع الصحيحة عندما يطرح المستخدم سؤالاً. وهذا ما يسمى الاسترجاع وهو العمود الفقري لجودة RAG. تذكر عبارة "جودة الاسترجاع = جودة RAG"؛ هذه الوحدة هي بالضبط فن تحسين تلك الجودة. سنغطي التقنيات العملية بدءًا من اختيار top-k وحتى البحث المختلط، ومن إعادة الترتيب إلى تحويل الاستعلام.

Top-k: كم عدد القطع التي سنحضرها؟

الإعداد الأساسي: كم عدد القطع (ك) التي سيتم إرجاعها من البحث. إذا أحضرت كمية أقل (k=1) فهناك خطر كبير بفقد القطعة الصحيحة؛ إذا أضفت الكثير (k=20)، فسيؤدي ذلك إلى إضافة ضوضاء إلى النموذج وستزيد تكلفة الرمز المميز.

التمييز بين مفهومين. تذكر: المعدل الذي تكون فيه القطعة الصحيحة من بين تلك التي تم استرجاعها. الدقة: المعدل الذي يكون فيه ما يتم استرجاعه ذا صلة. تؤدي زيادة k إلى زيادة الاستدعاء ولكنها تقلل الدقة. الهدف هو تحقيق التوازن بين الاثنين.

أعلى ك

تأثير

الوضع المناسب

1-3

دقة عالية، خطر التفويت

أسئلة بسيطة ذات إجابة واحدة

4-8

الرصيد؛ معظم السيناريوهات

الشركة العامة RAG

10-20

كلما زاد الاستدعاء، زادت الضوضاء

مع إعادة الترتيب (أدناه)

نصيحة: النمط الشائع والقوي: جلب واسع (k=20)، ثم تضييق مع إعادة الترتيب (أعلى 4). بهذه الطريقة لن يفوتك أي شيء وستعطي سياقًا نظيفًا للنموذج.

البحث المختلط: قوة عمليتي البحث

يلتقط البحث الدلالي (المتجه) المعنى ولكنه يفتقد أشياء: رمز المنتج الكامل ("XR-4471")، والاختصار النادر، والاسم الصحيح، ورقم الإصدار. بالنسبة لهذه المهام ذات المطابقة التامة، يعد البحث عن الكلمات الرئيسية بالطريقة التقليدية - وخاصة الخوارزمية الكلاسيكية التي تسمى BM25 - أمرًا جيدًا للغاية.

يجمع البحث المختلط بين الاثنين: يعمل البحث الدلالي والبحث عن الكلمات الرئيسية، ويجمع النتائج. وهكذا، في سؤال مثل "فترة الضمان لـ

عادةً ما يتم الدمج باستخدام RRF (Reciprocal Rank Fusion): يتم تقديم المسار الأعلى في كلتا القائمتين.

# استرجاع مختلط (مفاهيمي)sem = Vector_search(question, k=20) # ومعناهkey = bm25_search(question, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # دمج الاثنين، أعلى 8

إعادة الترتيب: التمريرة الثانية والأكثر ذكاءً

يمكن أن تكون المكالمة الأولى سريعة ولكنها وقحة. تقوم إعادة الترتيب بتقييم المرشحين الذين تم إرجاعهم من خلال البحث الأول واحداً تلو الآخر باستخدام نموذج أكثر قوة (عادةً ما يكون جهاز تشفير متقاطع - نموذج يقرأ السؤال والمقطع معًا ويسجل مدى الصلة) وينقل الأكثر صلة إلى الأعلى.

المنطق هو كما يلي: يقوم البحث الأول بتعيين عدد كبير من المرشحين للاستدعاء (20 مرشحًا)، ويختار القائم بإعادة التصنيف أفضل 4 مرشحين من أجل الدقة. يعد هذا النهج المكون من مرحلتين أكثر دقة من البحث على مرحلة واحدة. يتطلب الأمر بعض التأخير والمعالجة الإضافية؛ المكسب هو زيادة كبيرة في الجودة.

# استرجاع على مرحلتين (مفاهيمي) المرشحين = hybrid_search(question, k=20) # Wide, Quickscore = reranker.score(question, المرشحين) # درجة الصلة لكل مرشح context = rating.rank()[:4] # top 4

تحويل الاستعلام

في بعض الأحيان لا تكمن المشكلة في البحث، بل في السؤال نفسه. إذا سأل المستخدم "ماذا عن العاملين عن بعد؟" "، لا يمكن البحث عن هذا بمفرده (ليس من الواضح ما هو المناسب للعاملين عن بعد). فيما يلي تقنيات تحويل الاستعلام:

  • أعد الكتابة: استخدم سجل المحادثة لجعل السؤال مستقلاً: "ما هي الإجازة السنوية التي يحق للعاملين عن بعد الحصول عليها؟"
  • استعلام متعدد: إنشاء 3 تعبيرات مختلفة لنفس السؤال، والبحث عنها جميعًا، ودمج النتائج. كلمات مختلفة تجد قطع مختلفة.
  • HyDE (تضمين المستندات الافتراضية): قم أولاً بطباعة "إجابة محتملة" للنموذج، ثم قم بتضمين تلك الإجابة التخيلية وابحث عنها. في بعض الأحيان يتم العثور على الإجابة الخيالية بشكل أفضل لأنها أقرب بالكلمات إلى الوثيقة الحقيقية.

# Multi-query (مفاهيمي)variants = model.uret("عبر عن هذا السؤال بثلاث طرق مختلفة: " + question)tum_sonuc = []for v في المتغيرات: all_sonuc += Vector_intermediate(v, k=6)context = Single_and_order(tum_result)[:6]

استرجاع ضعيف / استرجاع قوي

ضعيف (مرحلة واحدة، دلالات فقط، ثابت ك = 3):

result = Vector_search(question, k=3)# المشكلة: رمز المنتج مفقود، ولا يمكن إدخال الجزء 3 الصحيح في الأسئلة الصعبة.

قوية (مختلطة + واسعة + إعادة تصنيف + استعلام متعدد إذا لزم الأمر):

المرشحين = hybrid_search(rewrite(question, Past), k=20)context = reranker.score(question, المرشحين).first(4)# يتم التقاط كل من المطابقة التامة والمعنى؛ يذهب إلى أفضل 4 نماذج.

ثلاث حالات صغيرة

الحالة 1 - هروب رمز المنتج. لم يتمكن البحث الدلالي الخالص في فريق الدعم من العثور على "RTX-9080" حرفيًا في السؤال "خطأ في برنامج تشغيل RTX-9080"؛ وكان يجلب منتجات أخرى بأسماء مماثلة. عند إضافة البحث المختلط، حدثت مطابقة دقيقة للتعليمات البرمجية وزاد معدل إرجاع المقالات الصحيحة من 58% إلى 92%.

الحالة 2 - إعادة ترتيب الفرق. كان أحد المساعدين القانونيين يعمل مع k=5 ولكن العنصر الصحيح هو 7-10 في معظم الأوقات. وكان يقيم في الرتب. عندما تم تقديم k=20 + إعادة التصنيف، زاد معدل وجود المقالة الصحيحة في أعلى 3 من 61% إلى 94%؛ زاد زمن الوصول بمقدار 300 مللي ثانية فقط - وهو حل وسط مقبول.

الحالة 3 - سؤال المتابعة بدون سياق. في مساعد الموارد البشرية، يسأل المستخدم "ماذا عن العاملين بدوام جزئي؟" عندما سألت، جلب النظام أجزاء غير ذات صلة. من خلال إعادة كتابة الاستعلام (سحب سياق "الإجازة السنوية" من الماضي وإضافة "يحق للموظفين بدوام جزئي الحصول على إجازة سنوية")، ارتفع معدل الإجابة الصحيحة من 40% إلى 86%.

الأخطاء الشائعة

  • الاعتماد فقط على البحث الدلالي: رمز المنتج، والاختصار، والاسم الصحيح مفقود؛ أضف الهجين.
  • إبقاء k صغيرًا جدًا: لا يمكن للقطعة الصحيحة أن تدخل القائمة؛ اجعلها واسعة وضيقها مع إعادة الترتيب.
  • لا تفكر مطلقًا في إعادة الترتيب: البحث الأول أمر فظ؛ يعمل التمرير الذكي الثاني على تحسين الجودة بشكل ملحوظ.
  • البحث عن أسئلة المتابعة كما هو: سؤال بلا سياق يبحث عن لا معنى له؛ أعد الكتابة.
  • زيادة k بشكل أعمى (بدون إعادة الترتيب): يمتلئ النموذج بالضوضاء، وتكون الاستجابة مشوهة وتزداد التكلفة.
احذر: كل أسلوب يضيف تكلفة وتأخيرًا. الاستعلام المتعدد يعني بحثًا ثلاثي الأبعاد، وإعادة التصنيف تعني استدعاء نموذج إضافي. ابدأ بالهجين البسيط + المعقول k أولاً؛ قم بقياس وإضافة التقنيات الثقيلة عند الحاجة حقًا. الجمع دون القياس.

باختصار

  • Top-k هو التوازن بين الاستدعاء والدقة؛ عموما 4-8 بداية جيدة.
  • يجمع البحث المختلط بين البحث الدلالي والبحث عن الكلمات الرئيسية (BM25)؛ يستعيد التطابقات الدقيقة.
  • تؤدي إعادة التصنيف إلى إعادة تسجيل المرشحين من البحث الأولي الواسع باستخدام نموذج قوي واختيار الأفضل منهم.
  • تحويل الاستعلام (إعادة الكتابة، الاستعلام المتعدد، HyDE) يجعل الأسئلة الصعبة والخالية من السياق قابلة للبحث.
  • النمط القوي: جلب واسع ← دمج مع مختلط ← ضيق مع إعادة الترتيب؛ لكن أضف كل تقنية عن طريق قياسها.

مهمة التطبيق

قم بإعداد 6 أسئلة صعبة باستخدام بيانات من الوحدات السابقة: سؤالان على الأقل يتطلبان مطابقات تامة (رمز المنتج، الاختصار، التاريخ)، سؤالان دلاليان (نفس الموضوع بكلمات مختلفة)، سؤالان للمتابعة بدون سياق. (1) فكر أولاً في كل سؤال باعتباره بحثًا دلاليًا خالصًا وقم يدويًا بتحديد الأجزاء التي ستظهر. (2) إعادة تقييم نفس الأسئلة مع إضافة الهجين وإعادة الترتيب. (3) أعد كتابة أسئلة المتابعة بدون سياق. لاحظ في شكل جدول التقنية التي تُحدث فرقًا في نوع السؤال.

قائمة مرجعية

  • [ ] أعلم أن top-k هو توازن دقة الاستدعاء ونطاق بداية معقول.
  • [ ] أستطيع أن أشرح لماذا يستعيد البحث المختلط المطابقات الدقيقة.
  • [ ] يمكنني تطبيق منطق إعادة الترتيب المكون من خطوتين (واسع → ضيق ذكي).
  • [ ] أدرك الحاجة إلى إعادة كتابة أسئلة المتابعة دون سياق.
  • [ ] أؤكد أنني أضفت تقنيات ثقيلة بالقياس وليس بالقياس.