Нейронный разреженный запрос
Вы можете выполнить запрос следующими способами:
- Предоставьте разреженные векторные эмбеддинги для сопоставления. Для получения дополнительной информации смотрите раздел “Нейронный разреженный поиск с использованием сырых векторов”:
"neural_sparse": {
"<vector_field>": {
"query_tokens": {
"<token>": <weight>,
...
}
}
}
- Предоставьте текст для токенизации и использования для сопоставления. Для токенизации текста вы можете использовать следующие компоненты:
- Встроенный анализатор 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
}
}
}
}
}