تكوين متجه في فهرس بحث

هام

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

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

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

لإضافة متجه إلى فهرس البحث، يمكنك استخدام مصمم الفهرس في مدخل Microsoft Azure، أو استدعاء Create أو Update Index 2023-10-01-preview REST API، أو استخدام أي حزمة Azure beta SDK تم تحديثها لتوفير هذه الميزة.

المتطلبات الأساسية

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

  • نموذج تضمين منشور، مثل text-embedding-ada-002 على Azure OpenAI. يتم استخدامه لتح متجه استعلام. يجب أن يكون مطابقا للنموذج المستخدم لإنشاء التضمينات في الفهرس الخاص بك.

  • أذونات لاستخدام نموذج التضمين. إذا كنت تستخدم Azure OpenAI، يجب أن يكون لدى المتصل أذونات مستخدم OpenAI للخدمات المعرفية. أو يمكنك توفير مفتاح API.

  • Visual Studio Code مع عميل REST لإرسال الاستعلام وقبول استجابة.

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

تجربة ناقل مع عينة من البيانات

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

  1. تحميل ملفات بيانات نموذجية إلى حاوية على Azure Storage. استخدمنا بعض الملفات النصية الصغيرة من كتاب الأرض لوكالة ناسا لاختبار هذه التعليمات على خدمة بحث مجانية.

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

    لقطة شاشة لصفحة الاتصال بالبيانات.

  3. اختر توزيعا موجودا ل text-embedding-ada-002. ينشئ هذا النموذج عمليات تضمين أثناء الفهرسة ويستخدم أيضا لتكوين المتجه المستخدم أثناء الاستعلامات.

    لقطة شاشة لصفحة البيانات المتجهة والمثرية.

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

     {
         "name": "vector",
         "type": "Collection(Edm.Single)",
         "searchable": true,
         "retrievable": true,
         "dimensions": 1536,
         "vectorSearchProfile": "vector-nasa-ebook-text-profile"
     }
    
  5. يجب أن يكون لديك أيضا ملف تعريف متجه ومتجه، مشابه للمثال التالي:

    "profiles": [
       {
         "name": "vector-nasa-ebook-text-profile",
         "algorithm": "vector-nasa-ebook-text-algorithm",
         "vectorizer": "vector-nasa-ebook-text-vectorizer"
       }
     ],
     "vectorizers": [
       {
         "name": "vector-nasa-ebook-text-vectorizer",
         "kind": "azureOpenAI",
         "azureOpenAIParameters": {
           "resourceUri": "https://my-fake-azure-openai-resource.openai.azure.com",
           "deploymentId": "text-embedding-ada-002",
           "apiKey": "0000000000000000000000000000000000000",
           "authIdentity": null
         },
         "customWebApiParameters": null
       }
     ]
    
  6. انتقل إلى الأمام لاختبار المتجه لتحويل النص إلى متجه أثناء تنفيذ الاستعلام.

تعريف متجه وملف تعريف متجه

يشرح هذا القسم التعديلات على مخطط فهرس لتعريف المتجه يدويا.

  1. استخدم إنشاء فهرس أو تحديثه (معاينة) لإضافته vectorizers إلى فهرس بحث.

  2. أضف JSON التالي إلى تعريف الفهرس الخاص بك. يوفر قسم vectorizers معلومات الاتصال بنموذج تضمين منشور. تعرض هذه الخطوة مثالين على المتجه بحيث يمكنك مقارنة نموذج تضمين Azure OpenAI وواجهة برمجة تطبيقات ويب مخصصة جنبا إلى جنب.

      "vectorizers": [
        {
          "name": "my_azure_open_ai_vectorizer",
          "kind": "azureOpenAI",
          "azureOpenAIParameters": {
            "resourceUri": "https://url.openai.azure.com",
            "deploymentId": "text-embedding-ada-002",
            "apiKey": "mytopsecretkey"
          }
        },
        {
          "name": "my_custom_vectorizer",
          "kind": "customWebApi",
          "customVectorizerParameters": {
            "uri": "https://my-endpoint",
            "authResourceId": " ",
            "authIdentity": " "
          }
        }
      ]
    
  3. في نفس الفهرس، أضف قسم ملفات تعريف المتجهات الذي يحدد أحد المتجهات الخاصة بك. تتطلب ملفات تعريف المتجهات أيضا خوارزمية بحث متجه تستخدم لإنشاء بنيات التنقل.

    "profiles": [ 
        { 
            "name": "my_vector_profile", 
            "algorithm": "my_hnsw_algorithm", 
            "vectorizer":"my_azure_open_ai_vectorizer" 
        }
    ]
    
  4. تعيين ملف تعريف متجه إلى حقل متجه. يوضح المثال التالي مجموعة حقول مع حقل المفتاح المطلوب وحقل سلسلة عنوان وحقلين متجهين مع تعيين ملف تعريف متجه.

    "fields": [ 
            { 
                "name": "ID", 
                "type": "Edm.String", 
                "key": true, 
                "sortable": true, 
                "analyzer": "keyword" 
            }, 
            { 
                "name": "title", 
                "type": "Edm.String"
            }, 
            { 
                "name": "vector", 
                "type": "Collection(Edm.Single)", 
                "dimensions": 1536, 
                "vectorSearchProfile": "my_vector_profile", 
                "searchable": true, 
                "retrievable": true
            }, 
            { 
                "name": "my-second-vector", 
                "type": "Collection(Edm.Single)", 
                "dimensions": 1024, 
                "vectorSearchProfile": "my_vector_profile", 
                "searchable": true, 
                "retrievable": true
            }
    ]
    

اختبار متجه

استخدم عميل بحث لإرسال استعلام من خلال متجه. يفترض هذا المثال Visual Studio Code مع عميل REST ونموذج الفهرس.

  1. في Visual Studio Code، قم بتوفير نقطة نهاية بحث ومفتاح API لاستعلام البحث:

     @baseUrl: 
     @queryApiKey: 00000000000000000000000
    
  2. الصق في طلب استعلام متجه. تأكد من استخدام إصدار واجهة برمجة تطبيقات REST للمعاينة.

     ### Run a query
     POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2023-10-01-preview  HTTP/1.1
         Content-Type: application/json
         api-key: {{queryApiKey}}
    
         {
             "count": true,
             "select": "title,chunk",
             "vectorQueries": [
                 {
                     "kind": "text",
                     "text": "what cloud formations exists in the troposphere",
                     "fields": "vector",
                     "k": 3,
                     "exhaustive": true
                 }
             ]
         }
    

    تتضمن النقاط الرئيسية حول الاستعلام ما يلي:

    • "kind": "text" يخبر محرك البحث أن الإدخال عبارة عن سلسلة نصية، واستخدام المتجه المقترن بالحقل البحث.

    • "text": "what cloud formations exists in the troposphere" هي السلسلة النصية التي يجب تحويلها.

    • "fields": "vector" هو اسم الحقل للاستعلام. إذا كنت تستخدم فهرس العينة الذي ينتجه المعالج، فإن حقل المتجه الذي تم إنشاؤه يسمى vector.

  3. أرسل الطلب. يجب أن تحصل على ثلاث k نتائج، حيث تكون النتيجة الأولى هي الأكثر صلة.

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

التحقق من السجلات

إذا قمت بتمكين التسجيل التشخيصي لخدمة البحث، فقم بتشغيل استعلام Kusto لتأكيد تنفيذ الاستعلام على حقل المتجه:

OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"

أفضل الممارسات

إذا كنت تقوم بإعداد ناقل Azure OpenAI، ففكر في أفضل الممارسات نفسها التي نوصي بها لمهارة تضمين Azure OpenAI.

(راجع أيضًا )