Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Note
Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе Foundry IQ — управляемого слоя знаний, который преобразует корпоративный контент в многократно используемые базы знаний с учетом разрешений доступа для агентов на портале Microsoft Foundry.
Объединение на основе обратного ранга (RRF) — это алгоритм, который использует оценки результатов поиска из нескольких ранее ранжированных наборов результатов, чтобы сформировать единый итоговый набор результатов. В Поиск с использованием ИИ Azure RRF используется при параллельном выполнении двух или более запросов, таких как гибридные запросы и несколько векторных запросов. Каждый отдельный запрос создает ранжированный результирующий набор, а RRF объединяет и гомгенизирует эти ранжирования в один результирующий набор для ответа запроса.
RRF основан на концепции обратного ранга, то есть величины, обратной рангу первого релевантного документа в списке результатов поиска. Цель метода заключается в том, чтобы учитывать положение элементов в исходном рейтинге и дать более высокую важность элементам, которые ранжируются выше в нескольких списках. Этот подход может помочь улучшить общее качество и надежность окончательного ранжирования, что делает его более полезным для задачи слияния нескольких упорядоченных результатов поиска.
Как работает ранжирование RRF
RRF работает путем получения результатов поиска из нескольких методов, назначения взаимной оценки ранжирования каждому документу в результатах, а затем объединения показателей для создания нового рейтинга. Концепция заключается в том, что документы, отображаемые в верхних позициях в нескольких методах поиска, скорее всего, будут более актуальными и должны быть ранжированы выше в объединенном результате.
Ниже приведено простое объяснение процесса RRF:
Получение ранжированных результатов поиска из нескольких запросов, выполняемых параллельно.
Назначьте оценки обратного ранжирования для результатов в каждом из ранжированных списков. RRF создает новое
@search.scoreзначение для каждого совпадения в каждом результирующем наборе. Для каждого документа в результатах поиска подсистема назначает обратную оценку ранжирования на основе его позиции в списке. Оценка вычисляется как1/(rank + k), гдеrankнаходится позиция документа в списке иkявляется константой. Эксперименты показывают, что алгоритм лучше всего выполняется при установкеkнебольшого значения, например 60. Этоkзначение является константой в алгоритме RRF и полностью отделяется отkтого, что управляет числом ближайших соседей.Объединение показателей. Для каждого документа подсистема суммирует взаимные оценки ранжирования, полученные из каждой системы поиска, создавая объединенную оценку для каждого документа.
Модуль ранжирует документы на основе объединенных показателей и сортирует их. Результирующий список — это объединённый рейтинг.
Для оценки используются только поля, помеченные как searchable в индексе или searchFields в запросе. В результатах поиска возвращаются только поля, помеченные как retrievable, или поля, указанные в select в запросе, вместе с их оценкой релевантности.
Параллельное выполнение запросов
RRF используется в любое время, когда выполняется несколько запросов. В следующих примерах показаны шаблоны запросов, в которых выполняется параллельный запрос:
- Полнотекстовый запрос, а также один векторный запрос (простой гибридный сценарий), равен двум выполнениям запросов.
- Полнотекстовый запрос, а также один векторный запрос, предназначенный для двух полей вектора, равен трем выполнениям запросов.
- Полнотекстовый запрос, а также два векторных запроса, предназначенных для пяти векторных полей, равно 11 выполнений запросов.
Баллы в результатах гибридного поиска
Каждый раз, когда результаты ранжируются, свойство содержит значение, @search.score используемое для упорядочивания результатов. Оценки создаются алгоритмами ранжирования, которые зависят от каждого метода. Каждый алгоритм имеет свой собственный диапазон и величину.
В следующей таблице указаны свойство оценки, возвращаемое для каждого совпадения и алгоритма, а также диапазон оценок для каждого алгоритма ранжирования релевантности. Дополнительные сведения и схема рабочего процесса оценки см. в статье "Релевантность" в службе "Поиск ИИ Azure".
| Метод поиска | Parameter | Алгоритм оценки | Range |
|---|---|---|---|
| полнотекстовый поиск | @search.score |
Алгоритм BM25 | Нет верхнего предела. |
| vector search | @search.score |
Алгоритм HNSW, используя метрику сходства, указанную в конфигурации HNSW. | 0.333 – 1.00 (Cosine), от 0 до 1 для Euclidean и DotProduct. |
| гибридный поиск | @search.score |
Алгоритм RRF | Верхний предел ограничивается числом запросов, с которыми выполняется слияние, причем каждый запрос вносит максимальный вклад примерно 1/k в оценку RRF (это k параметр в алгоритме RRF, а не векторный запрос). Например, объединение трех запросов создает более высокие оценки RRF, чем если объединяются только два результата поиска. |
| семантическое ранжирование | @search.rerankerScore |
Семантическое ранжирование | 0.00 - 4.00 |
Семантическое ранжирование выполняется после объединения результатов методом RRF. Его оценка (@search.rerankerScore) всегда сообщается отдельно в ответе запроса. Семантический ранжировщик может переранжировать результаты полнотекстового и гибридного поиска, если эти результаты включают поля с семантически насыщенным содержимым. Он может повторно ранжировать чисто векторные запросы, если документы, участвующие в поиске, включают текстовые поля с семантически релевантным содержимым.
Распаковать оценку поиска в подсчеты
Вы можете разобрать оценку поиска, чтобы просмотреть её подоценки. Для векторных запросов эти сведения помогут определить подходящее значение для векторного весового значения или установки минимальных пороговых значений.
Чтобы получить промежуточные баллы, выполните следующие действия:
Используйте REST API для поиска документов или пакет azure SDK, который предоставляет эту функцию.
Измените запрос, добавив новый параметр
debugи установив для него значениеvector,semanticпри использовании семантического ранжировщика илиall.
Вот пример гибридного запроса, который возвращает промежуточные оценки в режиме отладки:
POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
{
"vectorQueries": [
{
"vector": [
-0.009154141,
0.018708462,
. . .
-0.02178128,
-0.00086512347
],
"fields": "DescriptionVector",
"kind": "vector",
"exhaustive": true,
"k": 10
},
{
"vector": [
-0.009154141,
0.018708462,
. . .
-0.02178128,
-0.00086512347
],
"fields": "DescriptionVector",
"kind": "vector",
"exhaustive": true,
"k": 10
}
],
"search": "historic hotel walk to restaurants and shopping",
"select": "HotelName, Description, Address/City",
"debug": "vector",
"top": 10
}
Взвешенные оценки
Можно также задать вес векторным запросам, чтобы увеличить или уменьшить их важность в гибридном запросе.
Помните, что при вычислении RRF для определенного документа поисковая система смотрит на ранг этого документа для каждого результирующего набора, где он отображается. Предположим, что документ отображается в трех отдельных результатах поиска, где результаты относятся к двум векторным запросам и одному текстовому запросу BM25. Позиция документа зависит от каждого результата.
| Совпадение найдено | Позиция в результатах | @search.score | множитель веса | @search.score (взвешанный) |
|---|---|---|---|---|
| результаты вектора 1 | позиция 1 | 0.8383955 | 0.5 | 0.41919775 |
| результаты вектора 2 | позиция 5 | 0.81514114 | 2.0 | 1.63028228 |
| Результаты BM25 | позиция 10 | 0.8577363 | NA | 0.8577363 |
Позиция документа в каждом результирующем наборе соответствует начальной оценке, которая добавляется для создания окончательной оценки RRF для этого документа.
При добавлении векторного весового значения начальные оценки подвергаются умножительу весового значения, который увеличивает или уменьшает оценку. Значение по умолчанию — 1.0, что означает отсутствие весовых показателей и начальная оценка используется как в оценке RRF. Однако при добавлении веса 0,5 оценка уменьшается, и этот результат становится менее важным в объединенном рейтинге. И наоборот, если задать вес 2,0, оценка становится более значимым фактором в итоговой оценке RRF.
В этом примере @search.score значения (взвешенные) передаются модели ранжирования RRF.
Число ранжированных результатов в ответе гибридного запроса
По умолчанию, если вы не используете разбиение на страницы, поисковая система возвращает первые 50 самых высоких совпадений для полнотекстового поиска и наиболее аналогичные k совпадения для векторного поиска. В гибридном запросе top определяет количество результатов в ответе. По умолчанию возвращаются 50 совпадений с самым высоким рейтингом из объединённого набора результатов.
Часто поисковая система находит больше результатов, чем top и k. Чтобы вернуть больше результатов, используйте параметры разбиения по страницам top, skip и next. Разбиение на страницы позволяет определить количество результатов на каждой логической странице и перемещаться по всему набору данных.
Можно задать maxTextRecallSize для больших значений (значение по умолчанию — 1000), чтобы вернуть дополнительные результаты из текстовой стороны гибридного запроса.
По умолчанию полнотекстовый поиск подвергается максимальному ограничению в 1000 совпадений (см. ограничения ответа API). После того как найдены 1000 совпадений, поисковая система больше не ищет.
Дополнительные сведения см. в статье "Работа с результатами поиска".