الصلة في البحث عن الكلمات الأساسية (تسجيل BM25)

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

يوفر Azure الذكاء الاصطناعي Search خوارزميات التسجيل التالية للبحث عن النص الكامل:

خوارزمية الاستخدام النطاق
BM25Similarity خوارزمية ثابتة على جميع خدمات البحث التي تم إنشاؤها بعد يوليو 2020. يمكنك تكوين هذه الخوارزمية، ولكن لا يمكنك التبديل إلى خوارزمية قديمة (كلاسيكية). غير محدود.
ClassicSimilarity التقديم على خدمات البحث القديمة. يمكنك الاشتراك في BM25 واختيار خوارزمية على أساس كل فهرس. 0 < 1.00

كل من BM25 و Classic هي دالات استرداد تشبه TF-IDF تستخدم مصطلح frequency (TF) وتردد المستند العكسي (IDF) كمتغيرات لحساب درجات الصلة لكل زوج من استعلام المستندات، والذي يستخدم بعد ذلك لترتيب النتائج. على الرغم من أن BM25 يشبه من الناحية المفاهيمية الكلاسيكية، إلا أنه متجذر في استرداد المعلومات الاحتمالية التي تنتج تطابقات أكثر بديهية، كما يتم قياسها بواسطة أبحاث المستخدم.

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

إشعار

إذا كنت تستخدم خدمة بحث تم إنشاؤها قبل يوليو 2020، فمن المرجح أن تكون خوارزمية التسجيل هي الافتراضية السابقة، ClassicSimilarityوالتي يمكنك ترقيتها على أساس كل فهرس. راجع تمكين تسجيل BM25 على الخدمات القديمة للحصول على التفاصيل.

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

كيفية عمل تصنيف BM25

يشير تسجيل الصلة إلى حساب درجة البحث (@search.score) التي تعمل كمؤشر لمدى صلة العنصر في سياق الاستعلام الحالي. النطاق غير مقيد. ومع ذلك، كلما ارتفعت النتيجة، زادت صلة العنصر.

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

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

لكسر التعادل بين الدرجات المتكررة، يمكنك إضافة عبارة $orderby إلى الترتيب الأول حسب الدرجة، ثم الترتيب حسب حقل آخر قابل للفرز (على سبيل المثال، $orderby=search.score() desc,Rating desc). لمزيد من المعلومات، راجع $orderby.

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

إشعار

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

النتائج في نتائج النص

كلما تم ترتيب النتائج، @search.score تحتوي الخاصية على القيمة المستخدمة لترتيب النتائج.

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

طريقة البحث المعلمة‬ خوارزمية تسجيل النقاط النطاق
البحث عن النص الكامل @search.score خوارزمية BM25، باستخدام المعلمات المحددة في الفهرس. غير محدود.

تباين النتيجة

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

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

تأثيرات التقسيم على نتائج الاستعلام

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

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

  • حالات الإكمال التلقائي الخارجة عن المألوف: تقبل استعلامات الإكمال التلقائي، حيث يتم إجراء التطابقات على الأحرف العديدة الأولى من المصطلح الذي تم إدخاله جزئيا، معلمة غامضة تغفر الانحرافات الصغيرة في التدقيق الإملائي. بالنسبة للإكمال التلقائي، يتم تقييد المطابقة الغامضة بالمصطلحات داخل الجزء الحالي. على سبيل المثال، إذا احتوى جزء على "Microsoft" وتم إدخال مصطلح جزئي من "micro"، فسيتطابق محرك البحث على "Microsoft" في هذا الجزء، ولكن ليس في الأجزاء الأخرى التي تحتوي على الأجزاء المتبقية من الفهرس.

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

يتم تقسيم فهارس البحث عبر الأقسام.

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

إشعار

يقسم عدد النسخ المتماثلة والأقسام بالتساوي إلى 12 (على وجه التحديد، 1، 2، 3، 4، 6، 12). يقسم Azure الذكاء الاصطناعي Search كل فهرس مسبقا إلى 12 قطعة بحيث يمكن توزيعه في أجزاء متساوية عبر جميع الأقسام. على سبيل المثال، إذا كانت خدمتك تحتوي على ثلاثة أقسام وقمت بإنشاء فهرس، فسيحتوي كل قسم على أربعة أجزاء من الفهرس. كيفية تقسيم Azure الذكاء الاصطناعي Search للفهرس هو تفاصيل التنفيذ، عرضة للتغيير في الإصدارات المستقبلية. على الرغم من أن العدد هو 12 اليوم، يجب ألا تتوقع أن يكون هذا الرقم دائما 12 في المستقبل.

إحصائيات التسجيل والجلسات الملصقة

لقابلية التوسع، يقوم Azure الذكاء الاصطناعي Search بتوزيع كل فهرس أفقيا من خلال عملية التقسيم، ما يعني أن أجزاء من الفهرس منفصلة فعليا.

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

إذا كنت تفضل حساب النتيجة استنادا إلى الخصائص الإحصائية عبر جميع الأجزاء، يمكنك القيام بذلك عن طريق إضافة scoringStatistics=global كمعلمةاستعلام (أو إضافة "scoringStatistics": "global" كمعلمة نص لطلب الاستعلام).

POST https://[service name].search.windows.net/indexes/hotels/docs/search?api-version=2020-06-30
{
    "search": "<query string>",
    "scoringStatistics": "global"
}

سيضمن استخدام scoringStatistics أن جميع الأجزاء في نفس النسخة المتماثلة توفر نفس النتائج. ومع ذلك، قد تختلف النسخ المتماثلة المختلفة قليلا عن بعضها البعض حيث يتم تحديثها دائما بأحدث التغييرات على الفهرس الخاص بك. في بعض السيناريوهات، قد ترغب في أن يحصل المستخدمون على نتائج أكثر اتساقا أثناء "جلسة الاستعلام". في مثل هذه السيناريوهات، يمكنك توفير sessionId كجزء من استعلاماتك. sessionId هي سلسلة فريدة تقوم بإنشائها للإشارة إلى جلسة عمل مستخدم فريدة.

POST https://[service name].search.windows.net/indexes/hotels/docs/search?api-version=2020-06-30
{
    "search": "<query string>",
    "sessionId": "<string>"
}

طالما يتم استخدام نفس الشيء sessionId ، يتم بذل أفضل محاولة لاستهداف نفس النسخة المتماثلة، ما يزيد من تناسق النتائج التي سيرىها المستخدمون.

إشعار

يمكن أن تتداخل إعادة استخدام نفس sessionId القيم بشكل متكرر مع موازنة تحميل الطلبات عبر النسخ المتماثلة وتؤثر سلبا على أداء خدمة البحث. لا يمكن أن تبدأ القيمة المستخدمة كمعرف جلسة العمل بحرف '_'.

ضبط الصلة

في Azure الذكاء الاصطناعي Search، يمكنك تكوين معلمات خوارزمية BM25، وضبط صلة البحث وتعزيز درجات البحث من خلال هذه الآليات:

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

معلمة featuresMode (معاينة)

تحتوي طلبات "مستندات البحث" على معلمة ميزات جديدةMode يمكنها توفير مزيد من التفاصيل حول الصلة على مستوى الحقل. @searchScore في حين يتم حساب للمستند بالكامل (مدى أهمية هذا المستند في سياق هذا الاستعلام)، من خلال featuresMode، يمكنك الحصول على معلومات حول الحقول الفردية، كما هو معبر عنه في @search.features بنية. تحتوي البنية على كافة الحقول المستخدمة في الاستعلام (إما حقول معينة من خلال searchFields في استعلام، أو كافة الحقول المنسوبة على أنها قابلة للبحث في فهرس). لكل حقل، تحصل على القيم التالية:

  • عدد الرموز المميزة الفريدة الموجودة في الحقل
  • درجة التشابه، أو مقياس مدى تشابه محتوى الحقل، بالنسبة لمصطلح الاستعلام
  • تكرار المصطلح، أو عدد المرات التي تم فيها العثور على مصطلح الاستعلام في الحقل

بالنسبة للاستعلام الذي يستهدف حقلي "الوصف" و"العنوان"، قد تبدو الاستجابة التي تتضمن @search.features مثل هذا:

"value": [
 {
    "@search.score": 5.1958685,
    "@search.features": {
        "description": {
            "uniqueTokenMatches": 1.0,
            "similarityScore": 0.29541412,
            "termFrequency" : 2
        },
        "title": {
            "uniqueTokenMatches": 3.0,
            "similarityScore": 1.75451557,
            "termFrequency" : 6
        }
    }
 }
]

يمكنك استهلاك نقاط البيانات هذه في حلول تسجيل النقاط المخصصة أو استخدام المعلومات لتصحيح مشكلات صلة البحث.

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

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

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

(راجع أيضًا )