Запросы в поиске ИИ Azure
Служба "Поиск ИИ Azure" поддерживает конструкции запросов для широкого спектра сценариев, от поиска текста в свободной форме до строго указанных шаблонов запросов до векторного поиска. Все запросы выполняются по индексу поиска, в которой хранятся доступные для поиска содержимое.
Типы запросов
Форма запроса | Содержимое, доступные для поиска | Description |
---|---|---|
полнотекстовый поиск | Инвертированные индексы маркеризованных терминов. | Полнотекстовые запросы перевернутые индексы, структурированные для быстрого сканирования, где совпадение можно найти в потенциально любом поле в любом количестве документов поиска. Текст анализируется и маркерируется для полнотекстового поиска. |
Векторный поиск | Векторные индексы созданных внедренных объектов. | Векторные запросы выполняют итерацию по полям векторов в индексе поиска. |
Гибридный поиск | Все выше в одном индексе поиска. | Объединяет текстовый поиск и векторный поиск в одном запросе. Поиск текста работает с текстовым содержимым в полях "доступный для поиска" и "фильтруемого". Поиск векторов работает над содержимым в векторных полях. |
Другие | Обычный текст и буквенно-цифровое содержимое. | Необработанное содержимое, извлеченное из исходных документов, поддерживающие фильтры и запросы сопоставления шаблонов, такие как геопространствнный поиск, нечеткий поиск и поиск по полю. |
В этой статье основное внимание уделяется последней категории: запросы, работающие с обычным текстом и буквенно-цифровым содержимым, извлеченные из исходного источника, используемые для фильтров и других специализированных форм запросов.
Автозавершение и предлагаемые запросы
Автозавершение и предлагаемые результаты — это альтернативы операции search
, которые инициируют последовательные обращения запросов, основанные на частично введенных строках (с повторением после каждого нового символа), реализуя поиск по мере набора текста. Вы можете использовать и suggestions
параметр autocomplete
вместе или отдельно, как описано в этом пошаговом руководстве, но их нельзя использовать.search
Как завершаемые термины, так и предлагаемые запросы извлекаются из содержимого индекса. Подсистема никогда не возвращает строку или предложение, несуществующее в индексе. Дополнительные сведения см. в разделах Автозавершение (REST API) и Предложения (REST API).
Поиск по фильтру
Фильтры широко используются в приложениях, основанных на поиске ИИ Azure. На страницах приложений фильтры часто визуально представлены, как аспекты в структурах навигации по ссылкам, что позволяет реализовать управляемую пользователем фильтрацию. Фильтры также используются во внутренних механизмах программ, для получения доступа к срезам индексированного содержимого. Например, можно инициализировать страницу поиска с помощью фильтра, установленного на определенную категорию продуктов, или фильтра по языку, если индекс содержит поля как на английском, так и на французском языках.
Также фильтры могут потребоваться для вызова специализированных форм запросов, как описано в следующей таблице. Фильтр можно использовать с неуказанным поиском (search=*
) или со строкой запроса, которая включает термины, фразы, операторы и шаблоны.
Сценарий применения фильтра | Description |
---|---|
Фильтры диапазонов | В службе "Поиск ИИ Azure" запросы диапазона создаются с помощью параметра фильтра. Дополнительные сведения и примеры см. в разделе Пример фильтра по диапазону. |
Фасетная навигация | В фасетном дереве навигации пользователи могут выбирать аспекты. При поддержке фильтров результаты поиска сужаются при каждом щелчке. Каждый аспект поддерживается фильтром, который исключает документы, которые больше не соответствуют критериям, предоставленным аспектом. |
Примечание.
Текст, используемый в критерии фильтра, не анализируется в ходе обработки запроса. Предполагается, что введенный текст является дословным посимвольным шаблоном с учетом регистра, проверка на совпадение которого проходит либо успешно, либо неудачно. Критерии фильтров создаются с применением синтаксиса OData и передаются в параметр filter
во всех полях с атрибутом filterable (допускает фильтрацию) в индексе. Дополнительные сведения см. в статьях "Фильтры" в службе "Поиск ИИ Azure".
Геопространственный поиск
Геопространственный поиск соответствует координатам широты и долготы расположения для поиска на основе карты или поиска на основе карты. В службе "Поиск ИИ Azure" можно реализовать геопространственный поиск, выполнив следующие действия.
- Определите фильтруемое поле одного из этих типов: Edm.GeographyPoint, Collection(Edm.GeographyPoint, Edm.GeographyPolygon).
- Убедитесь, что входящие документы включают соответствующие координаты.
- После завершения индексирования создайте запрос, использующий фильтр и геопространствнную функцию.
Геопространственный поиск использует километров для расстояния. Координаты указаны в этом формате: (longitude, latitude
).
Ниже приведен пример фильтра для геопространственного поиска. Этот фильтр находит другие Location
поля в индексе поиска, которые имеют координаты в радиусе 300 километров от географической точки (в этом примере Вашингтон округ Колумбия). Он возвращает сведения об адресе в результате и включает необязательное facets
предложение для самостоятельной навигации на основе расположения.
POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2024-07-01
{
"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 |
Находит совпадения с учетом префикса и символа тильды (~ ) или одного символа (? ). Пример поиска с использованием подстановочных знаков |
Следующие шаги
Более подробное рассмотрение реализации запросов см. в примерах для каждого из вариантов синтаксиса. Если вы не знакомы с полнотекстовым поиском, более подробный взгляд на то, что модуль запросов делает, может быть равным хорошим выбором.