Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание
Эта функция сейчас доступна в предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания и не рекомендуется для рабочих задач в производственной среде. Некоторые функции могут не поддерживаться или могут иметь ограниченные возможности. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.
Перезапись запросов — это процесс преобразования запроса пользователя в более эффективный, добавление дополнительных терминов и уточнение результатов поиска. Служба поиска отправляет поисковый запрос (или вариант) в созданную модель, которая создает альтернативные запросы.
Перезапись запросов улучшает результаты семантического ранжирования , исправляя опечатки или ошибки орфографии в запросах пользователей и расширяя запросы синонимами.
Поиск с перезаписью запросов работает следующим образом:
- Запрос пользователя отправляется через
searchсвойство в запросе. - Служба поиска отправляет поисковый запрос (или вариант) в созданную модель, которая создает альтернативные запросы.
- Служба поиска использует исходный запрос и перезаписанные запросы для получения результатов поиска.
Перезапись запросов является необязательной функцией. Без перезаписи запросов служба поиска просто использует исходный запрос для получения результатов поиска.
Примечание
Перезаписанные запросы могут содержать не все точные термины исходного запроса. Это может повлиять на результаты поиска, если запрос был строго конкретным и требовал точных совпадений для уникальных идентификаторов или кодов продуктов.
Необходимые условия
Поиск с использованием ИИ Azure в любом регионе, который предоставляет перезапись запросов.
Существующий индекс поиска с семантической конфигурацией и богатым текстовым содержимым. В примерах этого руководства используется индекс hotels-sample для демонстрации перезаписи запросов.
Чтобы следовать инструкциям в этой статье, вам потребуется веб-клиент, поддерживающий запросы REST API. Примеры в этой статье были протестированы с помощью расширения Visual Studio Code и расширения REST Client.
Совет
Содержимое, включающее объяснения или определения, лучше всего подходит для семантического ранжирования.
Создание поискового запроса с перезаписями запросов
В этом примере REST API используйте документы поиска (предварительная версия) для формирования запроса.
Вставьте следующий запрос в веб-клиент в качестве шаблона.
POST https://[search-service-name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2025-11-01-preview { "search": "newer hotel near the water with a great restaurant", "semanticConfiguration":"en-semantic-config", "queryType":"semantic", "queryRewrites":"generative|count-5", "queryLanguage":"en-US", "debug":"queryRewrites", "top": 1 }Замените
search-service-nameименем службы поиска.Замените на
hotels-sampleваше имя индекса, если оно отличается.Задайте для запроса полнотекстового поиска значение search. Свойство поиска требуется для перезаписи запросов, если только вы не указываете векторные запросы. Если указать векторные запросы, текст "search" должен соответствовать
"text"свойству"vectorQueries"объекта. Строка поиска может поддерживать простой синтаксис или полный синтаксис Lucene.Задайте для параметра "semanticConfiguration" предопределённую семантическую конфигурацию, встроенную в ваш индекс.
Задайте для "queryType" значение "семантика". Необходимо задать для queryType значение "семантика" или включить свойство nonempty "semanticQuery" в запрос. Для переформулировки запросов требуется семантическое ранжирование.
Задайте для параметра queryRewrites значение "generative|count-5", чтобы получить до пяти перезаписей запросов. Число можно задать для любого значения от 1 до 10.
Поскольку вы запросили перезапись запросов, установив свойство "queryRewrites", необходимо задать параметр "queryLanguage" для языка текста поиска. Служба поиска использует тот же язык для перезаписи запросов. В этом примере используется "en-US". Поддерживаемые локали:
en-AU,en-CA,en-GB,en-IN,en-US,ar-EG,ar-JO,ar-KW,ar-MA,ar-SA,bg-BG,bn-IN,ca-ES,cs-CZ,da-DK,de-DE,el-GR,es-ES,es-MX,et-EE,eu-ES,fa-AE,fi-FI,fr-CA,fr-FR,ga-IE,gl-ES,gu-IN,he-IL,hi-IN,hr-BA,hr-HR,hu-HU,hy-AM,id-ID,is-IS,it-IT,ja-JP,kn-IN,ko-KR,lt-LT,lv-LV,ml-IN,mr-IN,ms-BN,ms-MY,nb-NO,nl-BE,nl-NL,no-NO,pa-IN,pl-PL,pt-BR,pt-PT,ro-RO,ru-RU,sk-SK,sl-SL,sr-BA,sr-ME,sr-RS,sv-SE,ta-IN,te-IN,th-TH,tr-TR,uk-UA,ur-PK,vi-VN,zh-CN,zh-TW.Установите "debug" в "queryRewrites", чтобы получить перезаписи запроса в ответе.
Совет
Задано
"debug": "queryRewrites"только для целей тестирования. Для повышения производительности не используйте отладку в рабочей среде.Задайте для параметра "top" значение 1, чтобы вернуть только верхний результат поиска.
Отправьте запрос для выполнения запроса и возврата результатов.
Затем вы оцениваете результаты поиска с переформулировками запроса.
Оценка ответа
Ниже приведен пример ответа, включающего перезаписи запросов:
"@search.debug": {
"semantic": null,
"queryRewrites": {
"text": {
"inputQuery": "newer hotel near the water with a great restaurant",
"rewrites": [
"new waterfront hotels with top-rated eateries",
"new waterfront hotels with top-rated restaurants",
"new waterfront hotels with excellent dining",
"new waterfront hotels with top-rated dining",
"new water-side hotels with top-rated restaurants"
]
},
"vectors": []
}
},
"value": [
{
"@search.score": 58.992092,
"@search.rerankerScore": 2.815633535385132,
"HotelId": "18",
"HotelName": "Ocean Water Resort & Spa",
"Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
"Description_fr": "Nouvel h\u00f4tel de luxe pour des vacances inoubliables. Vue sur la baie depuis chaque chambre, emplacement pr\u00e8s de la jet\u00e9e, piscine sur le toit, restaurant au bord de l'eau et plus encore.",
"Category": "Luxury",
"Tags": [
"view",
"pool",
"restaurant"
],
"ParkingIncluded": true,
"LastRenovationDate": "2020-11-14T00:00:00Z",
"Rating": 4.2,
"Location": {
"type": "Point",
"coordinates": [
-82.537735,
27.943701
],
"crs": {
"type": "name",
"properties": {
"name": "EPSG:4326"
}
}
},
//... more properties redacted for brevity
}
]
Ниже приведены некоторые ключевые моменты, которые следует отметить:
- Поскольку свойство "debug" установлено в "queryRewrites" для тестирования, ответ включает объект
@search.debugс запросом текстового ввода и вариантами перезаписи запросов. - Так как для свойства queryRewrites задано значение "generative|count-5", ответ включает до пяти перезаписей запросов.
- Значением
"inputQuery"является запрос, отправляемый в созданную модель для перезаписи запросов. Входной запрос не всегда совпадает с запросом пользователя"search".
Ниже приведен пример ответа без перезаписи запросов.
"@search.debug": {
"semantic": null,
"queryRewrites": {
"text": {
"inputQuery": "",
"rewrites": []
},
"vectors": []
}
},
"value": [
{
"@search.score": 7.774868,
"@search.rerankerScore": 2.815633535385132,
"HotelId": "18",
"HotelName": "Ocean Water Resort & Spa",
"Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
"Description_fr": "Nouvel h\u00f4tel de luxe pour des vacances inoubliables. Vue sur la baie depuis chaque chambre, emplacement pr\u00e8s de la jet\u00e9e, piscine sur le toit, restaurant au bord de l'eau et plus encore.",
"Category": "Luxury",
"Tags": [
"view",
"pool",
"restaurant"
],
"ParkingIncluded": true,
"LastRenovationDate": "2020-11-14T00:00:00Z",
"Rating": 4.2,
"Location": {
"type": "Point",
"coordinates": [
-82.537735,
27.943701
],
"crs": {
"type": "name",
"properties": {
"name": "EPSG:4326"
}
}
},
//... more properties redacted for brevity
}
]
Векторные запросы с переопределением запросов
В запросе поиска можно включить векторные запросы для объединения поиска ключевых слов и векторного поиска в один запрос и унифицированный ответ.
Ниже приведен пример запроса, который включает векторный запрос с перезаписями запросов. Измените предыдущий пример , чтобы включить векторный запрос.
- Добавьте объект vectorQueries в запрос. Этот объект включает в себя векторный запрос с атрибутом "kind", установленным на "text".
- Значение "text" совпадает со значением "search". Эти значения должны быть идентичными, чтобы перезапись запросов работала.
POST https://[search-service-name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2025-11-01-preview
{
"search": "newer hotel near the water with a great restaurant",
"vectorQueries": [
{
"kind": "text",
"text": "newer hotel near the water with a great restaurant",
"k": 50,
"fields": "Description",
"queryRewrites": "generative|count-3"
}
],
"semanticConfiguration":"en-semantic-config",
"queryType":"semantic",
"queryRewrites":"generative|count-5",
"queryLanguage":"en-US",
"top": 1
}
Ответ включает перезаписи запросов как для текстового запроса, так и для векторного запроса.
Тестирование перезаписи запросов с помощью отладки
Необходимо протестировать перезаписи запросов, чтобы убедиться, что они работают должным образом. Задайте свойство в запросе "debug": "queryRewrites" запроса, чтобы получить перезаписи запроса в ответе. Параметр необязателен "debug" для целей тестирования. Для повышения производительности не устанавливайте это свойство в рабочей среде.
Причины частичного ответа
Возможно, в ответе отладки (тестирования) содержится пустой массив для свойств text.rewrites и vectors.
{
"@odata.context": "https://demo-search-svc.search.windows.net/indexes('hotels-sample')/$metadata#docs(*)",
"@search.debug": {
"semantic": null,
"queryRewrites": {
"text": {
"rewrites": []
},
"vectors": []
}
},
"@search.semanticPartialResponseReason": "Transient",
"@search.semanticQueryRewriteResultType": "OriginalQueryOnly",
//... more properties redacted for brevity
}
В предыдущем примере:
- Ответ содержит
@search.semanticPartialResponseReasonсвойство со значением "Временный". Это сообщение означает, что не удалось завершить хотя бы один из запросов. - Ответ также содержит
@search.semanticQueryRewriteResultTypeсвойство со значением OriginalQueryOnly. Это сообщение означает, что перезаписи запросов недоступны. Для получения результатов поиска используется только исходный запрос.
Дальнейшие действия
Семантический ранжирование можно использовать в гибридных запросах, которые объединяют поиск по ключевым словам и векторный поиск в одном запросе и унифицированном ответе.