فهرسة مجموعات البيانات الكبيرة في Azure الذكاء الاصطناعي Search

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

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

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

نوصي باستخدام خدمة بحث أحدث، تم إنشاؤها بعد 3 أبريل 2024، لتخزين أعلى لكل قسم.

إشعار

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

فهرسة البيانات الكبيرة باستخدام واجهات برمجة تطبيقات الدفع

واجهات برمجة التطبيقات "Push"، مثل Documents Index REST API أو طريقة IndexDocuments (Azure SDK ل .NET) هي الشكل الأكثر شيوعا للفهرسة في Azure الذكاء الاصطناعي Search. بالنسبة للحلول التي تستخدم واجهة برمجة تطبيقات الدفع، سيكون لاستراتيجية الفهرسة طويلة الأمد أحد المكونات التالية أو كليهما:

  • إرسال المستندات في دفعات
  • إدارة مؤشرات الترابط

دفعة مستندات متعددة لكل طلب

آلية بسيطة لفهرسة كمية كبيرة من البيانات هي إرسال مستندات أو سجلات متعددة في طلب واحد. طالما أن الحمولة بأكملها أقل من 16 ميغابايت، يمكن للطلب معالجة ما يصل إلى 1000 مستند في عملية تحميل مجمع. تنطبق هذه الحدود سواء كنت تستخدم واجهة برمجة تطبيقات REST لفهرس المستندات أو أسلوب IndexDocuments في .NET SDK. لأي من واجهة برمجة التطبيقات، يمكنك حزم 1000 مستند في النص الأساسي لكل طلب.

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

  • مخطط الفهرس الخاص بك
  • حجم بياناتك

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

إضافة مؤشرات الترابط واستراتيجية إعادة المحاولة

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

  1. زيادة عدد مؤشرات الترابط المتزامنة في التعليمات البرمجية للعميل.

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

    • 503 الخدمة غير متوفرة - يعني هذا الخطأ أن النظام تحت تحميل كثيف ولا يمكن معالجة طلبك في هذا الوقت.

    • 207 متعددة الحالة - يعني هذا الخطأ نجاح بعض المستندات، ولكن فشل واحد على الأقل.

  3. لمعالجة حالات الفشل، يجب إعادة محاولة الطلبات باستخدام استراتيجية إعادة محاولة التراجع الأسي.

يقوم Azure .NET SDK تلقائيا بإعادة محاولة 503s والطلبات الفاشلة الأخرى، ولكن ستحتاج إلى تنفيذ المنطق الخاص بك لإعادة محاولة 207s. يمكن أيضاً استخدام أدوات مفتوحة المصدر مثل بولي لتنفيذ استراتيجية إعادة المحاولة.

الفهرسة مع المفهرسات وواجهات برمجة التطبيقات "السحب"

تحتوي المفهرسات على العديد من الإمكانات المفيدة للعمليات طويلة الأمد:

  • إرسال المستندات في دفعات
  • الفهرسة المتوازية عبر البيانات المقسمة
  • جدولة وتغيير الكشف عن الفهرسة الجديدة فقط وتغيير المستندات بمرور الوقت

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

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

التحقق من حجم دفعة المفهرس

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

أحجام الدفعات الافتراضية محددة لمصدر البيانات. تحتوي قاعدة بيانات Azure SQL وAzure Cosmos DB على حجم دفعة افتراضي يبلغ 1000. في المقابل، تعين فهرسة Azure Blob حجم الدفعة في 10 مستندات للتعرف على متوسط حجم المستند الأكبر.

جدولة المفهرسات للعمليات طويلة الأمد

جدولة المفهرس هي آلية مهمة لمعالجة مجموعات البيانات الكبيرة واستيعاب العمليات بطيئة التشغيل مثل تحليل الصور في مسار الإثراء.

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

{
    "dataSourceName" : "hotels-ds",
    "targetIndexName" : "hotels-idx",
    "schedule" : { "interval" : "PT2H", "startTime" : "2024-01-01T00:00:00Z" }
}

عندما لم تعد هناك أي مستندات جديدة أو محدثة في مصدر البيانات، ستقوم محفوظات تنفيذ المفهرس بالإبلاغ عن 0/0 المستندات التي تمت معالجتها، ولن تحدث أي معالجة.

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

إشعار

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

تشغيل المفهرسات بالتوازي

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

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

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

إذا كان مصدر البيانات الخاص بك عبارة عن حاوية Azure Blob Storage أو Azure Data Lake Storage Gen 2، فإن تعداد عدد كبير من الكائنات الثنائية كبيرة الحجم قد يستغرق وقتا طويلا (حتى ساعات) حتى تكتمل هذه العملية. سيؤدي هذا إلى عدم زيادة عدد مستندات المفهرس بنجاح خلال ذلك الوقت وقد يبدو أنه لا يحرز أي تقدم، عندما يكون كذلك. إذا كنت ترغب في أن تتم معالجة المستندات بشكل أسرع لعدد كبير من الكائنات الثنائية كبيرة الحجم، ففكر في تقسيم بياناتك إلى حاويات متعددة وإنشاء مفهرسات متوازية تشير إلى فهرس واحد.

  1. سجل الدخول إلى مدخل Microsoft Azure وتحقق من عدد وحدات البحث التي تستخدمها خدمة البحث. حدد الإعدادات> Scale لعرض الرقم في أعلى الصفحة. عدد المفهرسات التي سيتم تشغيلها بالتوازي يساوي تقريبا عدد وحدات البحث.

  2. تقسيم بيانات المصدر بين حاويات متعددة أو مجلدات ظاهرية متعددة داخل نفس الحاوية.

  3. إنشاء مصادر بيانات متعددة، واحدة لكل قسم، مقترنة بالمفهرس الخاص بها.

  4. حدد نفس فهرس البحث الهدف في كل مفهرس.

  5. جدولة المفهرسات.

  6. راجع حالة المفهرس وسجل التنفيذ للتأكيد.

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

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

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

فهرسة البيانات الضخمة على Spark

إذا كان لديك بنية بيانات كبيرة وبياناتك على مجموعة Spark، نوصي ب SynapseML لتحميل البيانات وفهرستها. يتضمن البرنامج التعليمي خطوات لاستدعاء خدمات Azure الذكاء الاصطناعي لإثراء الذكاء الاصطناعي، ولكن يمكنك أيضا استخدام AzureSearchWriter API للفهرسة النصية.

(راجع أيضًا )