Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе Foundry IQ — управляемого слоя знаний, который преобразует корпоративный контент в многократно используемые базы знаний с учетом разрешений доступа для агентов на портале Microsoft Foundry.
Если вы создаете запрос для полнотекстового поиска, в этой статье приведены шаги по настройке запроса. Он также представляет структуру запросов и объясняет, как атрибуты полей и лингвистические анализаторы могут повлиять на результаты запроса.
Предварительные условия
Служба поиска Azure AI (любого уровня). Create a service или find an existing one.
Индекс поиска со строковыми полями, атрибутируемыми как доступный для поиска. Вы также можете использовать псевдоним индекса в качестве конечной точки запроса.
Разрешения для запроса индекса:
- Аутентификация по ключу : ключ API запроса для сервиса поиска.
- Проверка подлинности на основе ролей: роль средства чтения данных индекса поиска .
Для разработки пакета SDK установите клиентская библиотека поиска Azure:
- Python: azure-search-documents
- .NET: Azure. Search.Documents
- JavaScript: @azure/search-documents
- Java: azure-search-documents
Подсказка
В примере быстрого кода перейдите к примеру полнотекстового запроса.
Пример полнотекстового запроса
В Поиск с использованием ИИ Azure запрос представляет собой операцию только для чтения по коллекции документов в одном индексе поиска, с параметрами, которые определяют выполнение запроса и формируют возвращаемый ответ.
Полнотекстовый запрос указывается в параметре search и состоит из терминов, кавычек и операторов. Другие параметры добавляют дополнительное определение в запрос.
Следующий вызов REST API поиска POST иллюстрирует запрос с использованием search и других параметров.
POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-04-01
{
"search": "NY +view",
"queryType": "simple",
"searchMode": "all",
"searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"top": 10,
"count": true
}
Справочник:Search POST
Ключевые моменты
searchзадает критерии соответствия, обычно это целые условия или фразы, с операторами или без них. Любое поле, которое приписывается как доступное для поиска в схеме индекса, находится в пределах области для операции поиска.queryTypeзадает средство синтаксического анализа: простой, полный. Средство синтаксического анализа простых запросов по умолчанию оптимально для полнотекстового поиска. Полный анализатор запросов Lucene предназначен для сложных запросов, таких как регулярные выражения, поиск с учётом близости, нечеткий поиск и поиск по шаблонам. Этот параметр также можно задать для семантического ранжирования для расширенного семантического моделирования в ответе запроса.searchModeуказывает, основаны ли совпадения на всех критериях (в пользу точности) или каких-либо критериях (в пользу полноты) в выражении. По умолчанию задано любой. Если предполагается интенсивное использование логических операторов, что, скорее всего, в индексах, содержащих большие текстовые блоки (поле содержимого или длинные описания), обязательно протестируйте запросы сsearchMode=Any|Allпараметром, чтобы оценить влияние этого параметра на логический поиск.searchFieldsограничивает выполнение запроса отдельными полями, допускающими поиск. Во время разработки полезно использовать один и тот же список полей и для выбора, и для поиска. В противном случае совпадение может быть основано на значениях полей, которые не отображаются в результатах, из-за чего станет непонятно, почему был возвращен тот или иной документ.
Параметры, используемые для формирования ответа:
selectуказывает, какие поля должны возвращаться в ответе. В операторе SELECT могут использоваться только поля, помеченные в индексе атрибутом retrievable.topвозвращает указанное в параметре количество документов, лучше всего соответствующих критериям поиска. В этом примере возвращаются только 10 совпадений. Для постраничной разбивки результатов можно использовать параметры "top" и "skip" (не отображается).countсообщает, сколько имеется совпадений документов по всему индексу; это число может быть большим, чем количество возвращенных совпадений. Допустимые значения : true или false. По умолчанию используется значение false. Счетчик является точным, если индекс стабильный, но может показать меньше или больше документов при активном добавлении, обновлении или удалении. Чтобы получить только количество без документов, используйте $top=0.orderbyприменяется, когда результаты необходимо отсортировать по определенному значению, например по рейтингу или расположению. В противном случае по умолчанию для ранжирования результатов используется оценка релевантности. Чтобы поле можно было указать в этом параметре, оно должно иметь атрибут sortable (допускает сортировку).
Выбор клиента
Для раннего разработки и проверки концепции начните с Azure portal или клиента REST или Jupyter notebook. Эти подходы являются интерактивными, полезными для целевого тестирования и помогают оценить влияние различных свойств без необходимости писать код.
Чтобы вызвать поиск из приложения, используйте клиентские библиотеки Azure.Document.Search в пакетах SDK Azure для .NET, Java, JavaScript и Python.
В портале Azure, при открытии индекса, можно работать с Search Explorer наряду с определением индекса в формате JSON в соседних вкладках, чтобы легко получить доступ к атрибутам полей. Проверьте таблицу "Поля" , чтобы узнать, какие из них доступны для поиска, сортируются, фильтруются и фасетируются при тестировании запросов.
Перейдите в службу поиска в портал Azure.
В вашей службе выберите индексы и выберите индекс.
Индекс открывается на вкладке обозревателя поиска, чтобы вы могли запрашивать сразу. Перейдите в представление JSON, чтобы указать синтаксис запроса.
Ниже приведено выражение запроса полнотекстового поиска, которое работает для индекса hotels-sample:
{ "search": "pool spa +airport", "queryType": "simple", "searchMode": "any", "searchFields": "Description, Tags", "select": "HotelName, Description, Tags", "top": 10, "count": true }Справочник:Search POST
На следующем снимках экрана показан запрос и ответ:
Выбор типа запроса: simple | full
Если запрос является полным текстовым поиском, средство синтаксического анализа запросов используется для обработки любого текста, передаваемого в качестве терминов и фраз поиска. Поиск с использованием ИИ Azure предлагает два средства синтаксического анализа запросов.
Простой синтаксический анализатор понимает простой синтаксис запросов. Это средство синтаксического анализа было выбрано по умолчанию, поскольку оно позволяет быстро и эффективно обрабатывать текстовые запросы. Синтаксис поддерживает распространенные операторы поиска (AND, OR, NOT) для поиска терминов и фраз, а также префиксный поиск
*(как вsea*Сиэтле и Сисайде). Общая рекомендация заключается в том, чтобы сначала попробовать выполнить простой синтаксический анализатор, а затем перейти на полный синтаксический анализатор, если для приложения требуется вызов более сложных запросов.Полный синтаксис запроса Lucene, который активируется при добавлении
queryType=fullв запрос, основан на средстве синтаксического анализа Apache Lucene.
Полный синтаксис и простой синтаксис перекрываются в той степени, в которой поддерживаются одни и те же префикс и логические операции, но полный синтаксис предоставляет больше операторов. В целом, существуют более операторы для логических выражений, а также дополнительные операторы для расширенных запросов, таких как нечеткий поиск, поиск с подстановочными знаками, поиск с учетом близости и регулярные выражения.
Выбор метода запроса
Поиск — это принципиально управляемое пользователем упражнение, в котором слова или фразы собираются из поля поиска или из событий нажатия на странице. В следующей таблице перечислены механизмы, с помощью которых можно собирать данные, введенные пользователем, а также ожидаемые результаты поиска.
| Ввод | Опыт |
|---|---|
| Метод поиска | Пользователь вводит термины или фразы в поле поиска с операторами или без нее и выбирает поиск для отправки запроса. Поиск можно использовать с фильтрами в одном и том же запросе, но не с автозаполнением или предложениями. |
| Метод автозавершения | Пользователь вводит несколько символов, и запросы инициируются после ввода каждого нового символа. Ответ — это завершенная строка из индекса. Если указанная строка допустима, пользователь выбирает поиск для отправки этого запроса в службу. |
| Метод предложений | Как и при использовании автозавершения, пользователь вводит несколько символов, и создаются добавочные запросы. Ответ в данном случае представляет собой раскрывающийся список соответствующих документов, которые обычно представлены в нескольких уникальных или описательных полях. Если любой из выбранных вариантов действителен, пользователь выбирает один и возвращает соответствующий документ. |
| Фасетная навигация | На странице отображаются навигационные ссылки или пути перехода, ограничивающие область поиска. Структура фасетной навигации создается динамически на основе исходного запроса. Например, search=* для заполнения дерева фасетной навигации, состоящего из каждой возможной категории. Структура фасетной навигации создается на основе ответа на запрос, но также является механизмом для выражения следующего запроса. В справке REST API facets — это параметр запроса операции поиска документов, но он может использоваться и без параметра search. |
| Метод фильтра | Фильтры используются с фасетами для сужения результатов. Можно также реализовать фильтр за страницей, например, чтобы инициализировать страницу с полями, зависящими от языка. В справке REST API $filter описан как параметр запроса операции поиска документов, но его можно использовать без параметра search. |
Влияние атрибутов поля на запросы
Если вы знакомы с типами запросов и композицией, можно помнить, что параметры запроса зависят от атрибутов поля в индексе. Например, в запросах и результатах поиска можно использовать только поля, помеченные как доступные для поиска и подлежащие извлечению. При установке параметров search, filter и orderby в вашем запросе, следует проверять атрибуты, чтобы избежать неожиданных результатов.
На следующем снимке экрана индекса hotels-sample, только последние два поля LastRenovationDate и Ratingявляются сортируемыми, что является требованием для использования в условии типа "$orderby" only.
Определения атрибутов поля см. в разделе "Создание индекса" (REST API).
Влияние маркеров на запросы
Во время индексирования поисковая система использует текстовый анализатор по строкам, чтобы максимально увеличить потенциал поиска совпадения во время запроса. По крайней мере строки имеют нижний регистр, но в зависимости от анализатора также могут пройти лемматизацию и остановить удаление слов. Большие строки или составные слова обычно разбиваются на пробелы, дефисы, тире и индексируются как отдельные токены.
Ключевой точкой является то, что вы думаете, что ваш индекс содержит, и то, что на самом деле в нем, может отличаться. Если запросы не возвращают ожидаемые результаты, можно проверить маркеры, созданные анализатором, через функцию Analyze Text (REST API). Дополнительные сведения о маркеризации и влиянии на запросы см. в разделе "Частичный поиск терминов" и "шаблоны" со специальными символами.
Устранение проблем с запросами
В следующей таблице перечислены распространенные проблемы с запросами и способы их устранения.
| Проблема | Причина | Резолюция |
|---|---|---|
| Пустые результаты | Документы не соответствуют условиям запроса. | Убедитесь, что поле помечено для поиска в схеме. Используйте API анализа текста для проверки маркеризации. |
| Непредвиденные результаты | Запрос совпадает с непредусмотренными полями. | Используйте searchFields для ограничения поиска по определённым полям. |
| Слишком много результатов | Запрос слишком общий. | Добавьте фильтры, используйте searchMode=allили добавьте необходимые термины с + оператором. |
| Результаты не ранжированы должным образом | Оценка релевантности не соответствует ожиданиям. | Рассмотрите профили оценки или семантическое ранжирование. |
| Частичные совпадения отсутствуют | Анализатор разбивает на токены иначе, чем ожидалось. | Используйте подстановочный суффикс (*) или проверьте поведение анализатора с помощью API анализа текста. |
| Фильтрация не работает | Поле не отмечено как фильтруемое. | Обновите схему индекса, чтобы задать filterable: true в поле. |
Связанный контент
Теперь, когда вы лучше понимаете, как работают запросы, ознакомьтесь со следующими краткими руководствами для практической работы.
- Проводник поиска
- Быстрый старт: Полнотекстовый поиск
- Синтаксис простых запросов
- Lucene query syntax in Azure Search (Синтаксис запросов Lucene в службе поиска Azure)
- Синтаксис фильтра OData