Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В службе поиска искусственного интеллекта Azure существует несколько способов запуска индексатора:
- Выполните сразу после создания индексатора. Это значение по умолчанию, если индексатор не создается в состоянии "отключен".
- Выполнение по расписанию для вызова выполнения через регулярные интервалы.
- Запустите по требованию, со "сбросом" или без.
В этой статье объясняется, как запускать индексаторы по запросу и без сброса. Он также описывает выполнение индексатора: длительность, параллелизм выполнения.
Как индексаторы подключаются к ресурсам 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."
Среда выполнения индексатора
Задание индексатора выполняется в управляемой среде выполнения. В настоящее время существует две среды:
Частная среда выполнения запущена в кластерах поиска, специфичных для вашей службы поиска.
Мультитенантная среда содержит процессоры содержимого, управляемые и защищенные корпорацией Майкрософт без дополнительных затрат. Эта среда используется для разгрузки вычислительно интенсивных операций, оставляя ресурсы, специфичные для службы, доступными для выполнения рутинных операций. По возможности большинство наборов навыков выполняются в мультитенантной среде. Это значение по умолчанию.
Вычисление интенсивной обработки относится к наборам навыков, работающим на процессорах содержимого и заданиях индексатора, обрабатывающих большой объем документов или документов большого размера. Обработка набора навыков на мультитенантных обработчиках содержимого определяется эвристиками и системной информацией и не находится под контролем клиента.
Вы можете предотвратить использование мультитенантной среды в службах Standard2 или более поздней версии, закрепив индексатор и набор навыков исключительно в кластерах поиска.
executionEnvironment
Задайте параметр в определении индексатора, чтобы всегда запускать индексатор в частной среде выполнения.
Брандмауэры IP-адресов блокируют мультитенантную среду, поэтому если у вас есть брандмауэр, создайте правило , позволяющее подключения мультитенантного процессора.
Ограничения индексатора зависят от каждой среды:
Рабочая нагрузка | Максимальная длительность | Максимальное количество заданий | Среда выполнения |
---|---|---|---|
Конфиденциальное выполнение | 24 ч | Одно задание индексатора на поисковую единицу1. | Индексирование не выполняется в фоновом режиме. Вместо этого служба поиска балансирует все задания индексирования с текущими запросами и действиями управления объектами (например, создание или обновление индексов). При выполнении индексаторов следует ожидать некоторой задержки запросов, если объемы индексирования большие. |
Мультитенантные | 2 часа 2 | Неопределенное 3 | Так как кластер обработки содержимого является мультитенантным, процессоры содержимого добавляются для удовлетворения спроса. Если вы испытываете задержку при запуске по запросу или запланированном выполнении, вероятно, это связано с тем, что система добавляет процессоры или ожидает, пока они станут доступными. |
1 Единицы поиска могут быть гибкими сочетаниями секций и реплик, но задания индексатора не привязаны к одному или другому. Другими словами, если у вас есть 12 блоков, можно одновременно выполнять 12 заданий индексатора в частном режиме, независимо от того, как развернуты поисковые блоки.
2 Если для обработки всех данных требуется более двух часов, включите обнаружение изменений и запланируйте выполнение индексатора в течение 5 минут, чтобы возобновить индексирование быстро, если он останавливается из-за времени ожидания. Дополнительные стратегии см. в статье Индексирование большого набора данных .
3 "Неопределенное" означает, что ограничение не определяется числом заданий. Некоторые рабочие нагрузки, такие как обработка набора навыков, могут выполняться параллельно, что может привести к множеству заданий, даже если используется только один индексатор. Хотя среда не накладывает ограничения, ограничения индексатора для службы поиска по-прежнему применяются.
Запуск без сброса
Операция запуска индексатора обнаруживает и обрабатывает только то, что необходимо для синхронизации индекса поиска с изменениями в базовом источнике данных. Добавочное индексирование начинается с поиска внутренней высокой отметки, чтобы найти последний обновленный поисковый документ, который становится отправной точкой для работы индексатора с новыми и обновленными документами в источнике данных.
Обнаружение изменений важно для определения новых или обновленных в источнике данных. Индексаторы используют возможности обнаружения изменений базового источника данных, чтобы определить новые или обновленные возможности источника данных.
служба хранилища Azure имеет встроенное обнаружение изменений с помощью свойства LastModified.
Другие источники данных, такие как SQL Azure или Azure Cosmos DB, должны быть настроены для обнаружения изменений, прежде чем индексатор сможет считывать новые и обновленные строки.
Если базовое содержимое не изменяется, операция выполнения не влияет. В этом случае журнал выполнения индексатора указывает на количество обработанных документов 0\0
.
Чтобы выполнить повторную обработку, необходимо сбросить индексатор, как описано в следующем разделе.
Сброс индексаторов
После первоначального запуска индексатор отслеживает, какие документы поиска индексируются через внутренний высокий уровень. Маркер никогда не раскрывается, но индексатор внутренне знает, где он в последний раз остановился.
Если необходимо перестроить весь индекс или его часть, можно сбросить наивысшую отметку индексатора. API-интерфейсы сброса доступны на более низких уровнях в иерархии объектов:
- Сброс индексаторов очищает ограничитель и выполняет полную переиндексацию всех документов
- Сброс документов (предварительная версия) переиндексирует определенный документ или список документов
- Сброс навыков (предварительная версия) вызывает обработку навыков для определенного навыка
После сброса выполните команду Run для повторной обработки новых и существующих документов. Потерянные документы поиска, не имеющие аналогов в источнике данных, не могут быть удалены с помощью сброса или запуска. Если вам нужно удалить документы, вместо этого см. статью «Документы — индекс»."
Примечание.
Таблицы не могут быть пустыми. Если вы используете TRUNCATE TABLE для очистки строк, сброс и повторное выполнение индексатора не удалит соответствующие документы поиска. Чтобы удалить потерянные документы поиска, необходимо индексировать их с помощью действия удаления.
Как сбросить и запустить индексаторы
Сброс очищает максимальный уровень. Все документы в индексе поиска помечены для полной перезаписи без встроенных обновлений или объединения с существующим содержимым. Для индексаторов, использующих параметры навыков и кэширование обогащения, сброс индекса также неявно сбрасывает параметры навыков.
Реальная работа выполняется после сброса с помощью команды "Выполнить".
- Все новые документы, найденные базовым источником, добавляются в индекс поиска.
- Все документы, существующие как в источнике данных, так и в индексе поиска, перезаписываются в индексе поиска.
- Все обогащенное содержимое, созданное из наборов навыков, перестроены. Кэш обогащения, если он включен, обновляется.
Как отмечалось ранее, сброс является пассивной операцией: для перестроения индекса необходимо выполнить запрос запуска.
Операции сброса и запуска применяются к индексу поиска или хранилищу знаний, к определенным документам или проекциям, а также к кэшируемым обогащениям, если сброс явно или неявно включает навыки.
Сброс также применяется к операциям создания и обновления. Он не активирует удаление или очистку потерянных документов в индексе поиска. Дополнительные сведения об удалении документов см. в разделе "Документы — индекс".
После сброса индексатора невозможно отменить действие.
Войдите в портал Azure и откройте страницу службы поиска.
На странице "Обзор" выберите вкладку "Индексаторы".
Выберите индексатор.
Выберите команду "Сброс", а затем нажмите кнопку "Да", чтобы подтвердить действие.
Обновите страницу, чтобы отобразить состояние. Вы можете выбрать элемент, чтобы просмотреть его сведения.
Выберите "Запустить" , чтобы начать обработку индексатора или дождитесь следующего запланированного выполнения.
Как сбросить навыки (предварительная версия)
Для индексаторов, имеющих наборы навыков, можно сбросить отдельные навыки, чтобы принудительно обрабатывать только этот навык и любые последующие навыки, которые зависят от его результатов. Кэш обогащения, если он включен, также обновляется.
Сброс навыков в настоящее время доступен только для REST до 2020-06-30-preview или более поздней версии. Рекомендуется использовать последнюю предварительную версию API.
POST /skillsets/[skillset name]/resetskills?api-version=2024-05-01-preview
{
"skillNames" : [
"#1",
"#5",
"#6"
]
}
Вы можете указать отдельные навыки, как продемонстрировано в приведенном выше примере, но если для какого-либо из этих навыков потребуется результат отсутствующих в списке навыков (с #2 до #4), то будут выполняться отсутствующие в списке навыки, если только кэш не предоставит необходимые сведения. Чтобы это осуществилось, кэшированные обогащения для навыков с #2 по #4 не должны зависеть от #1 (указан для сброса).
Если никаких навыков не указано, выполняется весь набор навыков и, если кэширование включено, кэш также обновляется.
Не забудьте выполнить выполнение индексатора, чтобы вызвать фактическую обработку.
Как сбросить документы (предварительная версия)
Индексаторы - Сброс документов позволяет принять список ключей документов, чтобы обновить конкретные документы. При указании параметров сброса они становятся единственным определителем обрабатываемого объекта, независимо от других изменений в базовых данных. Например, если с момента последнего запуска индексатора были добавлены или обновлены 20 больших двоичных объектов, но вы сбрасываете только один документ, то обрабатывается только этот документ.
При реализации принципа работы, основанного на документах, все поля в этом поисковом документе обновляются значениями из источника данных. Вы не можете выбирать, какие поля обновлять.
Если документ обогащен с помощью набора навыков и содержит кэшированные данные, набор навыков вызывается только для указанных документов, а кэш обновляется для повторно обработанных документов.
При первом тестировании этого API следующие API помогут вам проверить и протестировать функциональность. Вы можете использовать предварительный просмотр API версии 2020-06-30-preview и более поздних версий. Рекомендуется использовать последнюю предварительную версию API.
Вызов Индексаторы — Получить статус с тестовой версией API для проверки статуса сброса и выполнения. Сведения о запросе на сброс можно найти в конце ответа о состоянии.
Вызов Индексаторы - Сброс документов с предварительной версией API, чтобы указать, какие документы следует обработать.
POST https://[service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2024-05-01-preview { "documentKeys" : [ "1001", "4452" ] }
Ключи документов, указанные в запросе, — это значения из поискового индекса, которые могут отличаться от соответствующих полей в источнике данных. Если вы не уверены в значении ключа, отправьте запрос , чтобы вернуть значение. Можно использовать
select
для возврата только поля ключа документа.Для больших двоичных объектов, которые разбираются на несколько документов поиска (где для синтаксического анализа задано значение jsonLines или jsonArrays, или delimitedText), ключ документа создается индексатором и может быть неизвестен вам. В этом сценарии запрос ключа документа возвращает правильное значение.
Вызовите индексатор (любой версии API), чтобы обработать указанные документы. Индексируются только те определенные документы.
Вызовите Запустить индексатор во второй раз, чтобы обработать с последнего места остановки.
Запустите Поиск документов для проверки обновленных значений и чтобы также вернуть ключи документов, если вы не уверены в значениях. Используйте
"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"
Чтобы проверить статус сброса и узнать, какие ключи документов находятся в очереди для обработки, выполните следующие действия.
Вызовите состояние индексатора с помощью API предварительной версии.
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" ] }
Проверьте режим:
Для параметра "Сброс навыков" необходимо установить "режим" в
indexingAllDocs
(так как потенциально все документы затрагиваются с точки зрения полей, которые заполняются с помощью обогащения ИИ).Для "Сброса документов" режим надо установить на
indexingResetDocs
. Индексатор сохраняет это состояние до тех пор, пока не будут обработаны все ключи документов, предоставленные в вызове сброса документов, и в это время другие задания индексатора не будут выполняться одновременно с этой операцией. При поиске всех документов в списке ключей документов требуется вскрытие каждого документа для выполнения поиска и сопоставления по ключу. На это может понадобиться некоторое время, если набор данных велик. Если в контейнере BLOB-объектов содержатся сотни BLOB-объектов, а документы, которые нужно обновить, находятся в конце, индексатор не найдет совпадающие BLOB-объекты, пока не проверит все остальные.После повторной обработки документов снова выполните команду "Get Indexer Status". Индексатор возвращается в
indexingAllDocs
режим и обрабатывает все новые или обновленные документы при следующем запуске.
Следующие шаги
Интерфейсы сброса API используются для определения области следующего запуска индексатора. Для фактической обработки необходимо инициировать выполнение индексатора по запросу или разрешить запланированному заданию завершить работу. После завершения выполнения индексатор возвращается к нормальной обработке, независимо от того, осуществляется ли она по расписанию или по требованию.
После сброса и повторного запуска заданий индексатора можно отслеживать состояние из службы поиска или получать подробные сведения с помощью ведения журнала ресурсов.