Создание или обновление набора навыков (предварительная версия REST API)

Применимо к: 2023-07-01-Preview, 2021-04-30-Preview

Важно!

2023-07-01-Preview (без изменений).

В 2021-04-30-Preview добавлена поддержка управляемых удостоверений для подключений, связанных с набором навыков:

  • StorageConnectionString в хранилище знаний принимает идентификатор ресурса Azure для проверки подлинности Azure AD.
  • Identity принимает управляемое удостоверение, назначаемое пользователем. Это свойство находится в хранилище знаний. Он также находится в разделе encryptionKey для получения ключа, управляемого клиентом, в Azure Key Vault.

Эта предварительная версия API также поддерживает подключение к управляемому удостоверению из пользовательского навыка. Дополнительные сведения см . в справочнике по пользовательским веб-API .

Набор навыков — это набор когнитивных навыков , используемых для обогащения ИИ, с возможностью создания внешнего хранилища знаний в службе хранилища Azure. Навыки вызывают обработку естественного языка и другие процессы машинного обучения, такие как распознавание сущностей, извлечение ключевых фраз, разделение текста на логические страницы и т. д.

Набор навыков присоединяется к индексатору. Чтобы использовать набор навыков, создайте ссылку на него в индексаторе, а затем запустите индексатор для импорта данных, вызова обогащения и отправки выходных данных в индекс. Набор навыков — это ресурс высокого уровня, но он работает только при обработке индексатора. В качестве высокоуровневого ресурса на него можно ссылаться в нескольких индексаторах.

Для запроса на создание можно использовать POST или PUT. Для любого из них текст запроса предоставляет определение объекта.

POST https://[service name].search.windows.net/skillsets?api-version=[api-version]
    Content-Type: application/json  
    api-key: [admin key]  

Для запросов на обновление используйте PUT и укажите имя набора навыков в URI.

PUT https://[servicename].search.windows.net/skillsets/[skillset name]?api-version=[api-version]
  Content-Type: application/json  
  api-key: [admin key]  

Все запросы к службе отправляются по протоколу HTTPS.

Создание набора навыков добавляет его в службу поиска.

При обновлении набора навыков существующий набор навыков перезаписывается содержимым полезных данных запроса. Рекомендуется получить определение набора навыков с помощью GET, изменить его, а затем обновить с помощью PUT.

Примечание

Наборы навыков являются основой обогащения на основе ИИ. Бесплатный ресурс доступен для ограниченной обработки, но для больших или частых рабочих нагрузок можно подключить оплачиваемый ресурс Cognitive Services.

Параметры URI

Параметр Описание
имя службы Обязательный. Присвойте этому свойству уникальное пользовательское имя службы поиска.
имя набора навыков Требуется для URI, если используется PUT. Имя должно быть строчным, начинаться с буквы или цифры, не содержать косых черт или точек и содержать менее 128 символов. После того как имя начинается с буквы или цифры, остальная часть имени может содержать любые буквы, цифры и тире, если дефисы не являются последовательными.
api-version Обязательный. Текущая предварительная версия — 2023-07-01-Preview. Дополнительные версии см. в разделе Версии API .
disableCacheReprocessingChangeDetection Необязательный параметр (false по умолчанию). Применяется к сценариям обновления и использованию кэшированных обогащений во время выполнения набора навыков. Задайте значение , true чтобы предотвратить обновление существующих документов на основе текущего действия, например, если вы хотите обновить набор навыков без запуска набора навыков. Дополнительные сведения см. в разделе Обход оценки набора навыков.

Заголовки запросов

Таблица ниже содержит обязательные и необязательные заголовки запроса.

Поля Описание
Content-Type Обязательный. Присвойте этому свойству значение application/json
api-key Необязательно, если вы используете роли Azure и в запросе предоставляется маркер носителя, в противном случае требуется ключ. Ключ API — это уникальная, сгенерированная системой строка, которая проверяет подлинность запроса к службе поиска. Запросы на создание должны включать заголовок, заданный api-key для ключа администратора (в отличие от ключа запроса). Дополнительные сведения см. в статье Подключение к поиску ИИ Azure с помощью проверки подлинности по ключу .

Текст запроса

Текст запроса содержит определение набора навыков. Навыки являются автономными или связаны друг с другом через связи "вход-вывод", где выходные данные одного преобразования становятся входными данными другого. В наборе навыков должен быть хотя бы один навык. Теоретическое ограничение на максимальное число навыков отсутствует, однако типичная конфигурация содержит от трех до пяти навыков.

Следующий код JSON представляет собой общее представление main частей определения.

{   
  "name" : (optional on PUT; required on POST) "Name of the skillset",  
  "description" : (optional) "Anything you want, or nothing at all",   
  "skills" : (required) ["An array of skills. Each skill has an odata.type, name, input and output parameters"],
  "cognitiveServices": 
      {
        "@odata.type": "#Microsoft.Azure.Search.CognitiveServicesByKey",
        "description": "Optional. Anything you want, or null",
        "key": "<YOUR-COGNITIVE-SERVICES-ALL-IN-ONE-KEY>"
      },
  "knowledgeStore": (optional) { ... },
  "encryptionKey": (optional) { }
} 

Запрос содержит следующие свойства.

Свойство Описание
name Обязательный. Имя набора навыков. Имя должно быть строчным, начинаться с буквы или цифры, не содержать косых черт или точек и содержать менее 128 символов. После того как имя начинается с буквы или цифры, остальная часть имени может содержать любые буквы, цифры и тире, если дефисы не являются последовательными.
навыки Массив навыков. Каждый навык имеет odata.type, имя, контекст, а также входные и выходные параметры. Справочник по навыкам можно найти в концептуальной документации. Массив может включать встроенные навыки и пользовательские навыки. Требуется по крайней мере один навык. Если вы используете хранилище знаний, добавьте навык формировщика , если вы не определяете фигуру данных в проекции.
cognitiveServices Ключ "все в одном" требуется для оплачиваемых навыков, которые вызывают API-интерфейсы Cognitive Services в более чем 20 документах в день на индексатор. Ключ должен быть для ресурса в том же регионе, что и служба поиска. Дополнительные сведения см. в статье Присоединение ресурса Cognitive Services.

Вы можете опустить ключ и этот раздел, если набор навыков состоит только из пользовательских навыков, служебных навыков (условные навыки, формировщик, слияние текста, разделение текста) или навык извлечения документов.

Если вы используете навык пользовательского поиска сущностей , включите этот раздел и ключ, чтобы включить транзакции, превышающие 20 транзакций в день на индексатор.
knowledgeStore Необязательный элемент. Назначение для вывода обогащения в службу хранилища Azure. Требуется строка подключения к учетной записи хранения Azure и проекциям.
encryptionKey Необязательный элемент. Используется для шифрования конфиденциальных данных в определении набора навыков с помощью собственных ключей, управляемых в Key Vault Azure. Дополнительные сведения см. в статье Шифрование поиска ИИ Azure с помощью ключей, управляемых клиентом, в Azure Key Vault.

Ответ

При успешном выполнении запроса возвращается код состояния 201 (создан).

По умолчанию текст ответа содержит объект JSON для созданного определения набора данных. Однако если заголовок запроса Prefer содержит значение return=minimal, текст ответа будет пустым, а код состояния вместо значения "201 — создан" принимает значение "204 — нет содержимого". При этом не играет роли, какой запрос (PUT или POST) используется для создания набора навыков.

Примеры

Пример. Набор навыков, который распознает бизнес-сущности и тональность в отзывах клиентов

Этот набор навыков использует два навыка асинхронно, независимо обрабатывая /document/content как два разных преобразования. К навыкам относятся распознавание сущностей и тональность. В дереве /document/content обогащения предоставляет содержимое (или отзывы клиентов) из внешнего источника данных.

{
  "name": "reviews-ss",
  "description": 
  "Extract company names from customer reviews, and detect positive or negative sentiment from the same reviews.",
  "skills":
  [
    {
      "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
      "context": "/document/content",
      "categories": [ "Organization" ],
      "defaultLanguageCode": "en",
      "inputs": [
        {
          "name": "text",
          "source": "/document/content"
        }
      ],
      "outputs": [
        {
          "name": "organizations",
          "targetName": "companyName"
        }
      ]
    },
    {
      "@odata.type": "#Microsoft.Skills.Text.V3.SentimentSkill",
      "inputs": [
           {
              "name": "text",
              "source": "/document/content"
           },
          {
               "name": "languageCode",
               "source": "/document/languageCode"
           }
        ],
      "outputs": [
        {
            "name": "sentiment",
            "targetName": "reviewSentiment"
        },
        {
            "name": "confidenceScores",
            "targetName": "sentimentScore"
        }
      ]
    }
  ],
  "cognitiveServices": 
    {
    "@odata.type": "#Microsoft.Azure.Search.CognitiveServicesByKey",
    "description": "mycogsvcs resource in West US 2",
    "key": "<your cognitive services all-in-one key goes here>"
    },
  "knowledgeStore": { },
  "encryptionKey": { }
}

Пример. Хранилище знаний с полным доступом строка подключения и фигурными входными данными

Для хранилища знаний требуется строка подключения учетной записи хранения Azure и проекции, которые определяют, попадает ли обогащенное содержимое в хранилище таблиц или BLOB-объектов (в виде объектов или файлов).

Для проекций, особенно табличных проекций, требуется навык вышестоящий формировщика, который собирает узлы из дерева обогащения в качестве входных данных, выводя одну фигуру, которую можно передать в проекцию. Как правило, формировщик является последним навыком для обработки. В табличной проекции узлы в навыке формировщика определяют поля в таблице.

{
  "name": "reviews-ss",
  "description": 
  "Extract company names from customer reviews, and detect positive or negative sentiment from the same reviews.",
  "skills":
  [
    { ... },
    { ... },
    {
      "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
      "context": "/document/content",
      "inputs": [
        {
            "name": "Company",
            "source": "/document/content/companyName"
        },
        {
            "name": "Sentiment_Score",
            "source": "/document/content/sentimentScore"
        },
        {
            "name": "Sentiment_Label",
            "source": "/document/content/reviewSentiment"
        }
      ],
      "outputs": [
        {
          "name": "output",
          "targetName": "shapeCustomerReviews"
        }
      ]
    }
  ],
  "cognitiveServices": 
    {
    "@odata.type": "#Microsoft.Azure.Search.CognitiveServicesByKey",
    "description": "mycogsvcs resource in West US 2",
    "key": "<your cognitive services all-in-one key goes here>"
    },
  "knowledgeStore": { 
      "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<storage-account-name>;AccountKey=<storage-account-key>;EndpointSuffix=core.windows.net;", 
      "projections": [ 
          { 
            "tables": [ 
                { "tableName": "CustomerReviews", "generatedKeyName": "DocID", "source": "/document/shapeCustomerReviews" }
                . . .
            ], 
            "objects": [ ], 
            "files": [ ]  
          }
      ]     
  } 
  "encryptionKey": { }
}

Пример. Подключения с помощью управляемого удостоверения

Управляемые удостоверения можно использовать для подключений к хранилищу знаний и внешнему коду из пользовательского навыка. В этом примере показаны оба сценария. Для хранилища знаний дополнительное свойство identity указывает управляемое удостоверение, назначаемое пользователем службой поиска, которое Azure AD использует для проверки подлинности запроса. Если не указать "удостоверение", используется управляемое удостоверение, назначаемое системой службы поиска. Чтобы Azure AD для проверки подлинности вызывающего объекта, служба поиска должна быть настроена для управляемого удостоверения. Удостоверение поиска должно иметь разрешения "Участник данных BLOB-объектов хранилища" для записи в службу хранилища Azure.

Пользовательский навык может использовать управляемое удостоверение для проверки подлинности в функции Azure или приложении, в котором размещен пользовательский код. Он включает свойство authResourceId, указывающее, что подключение проходит проверку подлинности с помощью управляемого удостоверения. Значение authResourceId — это идентификатор приложения, созданный поставщиком удостоверений Майкрософт. Это значение будет использоваться для проверки маркера проверки подлинности, полученного индексатором, и будет отправлено вместе с пользовательским запросом API веб-навыка.

{
  "name": "reviews-ss",
  "description": "A short description",
  "skills":
  [
    { ... },
    { ... },
    {
        "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
        "name": "sampleCustomSkill",
        "description": "A custom skill that requests an access token for the application ID specified in authResourceID",
        "context": "/document",
        "uri": "https://[your-app-name].azurewebsites.net/api/EntitySearch",
        "authResourceId": "api://xyz*****-****-****-****-********9876",
        "batchSize": 4,
        "degreeOfParallelism": null,
        "inputs": [
          {
            "name": "text",
            "source": "/document/content"
          },
          {
            "name": "language",
            "source": "/document/languageCode"
          },
          {
            "name": "phraseList",
            "source": "/document/keyphrases"
          }
        ],
        "outputs": [
          {
            "name": "<customSkillOutput>"
          }
        ]
      }
    {
      "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
      "context": "/document/content",
      "inputs": [ ... ],
      "outputs": [ ...]
    }
  ],
  "cognitiveServices": { ... },
  "knowledgeStore": { 
      "storageConnectionString": "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;",
      "identity": {
          "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
          "userAssignedIdentity": "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[user identity name]",
      "projections": [ 
          { 
            "tables": [ ], 
            "objects": [ ], 
            "files": [ ]  
          }
      ]     
  }
  "encryptionKey": { }
}

Пример. Ключи шифрования

Ключи шифрования — это управляемые клиентом ключи, используемые для дополнительного шифрования конфиденциального содержимого. В этом примере показано, как указать управляемое клиентом шифрование в наборе навыков.

{
    "name": "reviews-ss",
    "description": "A brief description of the skillset",
    "skills":  [ omitted for brevity ],
    "cognitiveServices": { omitted for brevity },
    "knowledgeStore":  { omitted for brevity  },
    "encryptionKey": (optional) { 
        "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
        "keyVaultKeyVersion": "Version of the Azure Key Vault key",
        "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
        "accessCredentials": (optional, only if not using managed system identity) {
            "applicationId": "Azure Active Directory Application ID that was granted access permissions to your specified Azure Key Vault",
            "applicationSecret": "Authentication key of the specified Azure AD application)"}
    }
}

Определения

Ссылка Описание
knowledgeStore Настраивает подключение к службе хранилища Azure и проектирует обогащенное содержимое в виде объектов, файлов и таблиц для использования сценариев интеллектуального анализа знаний и обработки данных.
encryptionKey Настраивает подключение к azure Key Vault для шифрования, управляемого клиентом.

knowledgeStore

Хранилище знаний — это репозиторий обогащенных данных, созданных набором навыков и конвейером обогащения СИ. Он находится в службе хранилища Azure и состоит из проекций данных в виде объектов, файлов и таблиц. Он используется для сценариев без поиска, таких как интеллектуальный анализ знаний, исследование данных в Power BI или в качестве приемника данных для более нисходящей обработки другими приложениями.

Подключение к службе хранилища Azure — это либо строка подключения с полным доступом, который включает ключ, либо идентификатор ресурса хранилища при условии, что служба поиска выполняется под управляемым удостоверением и имеет назначение роли Azure, предоставляющее доступ на запись к конечной точке хранилища знаний.

attribute Описание
storageConnectionString Обязательный. Строка в одном из следующих форматов:

"DefaultEndpointsProtocol=https;AccountName=<ACCOUNT-NAME>;AccountKey=<ACCOUNT-KEY>;EndpointSuffix=core.windows.net"

"ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;"
удостоверение Необязательный элемент. Он содержит userAssignedIdentity тип #Microsoft.Azure.Search.DataUserAssignedIdentity и указывает управляемое удостоверение службы поиска, назначаемое пользователем . Это свойство зависит storageConnectionString от наличия строка подключения, указывающего идентификатор ресурса вашей учетной записи хранения.

identity Если свойство имеет значение NULL, подключение к идентификатору ресурса выполняется с помощью управляемого системой свойства .

Если это свойство назначено типу #Microsoft.Azure.Search.DataNoneIdentity, все явно указанные ранее удостоверения очищаются.
projections Обязательный. Массив проекций, состоящий из tables, objects, filesкоторые либо заданы, либо имеют значение NULL.

Проекции

Проекции — это определения структур данных в хранилище знаний. Все имена определяются пользователем. Вы можете применить соглашение об именовании, которое поможет определить связанное содержимое в службе хранилища Azure.

attribute Описание
В таблицах Проецирует фигуры данных в одну или несколько таблиц в хранилище таблиц Azure, где элементы из каждого документа проецируются в строки таблицы. Каждая таблица может иметь следующие три свойства.

Во-первых, name (обязательно) определяет таблицу для создания или использования в хранилище таблиц Azure.

Во-вторых, generatedKeyName (необязательно) — это имя столбца, который однозначно идентифицирует документ. Значения для этого столбца будут создаваться во время обогащения. Если опустить его, служба поиска создаст ключевой столбец по умолчанию на основе имени таблицы.

В-третьих, source (обязательно) — это путь к узлу дерева обогащения, который предоставляет форму проекции. Обычно это выходные данные навыка формировщика. Пути начинаются с /document/, представляющего корневой обогащенный документ, а затем расширяются до /document/<shaper-output>/, или /document/content/или другого узла в дереве обогащения. Примеры: /document/countries/* (все страны) или /document/countries/*/states/* (все государства во всех странах).
объекты Проекты документов в виде больших двоичных объектов в Хранилище BLOB-объектов Azure. Каждый объект имеет два обязательных свойства.

Во-первых, storageContainer это имя контейнера для создания или использования в Хранилище BLOB-объектов Azure.

Во-вторых, source это путь к узлу дерева обогащения, который предоставляет форму проекции. Это должен быть допустимый код JSON. Узел должен предоставить объект JSON либо из навыка, который выдает допустимый КОД JSON, либо выходные данные навыка Формировщика.
файлы Каждая запись файла определяет хранение двоичных образов в хранилище BLOB-объектов.

Проекции файлов имеют два обязательных свойства. Во-первых, storageContainer это имя контейнера для создания или использования в Хранилище BLOB-объектов Azure.

Во-вторых, source это путь к узлу дерева обогащения, который является корнем проекции. Допустимое значение для этого свойства — "/document/normalized_images/*" для образов, полученных из хранилища BLOB-объектов.

encryptionKey

Настраивает подключение к Azure Key Vault для дополнительных ключей шифрования, управляемых клиентом (CMK). Шифрование с помощью ключей, управляемых клиентом, недоступно для бесплатных служб. Для оплачиваемых служб они доступны только для служб поиска, созданных в 01.01.2019 или позже.

Подключение к хранилищу ключей должно пройти проверку подлинности. Для этой цели можно использовать accessCredentials или управляемое удостоверение.

Управляемые удостоверения могут быть назначаемые системой или пользователем (предварительная версия). Если служба поиска имеет управляемое удостоверение, назначаемое системой, и назначение ролей, которое предоставляет доступ на чтение к хранилищу ключей, можно опустить как identity, так и accessCredentials, и запрос будет проходить проверку подлинности с помощью управляемого удостоверения. Если служба поиска имеет назначаемое пользователем удостоверение и назначение ролей, задайте для свойства identity идентификатор ресурса этого удостоверения.

attribute Описание
keyVaultKeyName Обязательный. Имя ключа Key Vault Azure, используемого для шифрования.
keyVaultKeyVersion Обязательный. Версия ключа Key Vault Azure.
keyVaultUri Обязательный. URI azure Key Vault (также называется DNS-именем), предоставляющий ключ. Пример URI: https://my-keyvault-name.vault.azure.net.
accessCredentials Опустить, если вы используете управляемое удостоверение. В противном случае свойства accessCredentials включают applicationId (идентификатор приложения Azure Active Directory с разрешениями на доступ к указанному Key Vault Azure) и applicationSecret (ключ проверки подлинности указанного приложения Azure AD).
удостоверение Необязательный, если вы не используете управляемое удостоверение, назначаемое пользователем, для подключения службы поиска к Azure Key Vault. Формат — "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

См. также раздел