تسجيل الصلة في البحث المختلط باستخدام Fusion Rank (RRF)

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

يستند RRF إلى مفهوم الترتيب المتبادل، وهو عكس مرتبة المستند الأول ذي الصلة في قائمة نتائج البحث. الهدف من هذه التقنية هو مراعاة موضع العناصر في التصنيفات الأصلية، وإعطاء أهمية أعلى للعناصر التي تم تصنيفها أعلى في قوائم متعددة. يمكن أن يساعد هذا في تحسين الجودة الشاملة والموثوقية للتصنيف النهائي، مما يجعله أكثر فائدة لمهمة دمج نتائج بحث متعددة مرتبة.

كيف يعمل ترتيب RRF

يعمل RRF من خلال أخذ نتائج البحث من أساليب متعددة، وتعيين درجة مرتبة متبادلة لكل مستند في النتائج، ثم الجمع بين الدرجات لإنشاء ترتيب جديد. المفهوم هو أن المستندات التي تظهر في المناصب العليا عبر طرق البحث المتعددة من المرجح أن تكون أكثر صلة ويجب تصنيفها أعلى في النتيجة المجمعة.

فيما يلي شرح بسيط لعملية RRF:

  1. الحصول على نتائج البحث المصنفة من استعلامات متعددة يتم تنفيذها بالتوازي.

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

  3. الجمع بين الدرجات. لكل مستند، يجمع المحرك درجات الرتبة المتبادلة التي تم الحصول عليها من كل نظام بحث، ما ينتج درجة مجمعة لكل مستند. 

  4. يصنف المحرك المستندات استنادا إلى الدرجات المجمعة ويفرزها. القائمة الناتجة هي الترتيب المدمج.

يتم استخدام الحقول التي تم وضع علامة عليها ك searchable في الفهرس أو searchFields في الاستعلام فقط لتسجيل النقاط. يتم إرجاع الحقول التي تم وضع علامة عليها ك retrievable، أو الحقول المحددة في select الاستعلام، فقط في نتائج البحث، إلى جانب نقاط البحث الخاصة بها.

تنفيذ الاستعلام المتوازي

يتم استخدام RRF في أي وقت يكون هناك أكثر من تنفيذ استعلام واحد. توضح الأمثلة التالية أنماط الاستعلام حيث يحدث تنفيذ الاستعلام المتوازي:

  • يساوي استعلام النص الكامل، بالإضافة إلى استعلام متجه واحد (سيناريو مختلط بسيط)، تنفيذي استعلام.
  • يساوي استعلام النص الكامل، بالإضافة إلى استعلام متجه واحد يستهدف حقلين متجهين، ثلاثة عمليات تنفيذ للاستعلام.
  • استعلام نص كامل، بالإضافة إلى استعلامين متجهين يستهدفان خمسة حقول متجهة، يساوي 11 عملية تنفيذ استعلام

الدرجات في نتائج بحث مختلطة

كلما تم ترتيب النتائج، @search.score تحتوي الخاصية على القيمة المستخدمة لترتيب النتائج. يتم إنشاء الدرجات بواسطة خوارزميات تحديد المرتبة التي تختلف لكل أسلوب. كل خوارزمية لها نطاقها وحجمها الخاص.

يحدد المخطط التالي خاصية تسجيل النقاط التي يتم إرجاعها في كل تطابق وخوارزمية ونطاق من الدرجات لكل خوارزمية تحديد مرتبة ذات صلة.

طريقة البحث المعلمة خوارزمية تسجيل النقاط النطاق
البحث عن النص الكامل @search.score خوارزمية BM25 لا يوجد حد أعلى.
البحث في المتجهات @search.score خوارزمية HNSW، باستخدام مقياس التشابه المحدد في تكوين HNSW. 0.333 - 1.00 (Cosine)، من 0 إلى 1 للإقليديين وDotProduct.
البحث المختلط @search.score خوارزمية RRF يحد الحد الأعلى من عدد الاستعلامات التي يتم دمجها، حيث يساهم كل استعلام بحد أقصى 1 تقريبا في درجة RRF. على سبيل المثال، سيؤدي دمج ثلاثة استعلامات إلى نتائج RRF أعلى مما لو تم دمج نتيجتي بحث فقط.
الترتيب الدلالي @search.rerankerScore الترتيب الدلالي 0.00 - 4.00

الترتيب الدلالي لا يشارك في RRF. يتم دائما الإبلاغ عن نقاطها (@search.rerankerScore) بشكل منفصل في استجابة الاستعلام. يمكن أن يعيد الترتيب الدلالي نسخ النص الكامل ونتائج البحث المختلط، بافتراض أن هذه النتائج تتضمن حقولا تحتوي على محتوى غني دلاليا.

عدد النتائج المصنفة في استجابة استعلام مختلط

بشكل افتراضي، إذا كنت لا تستخدم ترقيم الصفحات، يقوم محرك البحث بإرجاع أعلى 50 تطابق ترتيب للبحث في النص الكامل، والتطابقات الأكثر تشابها k للبحث في المتجهات. في استعلام مختلط، top يحدد عدد النتائج في الاستجابة. استنادا إلى الإعدادات الافتراضية، يتم إرجاع أفضل 50 تطابقا من أعلى 50 تطابقا مرتبة لمجموعة النتائج الموحدة.

غالبا ما يعثر محرك البحث على نتائج أكثر من top و k. لإرجاع المزيد من النتائج، استخدم معلمات topالترحيل و skipو.next الترحيل هو كيفية تحديد عدد النتائج على كل صفحة منطقية والتنقل عبر الحمولة الكاملة.

يخضع البحث الكامل في النص إلى حد أقصى يبلغ 1000 تطابق (راجع حدود استجابة واجهة برمجة التطبيقات). بمجرد العثور على 1000 تطابق، لم يعد محرك البحث يبحث عن المزيد.

لمزيد من المعلومات، راجع كيفية العمل مع نتائج البحث.

رسم تخطيطي لسير عمل تسجيل البحث

يوضح الرسم التخطيطي التالي استعلاما مختلطا يستدعي البحث عن الكلمة الأساسية والمتجه، مع تعزيز من خلال ملفات تعريف النقاط، والترتيب الدلالي.

Diagram of prefilters.

قد يبدو الاستعلام الذي ينشئ سير العمل السابق كما يلي:

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2023-11-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
   "queryType":"semantic",
   "search":"hello world",
   "searchFields":"field_a, field_b",
   "vectorQueries": [
       {
           "kind":"vector",
           "vector": [1.0, 2.0, 3.0],
           "fields": "field_c, field_d"
       },
       {
           "kind":"vector",
           "vector": [4.0, 5.0, 6.0],
           "fields": "field_d, field_e"
       }
   ],
   "scoringProfile":"my_scoring_profile"
}

(راجع أيضًا )