Запуск или сброс индексаторов, навыков или документов

В службе поиска искусственного интеллекта Azure существует несколько способов запуска индексатора:

В этой статье объясняется, как запускать индексаторы по запросу и без сброса. Он также описывает выполнение индексатора, длительность и параллелизм.

Как индексаторы подключаются к ресурсам Azure

Индексаторы — это одна из немногих подсистем, которые делают исходящие вызовы исходящих вызовов к другим ресурсам Azure. С точки зрения ролей Azure индексаторы не имеют отдельных удостоверений: подключение от поисковой системы к другому ресурсу Azure осуществляется с помощью управляемого удостоверения , назначаемого системой или пользователем службы поиска. Если индексатор подключается к ресурсу Azure в виртуальной сети, необходимо создать общую приватную ссылку для этого подключения. Дополнительные сведения о безопасных подключениях см. в статье "Безопасность" в службе "Поиск ИИ Azure".

Выполнение индексатора

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

На следующем снимках экрана показано количество единиц поиска, которое определяет, сколько индексаторов может выполняться одновременно.

Снимок экрана: раздел

После запуска выполнения индексатора невозможно приостановить или остановить его. Выполнение индексатора останавливается, если нет больше документов для загрузки или обновления, или когда достигнуто максимальное ограничение времени выполнения.

Можно одновременно запускать несколько индексаторов, предполагая достаточную емкость, но каждый индексатор сам является одним экземпляром. Запуск нового экземпляра, когда индексатор уже находится в выполнении, выдает следующую ошибку: "Failed to run indexer "<indexer name>" error: "Another indexer invocation is currently in progress; concurrent invocations are not allowed."

Задание индексатора выполняется в управляемой среде выполнения. В настоящее время существует две среды. Вы не можете контролировать или настраивать используемую среду. Поиск ИИ Azure определяет среду на основе композиции заданий и возможности службы переместить задание индексатора на обработчик содержимого (некоторые функции безопасности блокируют мультитенантную среду).

К средам выполнения индексатора относятся:

  • Частная среда выполнения, которая выполняется на узлах поиска, относящихся к службе поиска.

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

Ограничения индексатора зависят от каждой среды:

Рабочая нагрузка Максимальная длительность Максимальное количество заданий Среда выполнения
Частное выполнение 24 ч Одно задание индексатора на единицупоиска 1. Индексирование не выполняется в фоновом режиме. Вместо этого служба поиска будет балансировать все задания индексирования по текущим запросам и действиям управления объектами (например, созданию или обновлению индексов). При выполнении индексаторов следует ожидать, что некоторые задержки запросов будут отображаться, если объемы индексирования большие.
Мультитенантные 2 часа 2 Неопределенное 3 Так как кластер обработки содержимого является мультитенантным, узлы добавляются для удовлетворения спроса. Если вы испытываете задержку по запросу или запланированное выполнение, вероятно, это связано с тем, что система добавляет узлы или ожидает, пока он станет доступным.

1 Единицы поиска могут быть гибкими сочетаниями секций и реплика, но задания индексатора не привязаны к одному или другому. Другими словами, если у вас 12 единиц, можно одновременно выполнять 12 заданий индексатора, независимо от того, как развертываются единицы поиска.

2 Если для обработки всех данных требуется более двух часов, включите обнаружение изменений и запланируйте выполнение индексатора через два часа. Дополнительные стратегии см. в статье Индексирование большого набора данных.

3 "Неопределенное" означает, что ограничение не определяется числом заданий. Некоторые рабочие нагрузки, такие как обработка набора навыков, могут выполняться параллельно, что может привести к множеству заданий, даже если используется только один индексатор. Хотя среда не накладывает ограничения, ограничения индексатора для службы поиска по-прежнему применяются.

Запуск без сброса

Операция run Indexer обнаруживает и обрабатывает только то, что необходимо для синхронизации индекса поиска с изменениями в базовом источнике данных. Добавочное индексирование начинается путем поиска внутренней водяной отметки, чтобы найти последний обновленный документ поиска, который становится отправной точкой для выполнения индексатора над новыми и обновленными документами в источнике данных.

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

  • служба хранилища Azure имеет встроенное обнаружение изменений с помощью свойства LastModified.

  • Другие источники данных, такие как SQL Azure или Azure Cosmos DB, должны быть настроены для обнаружения изменений, прежде чем индексатор сможет считывать новые и обновленные строки.

Если базовое содержимое не изменяется, операция выполнения не влияет. В этом случае журнал выполнения индексатора будет указывать 0\0 на обработанные документы.

Чтобы выполнить повторную обработку, необходимо сбросить индексатор, как описано в следующем разделе.

Сброс индексаторов

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

Если необходимо перестроить все или часть индекса, можно очистить высокую воду индексатора с помощью сброса. API-интерфейсы сброса доступны на более низких уровнях в иерархии объектов:

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

Сброс и запуск индексаторов

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

Фактические действия возникают при выполнении сброса с помощью команды Run:

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

Как отмечалось ранее, сброс является пассивной операцией: необходимо выполнить запрос запуска для перестроения индекса.

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

Сброс также применяется к операциям создания и обновления. Он не активирует удаление или очистку потерянных документов в индексе поиска. Дополнительные сведения об удалении документов см. в разделе "Добавление, обновление или удаление документов".

После сброса индексатора невозможно отменить действие.

  1. Войдите в портал Azure и откройте страницу службы поиска.

  2. На странице "Обзор" выберите вкладку "Индексаторы".

  3. Выберите индексатор.

  4. Выберите команду "Сброс", а затем нажмите кнопку "Да", чтобы подтвердить действие.

  5. Обновите страницу, чтобы отобразить состояние. Вы можете выбрать элемент, чтобы просмотреть его сведения.

  6. Выберите "Запустить" , чтобы начать обработку индексатора или дождитесь следующего запланированного выполнения.

    Снимок экрана: страница портала выполнения индексатора с выделенной командой сброса.

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

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

Сброс навыков в настоящее время доступен только для REST, через api-version=2020-06-30-Preview или более поздней версии.

POST /skillsets/[skillset name]/resetskills?api-version=2020-06-30-Preview
{
    "skillNames" : [
        "#1",
        "#5",
        "#6"
    ]
}

Вы можете указать отдельные навыки, как продемонстрировано в приведенном выше примере, но если для какого-либо из этих навыков потребуется результат отсутствующих в списке навыков (с #2 до #4), то будут выполняться отсутствующие в списке навыки, если только кэш не предоставит необходимые сведения. Чтобы это осуществилось, кэшированные обогащения для навыков с #2 по #4 не должны зависеть от #1 (указан для сброса).

Если никаких навыков не указано, выполняется весь набор навыков и, если кэширование включено, кэш также обновляется.

Не забудьте выполнить выполнение индексатора, чтобы вызвать фактическую обработку.

Как сбросить документы (предварительная версия)

API сброса документов принимает список ключей документов, чтобы можно было обновить определенные документы. При указании параметров сброса они становятся единственным определителем обрабатываемого объекта, независимо от других изменений в базовых данных. Например, если с момента последнего запуска индексатора были добавлены или обновлены 20 больших двоичных объектов, но сбросить только один документ, обрабатывается только этот документ.

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

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

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

  1. Вызовите состояние индексатора с версией API или более поздней версиейapi-version=2020-06-30-Preview, чтобы проверка сбросить состояние и состояние выполнения. Сведения о запросе на сброс можно найти в конце ответа о состоянии.

  2. Вызов сброса документов с помощью версии api-version=2020-06-30-Preview API или более поздней версии, чтобы указать, какие документы следует обрабатывать.

    POST https://[service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
    {
        "documentKeys" : [
            "1001",
            "4452"
        ]
    }
    
    • Ключи документов, указанные в запросе, — это значения из поискового индекса, которые могут отличаться от соответствующих полей в источнике данных. Если вы не уверены в значении ключа, отправьте запрос , чтобы вернуть значение. Можно использовать select для возврата только поля ключа документа.

    • Для больших двоичных объектов, которые анализируются в несколько документов поиска (где для синтаксического анализа задано значение jsonLines или jsonArrays или jsonArrays, или разделителя), ключ документа создается индексатором и может быть неизвестным для вас. В этом сценарии запрос ключа документа возвращает правильное значение.

  3. Вызовите индексатор запуска (любая версия API), чтобы обработать указанные документы. Индексируются только те определенные документы.

  4. Вызовите индексатор запуска во второй раз, чтобы обработать с последней высокой водяной отметки.

  5. Вызовите документы поиска, чтобы проверка для обновленных значений, а также возвращать ключи документов, если вы не уверены в значении. Используйте "select": "<field names>", если нужно ограничить поля, отображаемые в ответе.

Перезапись списка ключей документа

Вызов API сброса документов несколько раз с различными ключами добавляет новые ключи в список сброса ключей документов. Вызов API с параметром overwrite true перезаписывает текущий список новым:

POST https://[service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
{
    "documentKeys" : [
        "200",
        "630"
    ],
    "overwrite": true
}

Проверьте состояние сброса currentState

Чтобы проверка сбросить состояние и узнать, какие ключи документов помещаются в очередь для обработки, выполните следующие действия.

  1. Вызовите состояние индексатора с api-version=06-30-2020-Preview или более поздней версией.

    API предварительной версии вернет currentState раздел, найденный в конце ответа.

    "currentState": {
        "mode": "indexingResetDocs",
        "allDocsInitialTrackingState": "{\"LastFullEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"LastAttemptedEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"NameHighWaterMark\":null}",
        "allDocsFinalTrackingState": "{\"LastFullEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"LastAttemptedEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"NameHighWaterMark\":null}",
        "resetDocsInitialTrackingState": null,
        "resetDocsFinalTrackingState": null,
        "resetDocumentKeys": [
            "200",
            "630"
        ]
    }
    
  2. Проверьте режим:

    Для параметра "Сброс навыков" необходимо задать indexingAllDocs значение "режим" (так как потенциально затрагиваются все документы с точки зрения полей, заполненных с помощью обогащения ИИ).

    Для параметра "Сброс документов" должно быть задано значение indexingResetDocsmode. Индексатор сохраняет это состояние до тех пор, пока не будут обработаны все ключи документов, предоставленные в вызове сброса документов, в течение которого другие задания индексатора не будут выполняться во время выполнения операции. При поиске всех документов в списке ключей документов требуется анализ каждого документа для выполнения поиска и сопоставления по ключу. На это может понадобиться некоторое время, если у набора данных большой объем. Если в контейнере BLOB-объектов содержится несколько сотен больших двоичных объектов, а документы, которые нужно сбросить, находятся в конце, индексатор не будет искать совпадающие BLOB-объекты до тех пор, пока сначала не будет проверено все остальное.

  3. После повторной обработки документов снова запустите состояние индексатора. Индексатор возвращается в indexingAllDocs режим и обрабатывает все новые или обновленные документы при следующем запуске.

Следующие шаги

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

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