Запросы в поиске ИИ Azure

Служба "Поиск ИИ Azure" поддерживает конструкции запросов для широкого спектра сценариев, от поиска текста в свободной форме до строго указанных шаблонов запросов до векторного поиска. Все запросы выполняются по индексу поиска, в которой хранятся доступные для поиска содержимое.

Типы запросов

Форма запроса Содержимое, доступные для поиска Description
полнотекстовый поиск Инвертированные индексы маркеризованных терминов. Полнотекстовые запросы перевернутые индексы, структурированные для быстрого сканирования, где совпадение можно найти в потенциально любом поле в любом количестве документов поиска. Текст анализируется и маркерируется для полнотекстового поиска.
Векторный поиск Векторные индексы созданных внедренных объектов. Векторные запросы выполняют итерацию по полям векторов в индексе поиска.
Гибридный поиск Все выше в одном индексе поиска. Объединяет текстовый поиск и векторный поиск в одном запросе. Поиск текста работает с текстовым содержимым в полях "доступный для поиска" и "фильтруемого". Поиск векторов работает над содержимым в векторных полях.
Другие Обычный текст и буквенно-цифровое содержимое. Необработанное содержимое, извлеченное из исходных документов, поддерживающие фильтры и запросы сопоставления шаблонов, такие как геопространствнный поиск, нечеткий поиск и поиск по полю.

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

Автозавершение и предлагаемые запросы

Автозавершение и предлагаемые результаты — это альтернативы операции search, которые инициируют последовательные обращения запросов, основанные на частично введенных строках (с повторением после каждого нового символа), реализуя поиск по мере набора текста. Вы можете использовать и suggestions параметр autocomplete вместе или отдельно, как описано в этом пошаговом руководстве, но их нельзя использовать.search Как завершаемые термины, так и предлагаемые запросы извлекаются из содержимого индекса. Подсистема никогда не возвращает строку или предложение, несуществующее в индексе. Дополнительные сведения см. в разделах Автозавершение (REST API) и Предложения (REST API).

Фильтры широко используются в приложениях, основанных на поиске ИИ Azure. На страницах приложений фильтры часто визуально представлены, как аспекты в структурах навигации по ссылкам, что позволяет реализовать управляемую пользователем фильтрацию. Фильтры также используются во внутренних механизмах программ, для получения доступа к срезам индексированного содержимого. Например, можно инициализировать страницу поиска с помощью фильтра, установленного на определенную категорию продуктов, или фильтра по языку, если индекс содержит поля как на английском, так и на французском языках.

Также фильтры могут потребоваться для вызова специализированных форм запросов, как описано в следующей таблице. Фильтр можно использовать с неуказанным поиском (search=*) или со строкой запроса, которая включает термины, фразы, операторы и шаблоны.

Сценарий применения фильтра Description
Фильтры диапазонов В службе "Поиск ИИ Azure" запросы диапазона создаются с помощью параметра фильтра. Дополнительные сведения и примеры см. в разделе Пример фильтра по диапазону.
Фасетная навигация В фасетном дереве навигации пользователи могут выбирать аспекты. При поддержке фильтров результаты поиска сужаются при каждом щелчке. Каждый аспект поддерживается фильтром, который исключает документы, которые больше не соответствуют критериям, предоставленным аспектом.

Примечание.

Текст, используемый в критерии фильтра, не анализируется в ходе обработки запроса. Предполагается, что введенный текст является дословным посимвольным шаблоном с учетом регистра, проверка на совпадение которого проходит либо успешно, либо неудачно. Критерии фильтров создаются с применением синтаксиса OData и передаются в параметр filter во всех полях с атрибутом filterable (допускает фильтрацию) в индексе. Дополнительные сведения см. в статьях "Фильтры" в службе "Поиск ИИ Azure".

Геопространственный поиск соответствует координатам широты и долготы расположения для поиска на основе карты или поиска на основе карты. В службе "Поиск ИИ Azure" можно реализовать геопространственный поиск, выполнив следующие действия.

Геопространственный поиск использует километров для расстояния. Координаты указаны в этом формате: (longitude, latitude).

Ниже приведен пример фильтра для геопространственного поиска. Этот фильтр находит другие Location поля в индексе поиска, которые имеют координаты в радиусе 300 километров от географической точки (в этом примере Вашингтон округ Колумбия). Он возвращает сведения об адресе в результате и включает необязательное facets предложение для самостоятельной навигации на основе расположения.

POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2023-07-01-Preview
{
    "count": true,
    "search": "*",
    "filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
    "facets": [ "Address/StateProvince"],
    "select": "HotelId, HotelName, Address/StreetAddress, Address/City, Address/StateProvince",
    "top": 7
}

Дополнительные сведения и примеры см . в примере геопространственного поиска.

Поиск документов

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

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

Расширенные формы запросов задействуют полное средство синтаксического анализа Lucene и операторы, которые активируют конкретные типы работы запросов.

Тип запроса Использование Дополнительные сведения и примеры
Поиск по полям Параметр search, queryType=full Создайте сложное выражение запроса, предназначенное для одного поля.
Пример поиска по полям
поиск нечетких соответствий; Параметр search, queryType=full Находит совпадения с терминами, которые имеют сходную конструкцию или орфографию.
Пример поиска нечетких соответствий
поиск с учетом расположения; Параметр search, queryType=full Находит термины, которые расположены в документе рядом друг с другом.
Пример поиска с учетом расположения
повышение приоритета терминов; Параметр search, queryType=full Присваивает более высокий приоритет документам, которые содержат определенный термин.
Пример повышения приоритета термина
поиск с использованием регулярного выражения; Параметр search, queryType=full Находит совпадения на основе содержимого регулярного выражения.
Пример поиска с использованием регулярного выражения
Поиск с подстановочным знаком или префиксом Параметр search с *~ или ?, queryType=full Находит совпадения с учетом префикса и символа тильды (~) или одного символа (?).
Пример поиска с использованием подстановочных знаков

Следующие шаги

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