Создание гибридного запроса в Поиск с использованием ИИ Azure

Примечание

Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе Foundry IQ — управляемого слоя знаний, который преобразует корпоративный контент в многократно используемые базы знаний с учетом разрешений доступа для агентов на портале Microsoft Foundry.

Important

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

Гибридный поиск объединяет текстовые (ключевые слова) и векторные запросы в одном запросе поиска. Оба запроса выполняются параллельно. Результаты объединяются и переупорядочены по новым оценкам поиска, используя Reciprocal Rank Fusion (RRF), чтобы вернуть единый набор результатов. Во многих случаях по результатам тестов производительности, гибридные запросы с семантической ранжировкой возвращают наиболее релевантные результаты.

В этой статье описано, как:

  • Настройка базового гибридного запроса
  • Добавление параметров и фильтров
  • Повышение релевантности с помощью семантического ранжирования или векторных весов
  • Оптимизация поведения запросов путем управления входными данными (maxTextRecallSize)

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

Необходимые условия

Выберите API, инструмент и рабочий шаблон.

  • Обозреватель поиска на портале Azure (поддерживает стабильный и предварительный синтаксис поиска API) содержит представление JSON, которое позволяет вставить гибридный запрос.

  • Более новые стабильные или предварительные пакеты Azure SDK (см. журналы изменений для поддержки функций SDK).

  • Стабильные интерфейсы REST API или последняя предварительная версия API, если вы используете функции предварительной версии, такие как maxTextRecallSize и countAndFacetMode (предварительная версия).

    Для удобства чтения мы используем примеры REST, чтобы объяснить, как работают API. Для создания гибридных запросов можно использовать клиент REST, например Visual Studio Code с расширением REST. Вы также можете использовать Azure SDKs. Дополнительные сведения см. в кратком руководстве по поиску векторов.

Рабочие гибридные шаблоны

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

  • Сбалансированный гибридный (по умолчанию): используйте это первое значение для большинства рабочих нагрузок. Начните с k диапазона от 30 до 50, top в диапазоне от 10 до 20, и включите семантический рейтинг только при повышении измеренной релевантности.

  • Гибрид с приоритетом на отзыв: используйте это для сложных запросов, где важен максимальный охват. Постепенно увеличивайте maxTextRecallSize и держите настройки вектора умеренными. Ожидается более высокая стоимость слияния.

  • Гибрид с приоритетом точности: используйте для низкой задержки на масштабируемых уровнях. Держите k и top на скромном уровне, применяйте выборочные фильтры и избегайте семантических функций, которые не добавляют ценность.

Почему перегруженные запросы ограничивают

Гибридные запросы выполняют получение текста и вектора параллельно, а затем объединяют результаты с RRF. При увеличении лексического вклада (например, путем изменения гибридного весового веса в пользу BM25) вы увеличиваете число текстовых кандидатов, которые должны быть объединены с векторными кандидатами. При сочетании этого с дорогостоящими настройками векторов и семантическим переназначением, давление на ЦП и память быстро возрастает.

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

  • Более высокая задержка и пиковые пики p95/p99
  • 429 ответов регулирования
  • Со стороны клиента наблюдаются прерванные или завершившиеся по тайм-ауту запросы, когда поведение повторных попыток не настроено.

Порядок настройки перед масштабированием

Настройте параметры запроса и вектора перед добавлением реплик:

  1. Сначала уменьшите затратные параметры поиска векторов. Например, если efSearch и maxConnections настроены агрессивно, снизите их перед масштабированием (например, сократите efSearch от около 800 до 128 до 192 и уменьшите от maxConnections 64 до 32).
  2. Ограничьте область семантической пересортировки только теми случаями, которые от этого выигрывают.
  3. Повторно протестируйте задержку и частоту 429 при типовой нагрузке.
  4. Масштабируйте реплики только в том случае, если регулирование сохраняется после настройки.

Используйте эту последовательность для повышения стабильности сначала и управления затратами перед масштабированием.

Настройка гибридного запроса

В этом разделе объясняется базовая структура гибридного запроса и настройка одного из них в обозревателе поиска или выполнении в клиенте REST.

Результаты возвращаются в виде обычного текста, включая векторы в полях, помеченных как retrievable. Так как числовые векторы не полезны в результатах поиска, выберите другие поля в индексе в качестве прокси-сервера для сопоставления векторов. Например, если индекс содержит поля descriptionVector и descriptionText, запрос может совпадать с "descriptionVector", но результат поиска может отображать "descriptionText". select Используйте параметр, чтобы указать только поля, доступные для чтения человеком, в результатах.

  1. Перейдите в службу поиска на портале Azure.

  2. В разделе"Индексы управления >поиском" выберите индекс с векторами и неекторным содержимым. Обозреватель поиска — это первая вкладка.

  3. В разделе "Вид" переключитесь на вид JSON, чтобы вставить векторный запрос.

  4. Замените шаблон запроса по умолчанию гибридным запросом. Базовый гибридный запрос содержит текстовый запрос, указанный в search, и векторный запрос, указанный в разделе vectorQueries.vector. Текстовый запрос и векторный запрос могут быть эквивалентными или дивергентными, но они часто используют одно и то же намерение.

    Этот пример взят из vector quickstart, который содержит и векторное, и невекторное содержимое, а также несколько примеров запросов. Для краткости вектор усечен в этой статье.

    {
        "search": "historic hotel walk to restaurants and shopping",
        "vectorQueries": [
            {
                "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], 
                "k": 7,
                "fields": "DescriptionVector",
                "kind": "vector",
                "exhaustive": true
            }
        ]
    }
    
  5. Выберите "Поиск".

    Совет

    Результаты поиска проще читать, если скрыть векторы. В параметрах запроса включите скрытие векторных значений в результатах поиска.

  6. Ниже приведена другая версия запроса. Этот компонент аналогично добавляет параметр count для числа найденных совпадений, параметр select для выбора определенных полей и параметр top для возврата первых семи результатов.

     {
         "count": true,
         "search": "historic hotel walk to restaurants and shopping",
         "select": "HotelId, HotelName, Category, Tags, Description",
         "top": 7,
         "vectorQueries": [
             {
                 "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], 
                 "k": 7,
                 "fields": "DescriptionVector",
                 "kind": "vector",
                 "exhaustive": true
             }
         ]
     }
    

Задайте maxTextRecallSize и countAndFacetMode (предварительная версия)

Гибридный запрос можно настроить, чтобы контролировать, сколько каждый из вложенных запросов вносит вклад в объединённые результаты. Задание параметра maxTextRecallSize (предварительная версия) определяет, сколько результатов, ранжированных по BM25, передается в гибридную модель ранжирования.

Если запрос содержит аспекты, используйте поля невектора, помеченные как facetable в индексе. Поля векторов не являются аспектируемыми.

Количество аспектов зависит от типа запроса:

  • В запросе, содержащем только текст, фасеты подсчитывают количество документов, соответствующих текстовому запросу.
  • В запросе, содержащем только векторную часть, фасеты подсчитывают документы k, возвращаемые векторным запросом.
  • В гибридном запросе аспекты учитывают как векторные, так и текстовые результаты. Векторная сторона вносит ближайшие k документы. Текстовая часть предоставляет документы, ранжированные по BM25. Параметр countAndFacetMode (предварительная версия) определяет, используются ли при подсчёте количества и вычислении фасетов все текстовые совпадения или только те текстовые совпадения, которые извлекаются для ранжирования.

Если вы используете maxTextRecallSize, вам также может потребоваться задать countAndFacetMode. Этот параметр определяет, включены ли countfacets все документы, соответствующие текстовому запросу, или только документы, полученные в maxTextRecallSize окне. Значение по умолчанию — countAllResults.

В режиме countAllResults, используемом по умолчанию, количество результатов и фасеты могут включать документы текстовой части, которые не попадают в выборку для ранжирования RRF, поскольку находятся вне окна maxTextRecallSize. Увеличение maxTextRecallSize увеличивает количество документов, ранжированных по BM25 и доступных для ранжирования, но не увеличивает вклад векторов сверх k. Используйте countRetrievableResults , если требуется подсчет и вычисление аспектов, охватываемых документами, извлеченными для гибридного ранжирования.

Мы рекомендуем использовать последнюю предварительную версию REST API для настройки этих параметров.

Совет

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

  1. Используйте поиск — POST (предварительная версия) или ПОИСК — GET (предварительная версия) для указания параметров предварительного просмотра .

  2. hybridSearch Добавьте объект параметра запроса, чтобы задать максимальное количество документов, отозванных с помощью результатов гибридного запроса BM25. Он имеет два свойства:

    • maxTextRecallSize указывает количество результатов, ранжированных по BM25, для предоставления ранжировщику Reciprocal Rank Fusion (RRF), используемому в гибридных поисковых запросах. Значение по умолчанию — 1000. Максимальное значение — 10 000.

    • countAndFacetMode сообщает количество и область фасетов для гибридного запроса. По умолчанию countAllResultsиспользуется полный гибридный результирующий набор, включая все документы, соответствующие текстовому запросу, даже если некоторые из этих текстовых совпадений не извлекаются для ранжирования RRF, так как они попадают за пределы maxTextRecallSize окна. Используется countRetrievableResults для подсчета областей и аспектов для документов, полученных для ранжирования, включая maxTextRecallSize документы, ранжированные по BM25, и k векторные совпадения.

  3. Установить maxTextRecallSize:

    • Уменьшите maxTextRecallSize, если поиск сходства векторов, как правило, опережает текстовую часть гибридного запроса.

    • Увеличьте maxTextRecallSize, если у вас большой индекс, и значение по умолчанию не охватывает достаточное количество результатов. Имея более крупный результирующий набор, ранжированный по BM25, вы также можете задать top, skip и next, чтобы получить части этих результатов.

В следующих примерах REST показаны два варианта использования для настройки maxTextRecallSize.

Первый пример уменьшает значение maxTextRecallSize до 100, ограничивая текстовую часть гибридного запроса всего 100 документами. Он также устанавливает countAndFacetMode так, чтобы при подсчёте и вычислении фасетов учитывались только документы, доступные для извлечения.

POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_vector_field", 
          "k": 10 
        } 
      ], 
      "search": "hello world", 
      "hybridSearch": { 
        "maxTextRecallSize": 100, 
        "countAndFacetMode": "countRetrievableResults" 
      } 
    } 

Второй пример поднимает maxTextRecallSize до 5000. Он также использует top, skip и next для извлечения результатов из больших результирующих наборов. В этом случае запрос извлекает ранжированные по BM25 результаты, начиная с позиции 1500 до 2000, в качестве вклада текстового запроса в составной результат набора RRF.

POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_vector_field", 
          "k": 10 
        } 
      ], 
      "search": "hello world",
      "top": 500,
      "skip": 1500,
      "next": 500,
      "hybridSearch": { 
        "maxTextRecallSize": 5000, 
        "countAndFacetMode": "countRetrievableResults" 
      } 
    } 

Справочник: hybridSearch | maxTextRecallSize | countAndFacetMode

Примеры гибридных запросов

В этом разделе содержится несколько примеров запросов, которые иллюстрируют шаблоны гибридных запросов.

Пример: гибридный поиск с фильтром

В этом примере добавляется фильтр, который применяется к filterable полям невектора индекса поиска.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "vectorFilterMode": "preFilter",
    "filter": "ParkingIncluded",
    "top": "10"
}

Ключевые моменты:

  • Фильтры применяются к содержимому фильтруемых полей. В этом примере поле ParkingIncluded является булевым, и оно помечается как filterable в схеме индекса.

  • В гибридных запросах фильтры можно применять перед выполнением запроса, чтобы уменьшить область запроса или после выполнения запроса, чтобы обрезать результаты. "preFilter" — значение по умолчанию. Чтобы использовать postFilter или strictPostFilter (предварительная версия), задайте режим обработки фильтра , как показано в этом примере.

  • При постфильтрации результатов запроса количество результатов может быть меньше, чем "top-n".

Справочник: filter | vectorFilterMode

Пример: Гибридный поиск с фильтрами, предназначенными для векторных подзапросов (предварительная версия)

Используя последнюю предварительную версию REST API, вы можете переопределить глобальный фильтр в запросе поиска, применяя дополнительный фильтр, предназначенный только для вложенных запросов вектора в гибридном запросе.

Эта функция обеспечивает точное управление, гарантируя, что фильтры влияют только на результаты векторного поиска, оставляя результаты поиска на основе ключевых слов не затронуты.

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

Чтобы применить целевые фильтры векторов, выполните указанные действия.

Ниже приведен пример гибридного запроса, который добавляет переопределение фильтра. Глобальный фильтр "Оценка больше 3" заменяется filterOverride во время выполнения.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-08-01-preview

{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "exhaustive": true,
            "filterOverride": "Address/City eq 'Seattle'",
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Address/City, Rating",
    "filter": "Rating gt 3",
    "debug": "vector",
    "top": 10
}

Если определение индекса включает семантическую конфигурацию, можно сформулировать запрос, включающий векторный поиск и поиск ключевых слов, с семантическим ранжированием по объединенному результирующему набору. При необходимости можно добавить подписи и ответы.

При использовании семантического ранжирования с векторами убедитесь, что k задано значение 50. Семантический рангер использует до 50 совпадений в качестве входных данных. Указание менее 50 лишает семантические модели ранжирования необходимых входных данных.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 50
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Tags",
    "queryType": "semantic",
    "semanticConfiguration": "my-semantic-config",
    "captions": "extractive",
    "answers": "extractive",
    "top": "50"
}

Ключевые моменты:

  • Семантический рангировщик принимает до 50 результатов из объединенного ответа.

  • Требуются "queryType" и "semanticConfiguration".

  • "субтитры" и "ответы" являются необязательными. Значения извлекаются из подробного текста в результатах. Ответ возвращается только в том случае, если результаты включают содержимое с характеристиками ответа на запрос.

Справочные материалы:queryType | semanticConfiguration | captions | answers

Пример: семантический гибридный поиск с фильтром

В этом примере фильтр добавляется в семантический гибридный ParkingIncluded запрос.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 50
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Tags",
    "queryType": "semantic",
    "semanticConfiguration": "my-semantic-config",
    "captions": "extractive",
    "answers": "extractive",
    "filter": "ParkingIncluded",
    "vectorFilterMode": "preFilter",
    "top": "50"
}

Ключевые моменты:

  • Режим фильтра может повлиять на количество результатов, доступных для семантического рангера. В качестве рекомендации укажите для семантического ранжировщика максимальное количество документов (50). Если префильтры или постфильтры слишком строгие, вы можете ограничить семантический ранжировщик, оставив ему для обработки менее 50 документов.

  • preFilter применяется перед выполнением запроса. Если префильтр уменьшает область поиска до 100 документов, векторный запрос выполняется по DescriptionVector полю для этих 100 документов, возвращая лучшие совпадения k=50. Эти 50 соответствующих документов затем передаются в RRF для объединенных результатов, а затем в семантический ранжировщик.

  • postFilter применяется после выполнения запроса. Если k=50 возвращает 50 совпадений на стороне векторного запроса, а затем после фильтра, примененного к 50 совпадений, ваши результаты сокращаются на количество документов, соответствующих критериям фильтра. Это оставляет вам меньше 50 документов для передачи в семантический ранжировщик. Имейте в виду, если вы используете семантическое ранжирование. Семантический рангировщик лучше всего работает, если у него есть 50 документов в качестве входных данных.

  • strictPostFilter (предварительная версия) применяется к нефильтрованнымk верхним результатам после выполнения запроса. Он всегда возвращает меньше или равно количеству документов k. Если нефильтрованный k=50 возвращает 50 нефильтрованных результатов, а фильтр соответствует 30 документам, в результирующем наборе возвращаются только 30 документов, даже если индекс содержит более 30 документов, соответствующих фильтру. Так как этот режим имеет наибольшее сокращение полноты, мы не рекомендуем использовать его с семантическим ранжированием.

Настройка ответа запроса

При настройке гибридного запроса думайте о структуре ответа. Поисковая система ранжирует соответствующие документы и возвращает наиболее релевантные результаты. Ответ — это плоский набор строк. Параметры запроса определяют, какие поля находятся в каждой строке и сколько строк в ответе.

Поля в ответе

Результаты поиска состоят из retrievable полей из индекса поиска. Результатом является либо:

  • Все retrievable поля (REST API по умолчанию).
  • Поля, явно перечисленные в параметре select запроса.

Примеры, приведенные в этой статье, использовали инструкцию select для указания полей текста (невектора) в ответе.

Примечание

Векторы не превращаются в читаемый человеком текст, поэтому их не следует возвращать в ответе. Вместо этого выберите невекторные поля, которые являются репрезентативными для документа поиска. Например, если запрос предназначен для поля DescriptionVector, возвращает эквивалентное текстовое поле, если в ответе есть одно ("Описание").

Количество результатов

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

  • "top": n результаты запросов только для ключевых слов (без вектора)
  • "k": n результаты запросов только для векторов
  • "top": n результаты гибридных запросов (с семантикой или без нее), которые включают параметр "search"

Оба k и top являются необязательными. Не указано, число результатов по умолчанию — 50. Вы можете задать параметры top и skip для навигации по дополнительным результатам или изменить значение по умолчанию.

Примечание

Если вы используете гибридный поиск в API 2024-05-01-preview, вы можете контролировать количество результатов из запроса ключевых слов с помощью maxTextRecallSize. Объедините это с настройкой для k, чтобы контролировать представление каждой подсистемы поиска (поиска по ключевым словам и вектора).

Результаты семантического ранжирования

Примечание

Семантический ранжировщик может обработать до 50 результатов.

Если вы используете семантический рангер в версии 2024-05-01-preview или более поздней версии, рекомендуется задать k и maxTextRecallSize так, чтобы в сумме давали хотя бы 50. Затем можно ограничить результаты, возвращенные пользователю, с помощью этого параметра top.

Если вы используете семантический рангировщик в версии API ранее 2024-05-01-preview, выполните следующие действия:

  • Для поиска только по ключевым словам (без векторов) установите top значение 50
  • Для гибридного поиска задано k значение 50, чтобы обеспечить получение по крайней мере 50 результатов семантического ранджера.

Рейтинг

Для гибридных запросов создается несколько наборов с необязательной семантической перенарировкой. Ранжирование результатов вычисляется с помощью Reciprocal Rank Fusion (RRF).

В этом разделе сравнивайте ответы между одним векторным поиском и простым гибридным поиском верхнего результата. В этом случае различные алгоритмы ранжирования, метрика сходства HNSW и RRF, создают оценки, имеющие разные величины. Это поведение задумано так. Оценки RRF могут показаться довольно низкими, даже при высоком уровне сходства. Более низкие оценки являются характеристикой алгоритма RRF. В гибридном запросе с RRF в результаты включается больше обратных величин ранжированных документов вследствие того, что ранжированные документы RRF имеют относительно меньший показатель по сравнению с чистым векторным поиском.

Поиск одного вектора: @search.score для результатов, упорядоченных по подобию косинуса (по умолчанию функция расстояния сходства векторов).

{
    "@search.score": 0.8399121,
    "HotelId": "49",
    "HotelName": "Swirling Currents Hotel",
    "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
    "Category": "Luxury",
    "Address": {
    "City": "Arlington"
    }
}

Гибридный поиск: @search.score для гибридных результатов, ранжированных с использованием метода Reciprocal Rank Fusion.

{
    "@search.score": 0.032786883413791656,
    "HotelId": "49",
    "HotelName": "Swirling Currents Hotel",
    "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
    "Category": "Luxury",
    "Address": {
    "City": "Arlington"
    }
}

Устранение неполадок гибридных запросов

Используйте следующую таблицу для диагностики распространенных проблем с гибридными запросами.

Проблема Возможная причина Разрешение
Пустые результаты Несоответствие имени поля вектора или отсутствие данных индекса Убедитесь, что fields в vectorQueries соответствует векторному полю в схеме вашего индекса. Убедитесь, что документы содержат векторные данные.
Низкие оценки RRF Обычное поведение RRF Оценки RRF по сути ниже, чем оценки сходства. Оценка 0,03 по-прежнему может указывать на сильный матч.
Векторные результаты доминируют Текстовый запрос неэффективен Увеличьте maxTextRecallSize, чтобы включить больше результатов BM25, либо настройте векторный вес.
Результаты текста доминируют Слишком низкая сходство векторов Проверьте качество внедрения. Убедитесь, что вектор запросов использует ту же модель, что и векторы документов.
Семантический рангер возвращает меньше результатов Недостаточно входных документов Установите k значение не менее 50 при использовании семантического ранжирования. Убедитесь, что фильтры не слишком строги.
Фильтр не применяется к векторам Использование только глобального фильтра Для векторной фильтрации используйте filterOverride в векторном запросе (предварительный просмотр).
Неожиданное поле в результатах select отсутствующий параметр Добавьте select , чтобы указать, какие поля следует возвращать. Исключите поля векторов для удобства чтения.