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

indexer stages

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

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

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

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

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

تلميح

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

إضافة تعريف مجموعة المهارات

ابدأ بالبنية الأساسية. في Create Skillset REST API، يتم تأليف نص الطلب في JSON ويحتوي على الأقسام التالية:

{
   "name":"skillset-template",
   "description":"A description makes the skillset self-documenting (comments aren't allowed in JSON itself)",
   "skills":[
       
   ],
   "cognitiveServices":{
      "@odata.type":"#Microsoft.Azure.Search.CognitiveServicesByKey",
      "description":"An Azure AI services resource in the same region as Azure AI Search",
      "key":"<Your-Cognitive-Services-Multiservice-Key>"
   },
   "knowledgeStore":{
      "storageConnectionString":"<Your-Azure-Storage-Connection-String>",
      "projections":[
         {
            "tables":[ ],
            "objects":[ ],
            "files":[ ]
         }
      ]
    },
    "encryptionKey":{ }
}

بعد الاسم والوصف، تحتوي مجموعة المهارات على أربع خصائص رئيسية:

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

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

  • knowledgeStore (اختياري) يحدد حساب Azure Storage وإعدادات لعرض إخراج مجموعة المهارات في الجداول والكائنات الثنائية كبيرة الحجم والملفات في Azure Storage. قم بإزالة هذا القسم إذا لم تكن بحاجة إليه، وإلا حدد مخزن معارف.

  • encryptionKey(اختياري) يحدد Azure Key Vault والمفاتيح التي يديرها العميل المستخدمة لتشفير المحتوى الحساس (الأوصاف سلسلة الاتصال والمفاتيح) في تعريف مجموعة المهارات. قم بإزالة هذه الخاصية إذا كنت لا تستخدم التشفير الذي يديره العميل.

إضافة مهارات

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

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

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

"skills": [
    {
        "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
        "name": "#1",
        "description": "This skill detects organizations in the source content",
        "context": "/document",
        "categories": [
            "Organization"
        ],
        "inputs": [
            {
                "name": "text",
                "source": "/document/content"
            }
        ],
        "outputs": [
            {
                "name": "organizations",
                "targetName": "orgs"
            }
        ]
    },
    {
        "name": "#2",
        "description": "This skill detects corporate logos in the source files",
        "@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
        "context": "/document/normalized_images/*",
        "visualFeatures": [
            "brands"
        ],
        "inputs": [
            {
                "name": "image",
                "source": "/document/normalized_images/*"
            }
        ],
        "outputs": [
            {
                "name": "brands"
            }
        ]
    }
]

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

إشعار

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

تعيين سياق المهارة

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

"skills":[
  {
    "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
    "context": "/document",
    "inputs": [],
    "outputs": []
  },
  {
      "@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
      "context": "/document/normalized_images/*",
      "visualFeatures": [],
      "inputs": [],
      "outputs": []
  }
]

عادة ما يتم تعيين السياق إلى أحد الأمثلة التالية:

مثال السياق ‏‏الوصف
"السياق": "/document" (افتراضي) المدخلات والمخرجات على مستوى المستند.
"السياق": "/document/pages/*" تؤدي بعض المهارات مثل تحليل المشاعر أداء أفضل على أجزاء أصغر من النص. إذا كنت تقوم بتقسيم حقل محتوى كبير إلى صفحات أو جمل، فيجب أن يكون السياق فوق كل جزء مكون.
"السياق": "/document/normalized_images/*" بالنسبة لمحتوى الصورة، تكون المدخلات والمخرجات واحدة لكل صورة في المستند الأصل.

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

تعريف المدخلات

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

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

"inputs": [
    {
        "name": "text", 
        "source": "/document/content"
    },
    {
        "name": "languageCode", 
        "source": "/document/language"
    }
]
  • يمكن أن يكون للمهارات مدخلات متعددة. "الاسم" هو الإدخال المحدد. بالنسبة إلى "التعرف على الكيان"، الإدخالات المحددة هي "نص" و"languageCode".

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

    مثال المصدر ‏‏الوصف
    "المصدر": "/مستند" بالنسبة لمجموعة بيانات جدولية، يتوافق المستند مع صف.
    "المصدر": "/document/content" بالنسبة للكائنات الثنائية كبيرة الحجم، يكون المصدر عادة خاصية محتوى الكائن الثنائي كبير الحجم.
    "المصدر": "/document/some-named-field" بالنسبة للمهارات المستندة إلى النص، مثل التعرف على الكيان أو استخراج العبارة الرئيسية، يجب أن يكون الأصل حقلا يحتوي على نص كاف لتحليله، مثل "الوصف" أو "الملخص".
    "المصدر": "/document/normalized_images/*" بالنسبة لمحتوى الصورة، المصدر هو الصورة التي تمت تسويتها أثناء تكسير المستند.

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

تعريف المخرجات

تم تصميم كل مهارة لإصدار أنواع معينة من الإخراج، والتي يشار إليها بالاسم في مجموعة المهارات. يحتوي إخراج المهارة على "اسم" و"targetName" اختياري.

تصف الوثائق المرجعية للمهارة لكل مهارة المخرجات التي يمكن أن تنتجها. المثال التالي من مهارة التعرف على الكيان:

"outputs": [
    {
        "name": "persons", 
        "targetName": "people"
    },
    {
        "name": "organizations", 
        "targetName": "orgs"
    },
    {
        "name": "locations", 
        "targetName": "places"
    }
]
  • يمكن أن يكون للمهارات مخرجات متعددة. يعرف "الاسم" إخراجا معينا. على سبيل المثال، بالنسبة إلى "التعرف على الكيان"، يمكن أن يكون الإخراج "أشخاصا" و"مواقع" و"مؤسسات" وغيرها.

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

تستدعي بعض الحالات الرجوع إلى كل عنصر من عناصر الصفيف بشكل منفصل. على سبيل المثال، افترض أنك تريد تمرير كل عنصر بشكل "/document/orgs" منفصل إلى مهارة أخرى. للقيام بذلك، أضف علامة نجمية إلى المسار: "/document/orgs/*".

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

إضافة مهارة مخصصة

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

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

يتم إنشاء الإخراج، مثل وصف الشركة في هذا المثال، لكل مؤسسة تم تحديدها. عند الإشارة إلى العقدة في خطوة انتقال البيانات من الخادم (على سبيل المثال، في استخراج العبارة الرئيسية)، يمكنك استخدام المسار "/document/orgs/*/companyDescription" للقيام بذلك.

{
  "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
  "description": "This skill calls an Azure function, which in turn calls custom code",
  "uri": "https://indexer-e2e-webskill.azurewebsites.net/api/InvokeCode?code=foo",
  "httpHeaders": {
      "Ocp-Apim-Subscription-Key": "foobar"
  },
  "context": "/document/orgs/*",
  "inputs": [
    {
      "name": "query",
      "source": "/document/orgs/*"
    }
  ],
  "outputs": [
    {
      "name": "description",
      "targetName": "companyDescription"
    }
  ]
}

إرسال الإخراج إلى وجهة

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

  • لإرسال الإخراج إلى حقل في فهرس بحث، قم بإنشاء تعيين حقل إخراج في مفهرس.

  • لإرسال الإخراج إلى مخزن معارف، قم بإنشاء إسقاط.

  • لإرسال الإخراج إلى مهارة انتقال البيانات من الخادم، قم بالإشارة إلى الإخراج حسب اسم العقدة الخاصة به، مثل "/document/organization"، في خاصية مصدر إدخال مهارة انتقال البيانات من الخادم. راجع الإشارة إلى تعليق توضيحي للحصول على أمثلة.

تلميحات لمجموعة المهارات الأولى

  • جرب معالج استيراد البيانات.

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

    بعد تشغيل المعالج، يمكنك فتح كل كائن في مدخل Microsoft Azure لعرض تعريف JSON الخاص به.

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

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

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