Страница с результатами списка Поиск с использованием ИИ Azure (предварительная версия)

Note

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

Important

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

Используя 2026-08-01-preview REST API, применяйте пагинацию с помощью курсора (предварительная версия), чтобы перечислять поддерживаемые ресурсы службы по одной странице за раз. Служба возвращает непрозрачный URL-адрес продолжения, когда доступны дополнительные результаты.

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

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

  • Последний пакет предварительной версии Azure.Search.Documents: dotnet add package Azure.Search.Documents --prerelease

  • Для аутентификации без использования ключа пакет Azure.Identity: dotnet add package Azure.Identity

    Note

    Клиентская библиотека должна поддерживать 2026-08-01-preview версию REST API службы поиска. Более ранние версии не предоставляют параметры курсора, показанные в этой статье.

  • Последний пакет предварительной версии azure-search-documents: pip install --pre azure-search-documents

  • Для аутентификации без использования ключа пакет azure-identity: pip install azure-identity

    Note

    Клиентская библиотека должна поддерживать 2026-08-01-preview версию REST API службы поиска. Более ранние версии не предоставляют параметры курсора, показанные в этой статье.

  • 2026-08-01-preview — версия REST API службы поиска.

  • Для проверки подлинности без ключа добавьте маркер Microsoft Entra ID в Authorization заголовок каждого HTTP-запроса.

Выберите операцию со списком

2026-08-01-preview Контракт курсора применяется к следующим операциям списка:

Operation Путь к ресурсу
Список псевдонимов /aliases
Перечисление источников данных /datasources
Список индексаторов /indexers
Список индексов /indexes
Статистика индексов списка /indexstats
Перечисление баз знаний /knowledgebases
Список источников знаний /knowledgesources
Список файлов-источников знаний /knowledgesources('{knowledge-source-name}')/files
Список наборов навыков /skillsets
Список карт синонимов /synonymmaps

Запросить и подписаться на страницы

В следующем примере перечислены индексы, имена которых начинаются с hotels и запрашивают до 50 индексов на страницу. Итерации AsyncPageable<SearchIndex> результата автоматически запрашивают каждую следующую страницу.

using System;
using Azure;
using Azure.Identity;
using Azure.Search.Documents;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.Models;

string endpoint = Environment.GetEnvironmentVariable(
    "AZURE_SEARCH_ENDPOINT")!;

var options = new SearchClientOptions(
    SearchClientOptions.ServiceVersion.V2026_08_01_Preview);
var client = new SearchIndexClient(
    new Uri(endpoint),
    new AzureCliCredential(),
    options);

AsyncPageable<SearchIndex> indexes = client.GetIndexesAsync(
    search: "hotels",
    pageSize: 50,
    searchType: ListingSearchType.Prefix);

await foreach (SearchIndex index in indexes)
{
    Console.WriteLine(index.Name);
}

Reference:SearchIndexClient.GetIndexesAsync

В следующем примере перечислены индексы, имена которых начинаются с hotels и запрашивают до 50 индексов на страницу. Итерации ItemPaged результата автоматически запрашивают каждую следующую страницу.

import os

from azure.identity import AzureCliCredential
from azure.search.documents.indexes import SearchIndexClient

endpoint = os.getenv("AZURE_SEARCH_ENDPOINT")

with SearchIndexClient(
    endpoint,
    AzureCliCredential(),
    api_version="2026-08-01-preview",
) as client:
    indexes = client.list_indexes(
        select=["name"],
        search="hotels",
        page_size=50,
        search_type="prefix",
    )
    for index in indexes:
        print(index.name)

Справочник:SearchIndexClient.list_indexes

Отправьте первоначальный запрос в список индексов, имена которых начинаются с hotels. Запрос возвращает до 50 имен индексов:

GET https://<search-service-name>.search.windows.net/indexes?api-version=2026-08-01-preview&search=hotels&searchType=prefix&pageSize=50&$select=name
Authorization: Bearer <access-token>
Accept: application/json

Справочник:Список индексов

Если существуют более 50 сопоставленных индексов, ответ включает в себя @odata.nextLink, который содержит полный URL-адрес продолжения и непрозрачный маркер. Следующий ответ сокращен:

{
  "value": [
    {
      "name": "<index-name>"
    }
  ],
  "@odata.nextLink": "https://<search-service-name>.search.windows.net/indexes?api-version=2026-08-01-preview&searchType=prefix&%24select=name&%24skiptoken=<opaque-token>"
}

Чтобы запросить следующую страницу, отправьте GET-запрос по полному значению @odata.nextLink в точности в том виде, в котором оно было возвращено. Сохраните один и тот же заголовок проверки подлинности:

GET <[email protected]>
Authorization: Bearer <access-token>
Accept: application/json

Справочник:Список индексов

Ответ терминала содержит окончательные имена индексов и не содержит @odata.nextLink, что указывает на отсутствие дополнительных страниц. Порядок результатов не является частью контракта курсора:

{
  "value": [
    {
      "name": "<next-index-name>"
    }
  ]
}

Управление поведением курсора

  • Определите окончательную страницу: Продолжайте разбиение по страницам только в то время как ответ содержит @odata.nextLink. На странице терминала отсутствует это свойство, а ответы не включают @odata.count.

  • Сохраняйте состояние продолжения: Используйте полный @odata.nextLink точно в том виде, в котором он был возвращён. Не создавайте, не изменяйте, не декодируйте и не используйте повторно его $skiptoken. Токен поддерживает только пагинацию вперёд.

  • Изменение параметров запроса: Запустите новый начальный запрос, чтобы изменить путь к ресурсу, версию API, префикс поиска, выбранные свойства или размер страницы. Объединение $skiptoken с search или pageSize возвращает HTTP 400.

  • Учетная запись для изменений коллекции: Переадресация по страницам стабильна только в то время как коллекция остается неизменной. Добавление, обновление или удаление ресурсов во время перечисления может создавать повторяющиеся или опущенные результаты.