Поделиться через


Загрузка данных в индекс поиска в службе "Поиск ИИ Azure"

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

Принцип работы импорта данных

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

  • Содержимое обычного текста извлекается из полей во внешнем источнике данных, из свойств метаданных или из обогащенного содержимого, созданного набором навыков (навыки могут извлекать или выводить текстовые описания из изображений и неструктурированного содержимого).

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

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

После индексирования данных физические структуры данных индекса блокируются. Чтобы узнать, что может и не может быть изменено, см. раздел "Обновление и перестроение индекса".

Индексирование не является фоновым процессом. Служба поиска сбалансирует индексирование и рабочие нагрузки запросов, но если задержка запроса слишком высока, можно добавить емкость или определить периоды низкой активности запросов для загрузки индекса.

Дополнительные сведения см. в стратегиях импорта данных.

Использование портала Azure

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

  1. Войдите на портал Azure с помощью учетной записи Azure и найдите службу поиска.

  2. На странице "Обзор" выберите мастер импорта данных или импорта и векторизации данных на панели команд, чтобы создать и заполнить индекс поиска.

    Снимок экрана: команда импорта данных

    Чтобы просмотреть рабочий процесс, перейдите по следующим ссылкам: Краткое руководство: Создание индекса поиска Azure AI и Краткое руководство: Интегрированная векторизация.

  3. После завершения работы мастера используйте обозреватель поиска для проверки результатов.

Совет

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

Используйте REST API

Документы — индекс — это REST API для импорта данных в индекс поиска. REST API полезны для первоначальной проверки концепции, позволяя тестировать рабочие процессы индексирования без необходимости писать много кода. Параметр @search.action определяет, добавляются ли документы полностью или частично с точки зрения новых или заменяющих значений для определенных полей.

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

  1. Сформулируйте вызов POST, указывающий имя индекса, конечную точку docs/index и текст запроса, включающий @search.action параметр.

    POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/index?api-version=2024-07-01
    Content-Type: application/json   
    api-key: [admin key] 
    {
        "value": [
        {
        "@search.action": "upload",
        "HotelId": "1111",
        "HotelName": "Stay-Kay City Hotel",
        "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.",
        "Category": "Boutique",
        "Tags": [ "pool", "air conditioning", "concierge" ]
        },
        {
        "@search.action": "mergeOrUpload",
        "HotelId": "2",
        "HotelName": "Old Century Hotel",
        "Description": "This is description is replacing the original one for this hotel. New and changed values overwrite the previous ones. In a comma-delimited list like Tags, be sure to provide the full list because there is no merging of values within the field itself.",
        "Category": "Boutique",
        "Tags": [ "pool", "free wifi", "concierge", "my first new tag", "my second new tag" ]
        }
      ]
    }
    
  2. Установите параметр @search.action в значение upload для создания или перезаписи документа. Задайте для него merge значение или uploadOrMerge если вы нацелены на обновления для определенных полей в документе. В предыдущем примере показаны оба действия.

    Действие Действие
    объединить Обновляет документ, который уже существует, и не удается найти документ. Слияние заменяет существующие значения. По этой причине обязательно проверьте поля коллекции, содержащие несколько значений, таких как поля типа Collection(Edm.String). Например, если tags поле начинается со значения ["budget"] и выполняется слияние с ["economy", "pool"], конечное значение tags поля равно ["economy", "pool"]. Это не будет ["budget", "economy", "pool"].
    объединитьИлиЗагрузить Ведет себя как слияние, если документ существует, и отправляется, если документ является новым. Это наиболее распространенное действие для добавочных обновлений.
    загрузить Аналогично "upsert", где документ вставляется, если этот документ новый, и обновляется или заменяется, если он существует. Если в документе отсутствуют значения, необходимые индексу, значение поля документа устанавливается в null.
  3. Отправьте запрос.

  4. Просмотрите только что добавленные документы в качестве шага проверки:

    GET https://[service name].search.windows.net/indexes/hotel-sample-index/docs/1111?api-version=2024-07-01
    

Если ключ документа или идентификатор является новым, значение NULL становится значением для любого поля, которое не указано в документе. Для действий в существующем документе обновленные значения заменяют предыдущие значения. Все поля, которые не были указаны в "merge" или "mergeUpload", остаются нетронутыми в индексе поиска.

использование пакетов SDK Azure;

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

Пакет SDK Azure для .NET предоставляет следующие API для простых и массовых отправки документов в индекс:

Существует несколько примеров, иллюстрирующих индексирование в контексте простого и крупномасштабного индексирования:

См. также