Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Повторная ранжировка

Семантическая повторная ранжировка

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

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

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

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

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

Варианты использования

Семантическое повторное ранжирование позволяет использовать различные варианты использования:

  • Повторное ранжирование результатов извлечения (BM25)

    • Семантический поиск «из коробки», путем добавления простого API-вызова в любой конвейер извлечения на основе ключевых слов/BM25.
    • Добавляет семантические возможности поиска поверх существующих индексов без повторной индексации, идеально подходит для быстрых улучшений.
    • Идеально подходит для сред с сложными существующими индексами.
  • Повторное ранжирование результатов семантического извлечения

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

    • Поддерживает автоматическое и прозрачное чанкинг, исключая необходимость предварительного чанкинга во время индексирования.
    • Предоставляет явный контроль над релевантностью документов в вариантах использования «извлечение-усиление генерации» (RAG) или других сценариях, включающих входные данные языковых моделей (LLM).

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

Модели кросс-кодеров и би-кодеров

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

В этой версии Elasticsearch поддерживает только кросс-кодеров для семантического повторного ранжирования.

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

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

Короче говоря, кросс-кодеры обеспечивают высокую точность, но более ресурсоемки. Би-кодеры быстрее и эффективнее, но менее точны.

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

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

Ниже приводится неполный список моментов, которые следует учитывать при выборе между кросс-кодерами и би-кодерами для семантического повторного ранжирования:

  • Поскольку модель кросс-кодера одновременно обрабатывает текст запроса и документа, она может лучше вывести их релевантность, что делает ее более эффективной, чем би-кодер, в качестве модуля повторного ранжирования.
  • Модели кросс-кодеров обычно больше и более ресурсоемки, что приводит к более высоким задержкам и увеличению вычислительных затрат.
  • Существует значительно меньше открытых кросс-кодеров, в то время как би-кодеры предлагают широкий спектр размеров, языков и других компромиссов.
  • Эффективность кросс-кодеров также может улучшить релевантность семантических извлекателей. Например, их способность учитывать порядок слов может улучшить результаты поиска с использованием плотных или разреженных векторов встраивания.
  • При обучении совместно со специфическими извлекателями (например, с ключевыми словами/BM25) кросс-кодеры могут «исправлять» типичные ошибки, допускаемые этими извлекателями.
  • Кросс-кодеры выдают оценки, которые согласованы между запросами. Это позволяет поддерживать высокую релевантность в наборах результатов, установив минимальный порог оценки для всех запросов. Например, это важно при использовании результатов в рабочем процессе RAG или при передаче результатов в LLM. Обратите внимание, что оценки сходства из би-кодеров/встраивания сходства зависят от запроса, что означает, что вы не можете установить универсальные пороговые значения.
  • Би-кодеры повторно ранжируют с использованием встраиваний. Вы можете улучшить задержку повторного ранжирования, создавая встраивания во время загрузки. Эти встраивания могут храниться для повторного ранжирования без индексирования для извлечения, что снижает объем используемой памяти.

Семантическое повторное ранжирование в Elasticsearch

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

Для использования семантического повторного ранжирования в Elasticsearch необходимо:

  1. Выберите и настройте модель повторного ранжирования. У вас есть следующие варианты:

    1. Используйте модель кросс-кодера Elastic Rerank через API вывода Elasticsearch.
    2. Используйте точку входа Cohere Rerank для создания rerank точки входа.
    3. Используйте точку входа Google Vertex AI для создания rerank точки входа.
    4. Загрузите модель в Elasticsearch из Hugging Face с помощью Eland. Вам нужно будет использовать тип задачи NLP text_similarity при загрузке модели с помощью Eland. Затем настройте точку входа API вывода Elasticsearch с типом точки входа rerank.

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

  2. Создайте rerank точку входа с помощью API вывода Elasticsearch. API вывода создает точку входа вывода и настраивает выбранную модель машинного обучения для выполнения задачи повторного ранжирования.
  3. Определите text_similarity_reranker извлекатель в запросе поиска. Синтаксис извлекателя упрощает настройку как извлечения, так и повторного ранжирования результатов поиска в одном API-вызове.
Пример запроса поиска с семантическим модулем повторного ранжирования

Следующий пример показывает запрос поиска, который использует семантический модуль повторного ранжирования для переупорядочения лучших документов top-k на основе их семантического сходства с запросом.

resp = client.search(
    retriever={
        "text_similarity_reranker": {
            "retriever": {
                "standard": {
                    "query": {
                        "match": {
                            "text": "How often does the moon hide the sun?"
                        }
                    }
                }
            },
            "field": "text",
            "inference_id": "elastic-rerank",
            "inference_text": "How often does the moon hide the sun?",
            "rank_window_size": 100,
            "min_score": 0.5
        }
    },
)
print(resp)
const response = await client.search({
  retriever: {
    text_similarity_reranker: {
      retriever: {
        standard: {
          query: {
            match: {
              text: "How often does the moon hide the sun?",
            },
          },
        },
      },
      field: "text",
      inference_id: "elastic-rerank",
      inference_text: "How often does the moon hide the sun?",
      rank_window_size: 100,
      min_score: 0.5,
    },
  },
});
console.log(response);
POST _search
{
  "retriever": {
    "text_similarity_reranker": {
      "retriever": {
        "standard": {
          "query": {
            "match": {
              "text": "How often does the moon hide the sun?"
            }
          }
        }
      },
      "field": "text",
      "inference_id": "elastic-rerank",
      "inference_text": "How often does the moon hide the sun?",
      "rank_window_size": 100,
      "min_score": 0.5
    }
  }
}

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

  • Прочитайте справочную документацию по извлекателям для получения синтаксиса и подробностей реализации.
  • Узнайте больше об абстракции извлекателей.
  • Узнайте больше о API вывода Elasticsearch.
  • Посмотрите наш Python ноутбук для использования Cohere с Elasticsearch.

© 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/semantic-reranking.html

Spec-Zone.ru

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