Azure AI 検索でインデックスを管理する

Note

Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。

インデックスを作成したら、Azure ポータルを使用して統計と定義にアクセスしたり、検索サービスから削除したりできます。

インデックスを作成した後、Azure AI 検索 REST API を使用して統計と定義にアクセスしたり、検索サービスから削除することができます。

インデックスを作成した後、 .NET、Java、JavaScript、またはPythonのAzure SDKを使用して、統計情報にアクセスしたり、検索サービスから削除したりすることができます。

この記事では、コンテンツに影響を与えずにインデックスを管理する方法について説明します。 インデックス定義の変更に関するガイダンスについては、「Azure AI 検索を参照してください。

制限事項

検索サービスの価格レベルによって、インデックス、フィールド、ドキュメントの最大数とサイズが決まります。 詳細については、「Azure AI 検索 でのサービスの制限」を参照してください。

それ以外の場合は、インデックス管理に次の制限が適用されます。

  • メンテナンスのためにインデックスをオフラインにすることはできません。 インデックスは常に検索操作に使用できます。

  • 検索サービス内または検索サービス間でインデックスを直接コピーまたは複製することはできません。 ただし、.NET または Python のバックアップと復元のサンプルを使用して、同様の機能を実現できます。

すべてのインデックスを表示する

すべてのインデックスを表示するには:

  1. Azure ポータルで検索サービスに移動します。

  2. 左側のウィンドウで、[検索の管理] >[インデックス] を選択します。

    ポータルの [インデックス] ページのスクリーンショット。

    既定では、インデックスは名前で昇順に並べ替えられます。 対応する列ヘッダーを選択することで、名前、ドキュメント数、ベクター インデックス クォータ使用量、または合計ストレージ サイズで並べ替えることができます。

インデックス - リスト (REST API) を使用して、検索サービスのすべてのインデックスを取得します。

### List all indexes
GET https://[service name].search.windows.net/indexes?api-version=[api version]
    Content-Type: application/json
    api-key: [admin key]

任意のAzure SDKを使用して、検索サービスのすべてのインデックスを取得します。

.NETのAzure SDKは、このタスクにGetIndexesAsyncを提供します。

// Create a SearchIndexClient
var endpoint = new Uri("[service endpoint]");
var credential = new AzureKeyCredential("[admin key]");
var indexClient = new SearchIndexClient(endpoint, credential);

// List all indexes
await foreach (var index in indexClient.GetIndexesAsync())
{
    Console.WriteLine(index.Name);
}

インデックスの統計を表示する

インデックス ページで、ポータルには次の統計情報が表示されます。

  • インデックス内のドキュメントの数。
  • インデックスによって使用されるストレージ領域。
  • インデックスによって使用されるベクターストレージ領域。
  • 検索サービスの各インデックスの最大ストレージ領域 。 価格レベルによって異なります。 この値は、インデックスで現在使用できるストレージの合計を表すわけではありません。

ポータルのインデックス統計のスクリーンショット。

インデックスの使用 - 統計の取得 (REST API) を使用して、インデックスのドキュメント数、ストレージ使用量、およびベクター ストレージの使用状況を取得します。

### Get index statistics
GET https://[service name].search.windows.net/indexes/[index name]/stats?api-version=[api version]
    Content-Type: application/json
    api-key: [admin key]

任意のAzure SDKを使用して、インデックスのドキュメント数、ストレージ使用量、およびベクター ストレージの使用状況を取得します。

.NETのAzure SDKは、このタスクにGetIndexStatisticsAsyncを提供します。

// Create a SearchIndexClient
var endpoint = new Uri("[service endpoint]");
var credential = new AzureKeyCredential("[admin key]");
var indexClient = new SearchIndexClient(endpoint, credential);

// Get index statistics
var statsResponse = await indexClient.GetIndexStatisticsAsync("[index name]");
var stats = statsResponse.Value;
Console.WriteLine($"Number of documents: {stats.DocumentCount:N0}");
Console.WriteLine($"Storage consumed by index: {stats.StorageSize:N0} bytes");
Console.WriteLine($"Storage consumed by vectors: {stats.VectorIndexSize:N0} bytes");

インデックスの定義を表示する

各インデックスは、アナライザー、ノーマライザー、トークナイザー、シノニム マップなどの検索機能を強化するフィールドとオプションコンポーネントによって定義されます。 この定義は、インデックス作成とクエリ中のインデックスの構造と動作を決定します。

インデックス ページで、[JSON の 編集] を選択して、その完全な定義を表示します。

ポータルの [JSON の編集] ボタンのスクリーンショット。

インデックス - Get (REST API) を使用して、インデックスの JSON 定義を取得します。

### Get index definition
GET https://[service name].search.windows.net/indexes/[index name]?api-version=[api version]
    Content-Type: application/json
    api-key: [admin key]

任意のAzure SDKを使用して、インデックスの JSON 定義を取得します。

.NETのAzure SDKは、このタスクにGetIndexAsyncを提供します。

// Create a SearchIndexClient
var endpoint = new Uri("[service endpoint]");
var credential = new AzureKeyCredential("[admin key]");
var indexClient = new SearchIndexClient(endpoint, credential);

// Get index definition
var index = await indexClient.GetIndexAsync("[index name]");
string indexJson = JsonSerializer.Serialize(index.Value, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(indexJson);

インデックスの削除

Warnung

インデックスの削除を元に戻すことはできません。 先に進む前に、検索サービスからインデックスとそのドキュメントを完全に削除する必要があることを確認します。

インデックス ページで、[ 削除 ] を選択して削除プロセスを開始します。

ポータルの [削除] ボタンのスクリーンショット。

削除の確認を求めるメッセージがポータルに表示されます。 [ 削除] を選択した後、通知を確認して、削除が成功したことを確認します。

ポータルでの削除確認のスクリーンショット。

インデックスを完全に削除するには、インデックス - 削除 (REST API) を使用します。

### Delete an index
DELETE https://[service name].search.windows.net/indexes/[index name]?api-version=[api version]
    Content-Type: application/json
    api-key: [admin key]

インデックスが正常に削除された場合は、 HTTP/1.1 204 No Content 応答を受け取ります。

任意のAzure SDKを使用して、インデックスを完全に削除します。

.NETのAzure SDKは、このタスクにDeleteIndexAsyncを提供します。

// Create a SearchIndexClient
var endpoint = new Uri("[service endpoint]");
var credential = new AzureKeyCredential("[admin key]");
var indexClient = new SearchIndexClient(endpoint, credential);

// Delete the index
await indexClient.DeleteIndexAsync("[index name]");
Console.WriteLine("Index deleted successfully.");