Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Инжесты ›Инжесты в поиске

Учебник: Обработка естественного языка (NLP)

Это руководство посвящено конкретной задаче: загрузке обученной модели машинного обучения в Elasticsearch и настройке для обогащения ваших документов.

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

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

  • Настройка облачного развертывания: Мы будем использовать Elastic Cloud для размещения нашего развертывания, так как это упрощает масштабирование узлов машинного обучения.
  • Загрузка модели с помощью Eland: Мы будем использовать клиент Elasticsearch Eland для импорта выбранной модели в Elasticsearch. После проверки того, что модель загружена, мы сможем использовать её в конвейере загрузки.
  • Настройка конвейера вывода ML: Мы создадим индекс Elasticsearch с предопределённой структурой отображения и добавим конвейер вывода.
  • Просмотр обогащённых результатов: Мы загрузим некоторые данные в наш индекс и увидим, что конвейер обогащает наши документы.

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

Оглавление:

  • Создать развертывание Elastic Cloud
  • Клонировать Eland
  • Развернуть обученную модель
  • Создать индекс и определить конвейер вывода ML
  • Индексировать документы
  • Сводка
  • Узнать больше

Создать развертывание Elastic Cloud

Ваше развертывание потребует экземпляра машинного обучения для загрузки и развертывания обученных моделей.

Если у вашей команды уже есть развертывание Elastic Cloud, убедитесь, что оно имеет как минимум один экземпляр машинного обучения. Если нет, Изменить ваше развертывание, чтобы добавить ёмкость. Для этого учебника нам потребуется как минимум 2 ГБ оперативной памяти на одном экземпляре машинного обучения.

Если у вашей команды нет развертывания Elastic Cloud, начните с регистрации на бесплатной пробной версии Elastic Cloud. После создания учётной записи у вас будет активная подписка, и вы получите запрос на создание первого развертывания.

Выполните шаги по Созданию нового развертывания. Убедитесь, что вы добавили ёмкость в Экземпляры машинного обучения в Дополнительные настройки перед созданием развертывания. Для упрощения масштабирования включите функцию Автомасштабировать это развертывание. Если вы используете автомасштабирование, вы должны увеличить минимальный объём ОЗУ для экземпляра машинного обучения. Для этого учебника нам потребуется как минимум 2 ГБ ОЗУ. Для получения дополнительной информации см. Создать развертывание в документации Elastic Cloud.

Обогащение документов с помощью машинного обучения было добавлено в Enterprise Search 8.5.0, поэтому убедитесь, что вы используете версию 8.5.0 или более позднюю.

Клонировать Eland

Инструмент Elastic Eland упрощает загрузку обученных моделей в ваше развертывание через Docker.

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

Для клонирования и сборки Eland с использованием Docker выполните следующие команды:

git clone git@github.com:elastic/eland.git
cd eland
docker build -t elastic/eland .

Развернуть обученную модель

Теперь, когда у вас есть развертывание и способ загрузки моделей, вам нужно выбрать обученную модель, соответствующую вашим данным. Hugging Face имеет большой репозиторий общедоступных обученных моделей. Модель, которую вы выберете, будет зависеть от ваших данных и того, что вы хотите с ними сделать.

Для целей этого руководства предположим, что у нас есть набор данных комментариев к фотографиям. Чтобы создать позитивную атмосферу на нашей платформе, мы хотели бы, чтобы первые несколько комментариев к каждой фотографии были позитивными. Для этой задачи модель distilbert-base-uncased-finetuned-sst-2-english хорошо подходит.

Для загрузки этой модели в ваше развертывание вам нужны некоторые данные:

  • URL развертывания. Вы можете получить его через ссылку Скопировать конечную точку рядом с Elasticsearch на экране управления развертыванием. Она будет выглядеть так https://ml-test.es.us-west1.gcp.cloud.es.io:443. Убедитесь, что вы добавили порт, если он отсутствует, так как Eland требует, чтобы URL имел схему, хост и порт. 443 — это стандартный порт для HTTPS.
  • Имя пользователя и пароль развертывания для вашего развертывания. Это отображается один раз при создании развертывания. Она будет выглядеть так elastic и xUjaFNTyycG34tQx5Iq9JIIA.
  • Идентификатор обученной модели. Он получен с Hugging Face. Он будет выглядеть так distilbert-base-uncased-finetuned-sst-2-english.
  • Тип задачи обученной модели. Это тип задачи машинного обучения, для выполнения которой предназначена модель. Это может быть: fill_mask, ner, text_classification, text_embedding, и zero_shot_classification. В нашем случае мы будем использовать text_classification.

Теперь мы можем загрузить выбранную модель в Elasticsearch, предоставив эти параметры Eland.

docker run -it --rm --network host \
    elastic/eland \
    eland_import_hub_model \
      --url https://ml-test.es.us-west1.gcp.cloud.es.io:443 \
      -u elastic -p <PASSWORD> \
      --hub-model-id distilbert-base-uncased-finetuned-sst-2-english \
      --task-type text_classification \
      --start

Этот скрипт должен выполняться примерно 2-3 минуты. После успешного развертывания модели на ваше облачное развертывание, перейдите на страницу Обученные модели Kibana, чтобы убедиться, что она готова. Вы можете найти эту страницу в меню Машинное обучение > Аналитика, а затем Обученные модели > Управление моделями. Если вы не видите свою модель в списке, вам может потребоваться нажать Синхронизировать ваши задачи и обученные модели. Ваша модель готова к использованию.

Создать индекс и определить конвейер вывода ML

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

Предположим, что наши комментарии к фотографиям выглядят так, когда они загружаются как документ в Elasticsearch:

{
  "photo_id": "78sdv71-8vdkjaj-knew629-vc8459p",
  "body": "your dog is so cute!",
  ...
}

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

  • На главной странице Kibana начните с нажатия на карту Поиск.
  • Нажмите кнопку Создать индекс Elasticsearch.
  • Выберите Использовать API и присвойте своему индексу имя. Оно будет автоматически добавлено с префиксом search-. Для этой демонстрации мы назовём индекс search-photo-comments.
  • После нажатия Создать индекс вас перенаправят на страницу обзора для вашего нового индекса.

Для настройки конвейера вывода ML нам нужен индекс с существующей структурой отображения, чтобы мы могли выбрать, какой поле анализировать. Это можно сделать через API структуры отображения индекса в Kibana Dev Tools или просто с помощью команды cURL:

PUT search-photo-comments/_mapping
{
  "properties": {
    "photo_id": { "type": "keyword" },
    "body": { "type": "text" }
  }
}

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

  1. На странице обзора вашего индекса search-photo-comments в «Поиске» нажмите вкладку Конвейеры. По умолчанию Elasticsearch не создаёт никаких конвейеров загрузки, специфичных для индекса.
  2. Поскольку мы хотим настроить эти конвейеры, нам нужно Скопировать и настроить конвейер загрузки ent-search-generic-ingestion. Найдите этот параметр над настройками конвейера загрузки ent-search-generic-ingestion. Это создаст два новых конвейера загрузки, специфичных для индекса.

Далее, мы добавим конвейер вывода.

  1. Найдите раздел Конвейеры вывода машинного обучения, а затем выберите Добавить конвейер вывода.
  2. Присвойте своему конвейеру вывода имя, выберите загруженную нами обученную модель и выберите поле body для анализа.
  3. Необязательно, выберите имя поля для хранения вывода. Мы назовём его positivity_result.

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

Индексировать документы

На этом всё готово к обогащению документов во время индексирования.

Из консоли разработчика Kibana или просто с помощью команды cURL, мы можем индексировать документ. Мы будем использовать флаг _run_ml_inference, чтобы указать конвейеру search-photo-comments на запуск специфичной для индекса ML-инференсной конвейерной обработки, которую мы создали. Это поле не будет индексировано в документе.

POST search-photo-comments/_doc/my-new-doc?pipeline=search-photo-comments
{
  "photo_id": "78sdv71-8vdkjaj-knew629-vc8459p",
  "body": "your dog is so cute!",
  "_run_ml_inference": true
}

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

GET search-photo-comments/_doc/my-new-doc
{
  "_index": "search-photo-comments",
  "_id": "_MQggoQBKYghsSwHbDvG",
  ...
  "_source": {
    ...
    "photo_id": "78sdv71-8vdkjaj-knew629-vc8459p",
    "body": "your dog is so cute!",
    "ml": {
      "inference": {
        "positivity_result": {
          "predicted_value": "POSITIVE",
          "prediction_probability": 0.9998022925461774,
          "model_id": "distilbert-base-uncased-finetuned-sst-2-english"
        }
      }
    }
  }
}

Документ имеет новые поля с обогащёнными данными. Поле ml.inference.positivity_result — это объект с результатами анализа от машинной обучающей модели. Модель предсказала с 99,98% уверенностью, что проанализированный текст позитивный.

Отсюда мы можем создавать запросы поиска, чтобы усиливать ml.inference.positivity_result.predicted_value. Это поле также будет сохранено в верхнем уровневом поле positivity_result, если модель была достаточно уверена.

Краткое описание

В этом руководстве мы рассмотрели, как:

  • Настроить развертывание на Elastic Cloud с экземпляром машинного обучения.
  • Развернуть обученную модель машинного обучения с помощью клиента Eland Elasticsearch.
  • Настроить конвейер вывода, чтобы использовать обученную модель с Elasticsearch.
  • Обогатить документы результатами вывода из обученной модели во время импорта.
  • Запросить вашу поисковую систему и отсортировать по positivity_result.

Дополнительная информация

  • Совместимые сторонние модели
  • Обзор NLP
  • Раздел Docker в файле README Eland
  • Руководство по развертыванию модели ML
  • Методы аутентификации Eland
  • Добавление конвейеров вывода

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/nlp-example.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API