التشابه والتسجيل في البحث المعرفي في Azure

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

ملاحظة

هناك خوارزمية ثالثة لإعادة الترتيب الدلالي قيد المعاينة العامة حاليا. لمزيد من المعلومات، ابدأ بنظرة عامة على البحث الدلالي.

خوارزميات ترتيب التشابه

يدعم Azure Cognitive Search اثنين من خوارزميات ترتيب التشابه.

⁧⁩الخوارزمية⁧⁩ الدرجة التوفر
BM25التشابه @search.score تستخدم من قبل جميع خدمات البحث التي تم إنشاؤها بعد 15 يوليو 2020.
كلاسيكيتشابه @search.score تستخدم من قبل جميع خدمات البحث التي تم إنشاؤها من مارس 2014 حتى 15 يوليو 2020. يمكن للخدمات القديمة التي تستخدم الكلاسيكية بشكل افتراضي الاشتراك في BM25.

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

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

تسجيل نقاط الملاءمة

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

بشكل افتراضي، يتم إرجاع أفضل 50 عنصرا في الاستجابة، ولكن يمكنك استخدام المعلمة $top لإرجاع عدد أصغر أو أكبر من العناصر (حتى 1000 عنصر في استجابة واحدة)، $skip للحصول على المجموعة التالية من النتائج.

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

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

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

ملاحظة

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

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

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

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

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

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

سيضمن استخدام sscoreingStatistics أن جميع الشظايا الموجودة في نفس النسخة المتماثلة توفر نفس النتائج. ومع ذلك ، قد تختلف النسخ المتماثلة المختلفة قليلا عن بعضها البعض حيث يتم تحديثها دائما بأحدث التغييرات في فهرسك. في بعض وحدات السيناريو، قد ترغب في حصول المستخدمين على نتائج أكثر اتساقا أثناء "جلسة استعلام". في مثل هذه السيناريوهات، يمكنك توفير 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 بشكل متكرر مع موازنة تحميل الطلبات عبر النسخ المتماثلة وتؤثر سلبا على أداء خدمة البحث. لا يمكن أن تبدأ القيمة المستخدمة كsessionId بحرف '_'.

ملفات تعريف تسجيل النقاط

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

ملف تعريف التسجيل هو جزء من تعريف الفهرس ، ويتكون من الحقول المرجحة والوظائف والمعلمات. لمزيد من المعلومات حول تعريف أحدها، راجع ملفات تعريف تسجيل النقاط.

الميزاتمعلمة الوضع (معاينة)

تحتوي طلبات مستندات البحث على ميزات جديدةمعلمة 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
        }

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

راجع أيضًا