الصلة في البحث عن المتجهات

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

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

تتضمن خوارزميات البحث عن المتجهات الجيران الشاملين (KNN) والعالم الصغير القابل للتنقل الهرمي (HNSW).

  • تقوم جامعة KNN بإجراء بحث القوة الغاشمة التي تفحص مساحة المتجه بأكملها.

  • يقوم HNSW بإجراء بحث تقريبي عن أقرب جار (ANN ).

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

متى تستخدم KNN الشاملة

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

حالة الاستخدام الثانية هي إنشاء مجموعة بيانات لتقييم أقرب استدعاء خوارزمية جارة تقريبية. يمكن استخدام أداة KNN الشاملة لبناء مجموعة الحقيقة الأساسية لأقرب الجيران.

يتوفر دعم KNN الشامل من خلال 2023-11-01 REST API و2023-10-01-Preview REST API وفي مكتبات عميل Azure SDK التي تستهدف إصدار REST API.

متى تستخدم HNSW

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

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

كيف يعمل أقرب بحث جار

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

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

عند فهرسة حقول المتجهات ل KNN الشاملة، يتم تنفيذ الاستعلام مقابل "جميع الجيران". بالنسبة للحقل المفهرسة ل HNSW، يستخدم محرك البحث رسما بيانيا ل HNSW للبحث عبر مجموعة فرعية من العقد داخل فهرس المتجه.

إنشاء الرسم البياني HNSW

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

  1. التهيئة: ابدأ برسم بياني فارغ HNSW أو الرسم البياني HNSW الحالي إذا لم يكن فهرسا جديدا.

  2. نقطة الإدخال: هذا هو المستوى الأعلى للرسم البياني الهرمي ويعمل كنقطة بداية للفهرسة.

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

    • يتم توصيل كل عقدة بالجيران m القريبين. هذه هي المعلمة m .

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

    • تستخدم هذه الاتصالات التشابه metric المكون لتحديد المسافة. بعض الاتصالات هي اتصالات "بعيدة المسافات" تتصل عبر مستويات هرمية مختلفة، ما يؤدي إلى إنشاء اختصارات في الرسم البياني تعزز كفاءة البحث.

  4. اقتطاع الرسم البياني وتحسينه: يمكن أن يحدث هذا بعد فهرسة جميع الخطوط المتجهة، ويحسن التنقل والكفاءة في الرسم البياني HNSW.

يتنقل استعلام المتجهات في بنية الرسم البياني الهرمي للفحص بحثا عن التطابقات. فيما يلي تلخيص الخطوات في العملية:

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

  2. الاجتياز: بعد ذلك، فإنه يجتاز مستوى الرسم البياني حسب المستوى، والانتقال من المستوى الأعلى إلى المستويات الأدنى، وتحديد العقد المرشحة الأقرب إلى متجه الاستعلام استنادا إلى مقياس المسافة المكونة، مثل تشابه جيب التمام.

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

  4. التحسين: مع انتقال الخوارزمية إلى مستويات أقل وأكثر دقة، يعتبر HNSW المزيد من الجيران بالقرب من الاستعلام، ما يسمح بتحسين مجموعة المرشحين من المتجهات، مما يحسن الدقة.

  5. الإكمال: يكتمل البحث عند تحديد العدد المطلوب من أقرب الجيران، أو عند استيفاء معايير الإيقاف الأخرى. يخضع هذا العدد المطلوب من أقرب الجيران إلى معلمة kوقت الاستعلام .

مقاييس التشابه المستخدمة لقياس القرب

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

مقياس ‏‏الوصف
cosine يقيس هذا المقياس الزاوية بين خطين متجهين، ولا يتأثر بإطوال متجهات مختلفة. رياضيا، فإنه يحسب الزاوية بين خطين متجهين. Cosine هو مقياس التشابه المستخدم من قبل نماذج تضمين Azure OpenAI، لذلك إذا كنت تستخدم Azure OpenAI، فحدد cosine في تكوين المتجه.
dotProduct يقيس هذا المقياس طول كل زوج من متجهين، والزاوية بينهما. رياضيا، فإنه يحسب منتجات المقدار المتجهات والزاوية بينهما. بالنسبة للخطوط المتجهة التي تمت تسويتها، يكون هذا مماثلا للتشابه cosine ، ولكنه أكثر أداء قليلا.
euclidean (المعروف أيضا باسم l2 norm) يقيس هذا المقياس طول الفرق بين المتجهين. رياضيا، فإنه يحسب المسافة الإقليدية بين خطين متجهين، وهو معيار l2 للفرق بين الخطين المتجهين.

الدرجات في نتائج بحث متجه

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

طريقة البحث المعلمة‬ مقياس تسجيل النقاط النطاق
البحث في المتجهات @search.score جيب التمام 0.333 - 1.00

بالنسبة للمقياسcosine ، من المهم ملاحظة أن القيمة المحسوبة @search.score ليست قيمة جيب التمام بين متجه الاستعلام ومتجهات المستند. بدلا من ذلك، يطبق Azure الذكاء الاصطناعي Search تحويلات بحيث تتناقص دالة النتيجة بشكل رتيب، ما يعني أن قيم النقاط ستنخفض دائما في القيمة كلما أصبح التشابه أسوأ. يضمن هذا التحويل أن نتائج البحث قابلة للاستخدام لأغراض تحديد المرتبة.

هناك بعض الفروق الدقيقة مع درجات التشابه:

  • يعرف التشابه التمامي على أنه جيب التمام للزاوية بين خطين متجهين.
  • يتم تعريف مسافة جيب التمام على أنها 1 - cosine_similarity.

لإنشاء دالة متناقصة بشكل رتيبة، @search.score يتم تعريف على أنها 1 / (1 + cosine_distance).

يمكن للمطورين الذين يحتاجون إلى قيمة جيب التمام بدلا من القيمة الاصطناعية استخدام صيغة لتحويل درجة البحث مرة أخرى إلى مسافة جيب التمام:

double ScoreToSimilarity(double score)
{
    double cosineDistance = (1 - score) / score;
    return  -cosineDistance + 1;
}

يمكن أن يكون وجود قيمة التمام الأصلية مفيدا في الحلول المخصصة التي تقوم بإعداد عتبات لاقتطاع نتائج نتائج ذات جودة منخفضة.

تلميحات لضبط الصلة

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

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

  • بالنسبة إلى HNSW، جرب مستويات efConstruction مختلفة لتغيير التكوين الداخلي للرسم البياني للتقارب. الافتراضي هو 400. النطاق من 100 إلى 1000.

  • قم بزيادة k النتائج لتغذية المزيد من نتائج البحث في نموذج دردشة، إذا كنت تستخدم واحدا.

  • جرب الاستعلامات المختلطة ذات الترتيب الدلالي. في الاختبار المعياري، أسفرت هذه المجموعة باستمرار عن النتائج الأكثر صلة.

الخطوات التالية