إسقاطات الفهرس في Azure الذكاء الاصطناعي Search

هام

توجد إسقاطات الفهرس في المعاينة العامة بموجب شروط الاستخدام التكميلية. وهي متوفرة من خلال مدخل Microsoft Azure، 2023-10-01-Preview REST APIs، ومدخل Azure، ومكتبات عميل بيتا التي تم تحديثها لتضمين الميزة.

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

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

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

تعريف إسقاطات الفهرس

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

  • targetIndexName: اسم الفهرس على خدمة البحث التي يحتوي عليها فهرس بيانات إسقاط الفهرس.
  • parentKeyFieldName: اسم الحقل في الفهرس الهدف الذي يحتوي على قيمة المفتاح للمستند الأصل.
  • sourceContext: التعليق التوضيحي للإثراء الذي يحدد الدقة التي يتم بها تعيين البيانات إلى مستندات بحث فردية. لمزيد من المعلومات، راجع سياق المهارة ولغة التعليق التوضيحي للإدخل.
  • mappings: صفيف من تعيينات البيانات التي تم إثراؤها إلى الحقول في فهرس البحث. يتكون كل تعيين من:
    • name: اسم الحقل في فهرس البحث الذي يجب فهرسة البيانات فيه،
    • source: مسار التعليق التوضيحي للإثراء الذي يجب سحب البيانات منه.

يمكن لكل mapping منها أيضا تعريف البيانات بشكل متكرر باستخدام حقل اختياري sourceContext وحقل inputs ، على غرار مخزن المعرفة أو Shaper Skill. تسمح لك هذه المعلمات بتشكيل البيانات ليتم فهرستها في حقول من النوع Edm.ComplexType في فهرس البحث.

الفهرس المحدد في المعلمة targetIndexName له المتطلبات التالية:

  • يجب أن يكون قد تم إنشاؤه بالفعل على خدمة البحث قبل إنشاء مجموعة المهارات التي تحتوي على تعريف إسقاطات الفهرس.
  • يجب أن يحتوي على حقل بالاسم المحدد في المعلمة parentKeyFieldName . يجب أن يكون هذا الحقل من النوع Edm.String، ولا يمكن أن يكون حقل المفتاح، ويجب أن يكون له تعيين قابل للتصفية إلى صحيح.
  • يجب أن يكون لحقل المفتاح تعيين قابل للبحث إلى صحيح وأن يتم تعريفه باستخدام keyword المحلل.
  • يجب أن تحتوي على حقول محددة nameلكل من الحقول المعرفة في mappings، ولا يمكن أن يكون أي منها هو حقل المفتاح.

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

"indexProjections": {
    "selectors": [
        {
            "targetIndexName": "myTargetIndex",
            "parentKeyFieldName": "ParentKey",
            "sourceContext": "/document/pages/*",
            "mappings": [
                {
                    "name": "chunk",
                    "source": "/document/pages/*"
                }
            ]
        }
    ]
}

معالجة المستندات الأصلية

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

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

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

  • لتجاهل المستندات الأصلية وفهرسة المستندات التابعة فقط، لا تزال بحاجة إلى توفير targetIndexName في تعريف المفهرس (يمكنك فقط توفير نفس التعريف الذي تقوم به لمحدد عرض الفهرس). ثم قم بتعريف كائن منفصل parameters بجوار التعريف الخاص بك selectors مع projectionMode تعيين مفتاح إلى skipIndexingParentDocuments، كما هو موضح هنا:

    "indexProjections": {
        "selectors": [
            ...
        ],
        "parameters": {
            "projectionMode": "skipIndexingParentDocuments"
        }
    }
    

يمكن استخدام إصدار 2023-10-01-Preview واجهة برمجة تطبيقات REST لإنشاء إسقاطات الفهرس من خلال الإضافات إلى مجموعة المهارات.

دورة حياة المحتوى

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

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

إشعار

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

قيمة المفتاح المتوقعة

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

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

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

التغييرات أو الإضافات

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

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

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

عمليات الحذف

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

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