Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API

API для вывода

API для вывода позволяют использовать определённые сервисы, такие как встроенные модели машинного обучения (ELSER, E5), модели, загруженные через Eland, Cohere, OpenAI, Azure, Google AI Studio или Hugging Face. Для встроенных моделей и моделей, загруженных через Eland, API для вывода предлагают альтернативный способ использования и управления обученными моделями. Однако, если вы не планируете использовать API для вывода для этих моделей или хотите использовать модели, не относящиеся к NLP, используйте API моделей машинного обучения.

Новая справка по API

Для получения самых актуальных данных об API обратитесь к API для вывода.

API для вывода позволяют создавать точки вывода и интегрироваться с моделями машинного обучения различных сервисов – таких как Amazon Bedrock, Anthropic, Azure AI Studio, Cohere, Google AI, Mistral, OpenAI или HuggingFace. Используйте следующие API для управления моделями вывода и выполнения вывода:

  • Удалить API для вывода
  • Получить API для вывода
  • Выполнить API для вывода
  • Создать API для вывода
  • Потоковый API для вывода
  • Обновить API для вывода
A representation of the Elastic inference landscape
Рисунок 16. Представление экосистемы Elastic для вывода

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

Выберите модель из своего сервиса или используйте ELSER – модель ретрива, обученную Elastic –, затем создайте точку вывода с помощью API для создания точки вывода. Теперь используйте семантический текст для выполнения семантического поиска по вашим данным.

Адаптивные распределения

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

При включённых адаптивных распределениях:

  • Количество распределений автоматически увеличивается при увеличении нагрузки.

    • Распределения уменьшаются до минимума в 0 при уменьшении нагрузки, сохраняя ресурсы.

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

Точки вывода по умолчанию

Ваша установка Elasticsearch содержит предварительно настроенные точки вывода, что упрощает их использование при определении полей semantic_text или при использовании процессоров вывода. В следующем списке содержатся точки вывода по умолчанию, перечисленные inference_id:

  • .elser-2-elasticsearch: использует встроенную обученную модель ELSER для задач sparse_embedding (рекомендуется для текстов на английском языке). model_id является .elser_model_2_linux-x86_64.
  • .multilingual-e5-small-elasticsearch: использует встроенную обученную модель E5 для задач text_embedding (рекомендуется для текстов на языках, отличных от английского). model_id является .e5_model_2_linux-x86_64.

Используйте inference_id точки вывода в определении поля semantic_text или при создании процессора вывода. Вызов API автоматически загрузит и развернёт модель, что может занять несколько минут. Точки вывода по умолчанию имеют включённые адаптивные распределения. Для этих моделей минимальное количество распределений составляет 0. Если нет активности вывода, использующей точку вывода, количество распределений автоматически уменьшится до 0 через 15 минут.

Настройка фрагментации

У точек вывода есть ограничение на количество текста, которое они могут обработать за раз, определяемое ёмкостью ввода модели. Фрагментация — это процесс разделения входного текста на части, которые остаются в пределах этих ограничений. Она происходит при загрузке документов в поля semantic_text. Фрагментация также помогает создавать части, которые легко усваиваются человеком. Возвращение длинного документа в результатах поиска менее полезно, чем предоставление наиболее релевантной части текста.

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

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

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

Стратегии фрагментации

Доступны две стратегии фрагментации: sentence и word.

Стратегия sentence разбивает входной текст по границам предложений. Каждый фрагмент содержит одно или несколько полных предложений, гарантируя сохранение целостности контекста на уровне предложений, за исключением случаев, когда предложение приводит к превышению количества слов в фрагменте max_chunk_size, в этом случае оно будет разделено между фрагментами. Опция sentence_overlap определяет количество предложений из предыдущего фрагмента, которое должно быть включено в текущий фрагмент, что составляет либо 0, либо 1.

Стратегия word разбивает входной текст по отдельным словам до предела max_chunk_size. Опция overlap — это количество слов из предыдущего фрагмента, которое должно быть включено в текущий фрагмент.

По умолчанию используется стратегия фрагментации sentence.

Стратегия фрагментации по умолчанию для точек вывода, созданных до 8.16, составляет word.

Пример настройки поведения фрагментации

Следующий пример создаёт точку вывода с сервисом elasticsearch, который по умолчанию развёртывает модель ELSER и настраивает поведение фрагментации.

resp = client.inference.put(
    task_type="sparse_embedding",
    inference_id="small_chunk_size",
    inference_config={
        "service": "elasticsearch",
        "service_settings": {
            "num_allocations": 1,
            "num_threads": 1
        },
        "chunking_settings": {
            "strategy": "sentence",
            "max_chunk_size": 100,
            "sentence_overlap": 0
        }
    },
)
print(resp)
const response = await client.inference.put({
  task_type: "sparse_embedding",
  inference_id: "small_chunk_size",
  inference_config: {
    service: "elasticsearch",
    service_settings: {
      num_allocations: 1,
      num_threads: 1,
    },
    chunking_settings: {
      strategy: "sentence",
      max_chunk_size: 100,
      sentence_overlap: 0,
    },
  },
});
console.log(response);
PUT _inference/sparse_embedding/small_chunk_size
{
  "service": "elasticsearch",
  "service_settings": {
    "num_allocations": 1,
    "num_threads": 1
  },
  "chunking_settings": {
    "strategy": "sentence",
    "max_chunk_size": 100,
    "sentence_overlap": 0
  }
}

© 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/inference-apis.html

Spec-Zone.ru

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