Нейронный разреженный запрос

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

Вы можете выполнить запрос следующими способами:

  1. Предоставьте разреженные векторные эмбеддинги для сопоставления. Для получения дополнительной информации смотрите раздел “Нейронный разреженный поиск с использованием сырых векторов”:
"neural_sparse": {
  "<vector_field>": {
    "query_tokens": {
      "<token>": <weight>,
      ...
    }
  }
}
  1. Предоставьте текст для токенизации и использования для сопоставления. Для токенизации текста вы можете использовать следующие компоненты:
    • Встроенный анализатор DL модели:
"neural_sparse": {
  "<vector_field>": {
    "query_text": "<input text>",
    "analyzer": "bert-uncased"
  }
}
  • Модель токенизатора:
"neural_sparse": {
  "<vector_field>": {
    "query_text": "<input text>",
    "model_id": "<model ID>"
  }
}

Для получения дополнительной информации смотрите раздел “Автоматическая генерация разреженных векторных эмбеддингов”.

Поля тела запроса

Верхний уровень vector_field указывает на векторное поле, по которому будет выполняться запрос поиска. Необходимо указать либо query_text, либо query_tokens для определения входных данных. Следующие поля могут быть использованы для настройки запроса:

Поле Тип данных Обязательное/Необязательное Описание
query_text Строка Необязательное Текст запроса, который будет преобразован в разреженные векторные эмбеддинги. Необходимо указать либо query_text, либо query_tokens.
analyzer Строка Необязательное Используется с query_text. Указывает встроенный анализатор DL модели для токенизации текста запроса. Допустимые значения: bert-uncased и mbert-uncased. По умолчанию используется bert-uncased. Не может использоваться одновременно с model_id.
model_id Строка Необязательное Используется с query_text. Идентификатор модели разреженного кодирования (для режима би-кодировщика) или токенизатора (для режима только документа), используемый для генерации векторных эмбеддингов из текста запроса. Модель/токенизатор должна быть развернута в OpenSearch перед использованием в нейронном разреженном поиске. Не может использоваться одновременно с analyzer.
query_tokens Карта токенов (строка) к весу (число с плавающей точкой) Необязательное Сырой разреженный вектор в виде токенов и их весов. Используется в качестве альтернативы query_text для прямого ввода вектора. Необходимо указать либо query_text, либо query_tokens.
max_token_score Число с плавающей точкой Необязательное (устарело) Этот параметр устарел с версии OpenSearch 2.12. Он поддерживается только для обратной совместимости и больше не влияет на функциональность. Параметр все еще может быть указан в запросах, но его значение не имеет значения. Ранее использовался как теоретическая верхняя граница оценки для всех токенов в словаре.

Примеры запросов

Поиск с использованием текста, токенизированного анализатором

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

GET my-nlp-index/_search
{
  "query": {
    "neural_sparse": {
      "passage_embedding": {
        "query_text": "Hi world",
        "analyzer": "bert-uncased"
      }
    }
  }
}

Для получения дополнительной информации смотрите раздел “Анализаторы DL модели”.

Поиск с использованием текста без указания анализатора

Если вы не укажете анализатор, будет использован анализатор по умолчанию bert-uncased:

GET my-nlp-index/_search
{
  "query": {
    "neural_sparse": {
      "passage_embedding": {
        "query_text": "Hi world"
      }
    }
  }
}

Поиск с использованием текста, токенизированного моделью токенизатора

Чтобы выполнить поиск, используя текст, токенизированный моделью токенизатора, укажите идентификатор модели в запросе:

GET my-nlp-index/_search
{
  "query": {
    "neural_sparse": {
      "passage_embedding": {
        "query_text": "Hi world",
        "model_id": "aP2Q8ooBpBj3wT4HVS8a"
      }
    }
  }
}

Поиск с использованием разреженного вектора

Чтобы выполнить поиск, используя разреженный вектор, укажите разреженный вектор в параметре query_tokens:

GET my-nlp-index/_search
{
  "query": {
    "neural_sparse": {
      "passage_embedding": {
        "query_tokens": {
          "hi": 4.338913,
          "planets": 2.7755864,
          "planet": 5.0969057,
          "mars": 1.7405145,
          "earth": 2.6087382,
          "hello": 3.3210192
        }
      }
    }
  }
}