Azure AI 検索でナレッジ ベースを作成する

メモ

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

メモ

このエージェント検索機能は、プログラムによるアクセスを介して 2026-04-01 REST API で一般提供されています。 Azure ポータルと foundry ポータルMicrosoftは、引き続きすべてのエージェント検索機能へのプレビュー専用アクセスを提供します。 移行のガイダンスについては、「 エージェントの取得コードを最新バージョンに移行する」を参照してください。

プレビュー REST API を使用する場合は、この機能ではまだ一般公開されていない機能にアクセスできます。 プレビュー機能は、サービス レベル アグリーメントなしで提供され、運用環境のワークロードには推奨されません。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。

重要

これらの機能は、2026-08-01-preview REST API の一部です。 2026-08-01-preview は、Azure サブスクリプションの一部としてユーザーにライセンス付与され、Microsoft製品使用条件Microsoft製品およびサービス データ保護補遺 ("DPA")、および Microsoft Azure プレビューの追加使用条件に適用される条件に従います。

2026-08-01-preview では、他のMicrosoft サービスやサード パーティのサービスへの接続がサポートされています。 これらのサービスの利用は各サービスの利用規約に従うものとし、データが Azure コンプライアンス境界の外部で処理または保存されたり、Azure コンプライアンス境界内に流入したりする場合があります。

データが組織のコンプライアンスと地理的境界の外部に流れるかどうか、および関連する影響、および適切なアクセス許可、境界、承認がプロビジョニングされるかどうかを管理するのは、お客様の責任です。

特定のユース ケースのコンテキストで構築したアプリケーションを慎重に確認およびテストし、すべての適切な決定とカスタマイズを行う責任があります。 これには、メタプロンプト、コンテンツ フィルター、その他の安全システムなどの独自の責任ある AI 軽減策の実装や、アプリケーションが適切な品質、信頼性、セキュリティ、信頼性の標準を満たしていることを確認する機能が含まれます。 詳細については、「Azure AI 検索透過性に関するメモを参照してください。

Azure AI 検索では、knowledge base は、agentic 取得を調整する最上位のオブジェクトです。 クエリを実行するナレッジ ソースと、取得操作の既定の動作を定義します。 クエリ時に、 取得メソッド はナレッジ ベースをターゲットにして、構成された取得パイプラインを実行します。

ナレッジ ベースでは、次の項目を指定します。

  • 検索可能なコンテンツを指す 1 つ以上のナレッジ ソース。

  • クエリ計画、応答合成、または Web コンテンツの要約のためのオプションの LLM。 サポートされるタスクは、API のバージョンとナレッジ ソースの種類によって異なります。

  • ルーティング、ソースの選択、およびオブジェクトの暗号化を制御するカスタム プロパティ。

利用サポート

Azure Portal Microsoft Foundry ポータル .NET SDK Python SDK Java SDK JavaScript SDK REST API
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

前提 条件

  • Azure AI 検索 を利用できる任意のエージェンティック検索を提供する領域。 デプロイされたモデルへのロールベースのアクセスに マネージド ID を 使用している場合は、検索サービスが Basic レベル以上である必要があります。

  • 1 つ以上の ナレッジ ソース2026-08-01-preview API バージョンを使用して、プレビューのナレッジ ソースにアクセスしたり、Web 以外のナレッジ ソースで LLM を使用したりします。 一般公開されているナレッジ ソースと最小限の抽出取得には、 2026-04-01 API バージョンを使用します。

  • (条件付き) サポートされた LLM デプロイを使用した Azure OpenAI。 ナレッジ ベースに Web ナレッジ ソースが含まれている場合は、LLM が必要です。 その他のナレッジ ソースの場合、LLM は 2026-08-01-preview API バージョンでは省略可能であり、 2026-04-01 API バージョンではサポートされていません。

  • ナレッジ ベースを作成するためのアクセス許可。 ユーザー アカウントに割り当てられた Search Service 共同作成者ロール (推奨) を使用してキーレス認証を構成するか、管理者 API キーを使用します。

  • ナレッジ ベースで LLM が指定されている場合、検索サービスには、Microsoft Foundry リソースに対する Cognitive Services ユーザーアクセス許可を持つマネージド ID が必要です。

  • 必須Azure.Search.Documents パッケージ:

    • 2026-08-01-preview機能の場合、最新のプレビュー パッケージ:dotnet add package Azure.Search.Documents --prerelease

    • 2026-04-01機能の場合、最新の安定したパッケージ:dotnet add package Azure.Search.Documents

  • キーレス認証の場合、 Azure.Identity パッケージは次のようになります。 dotnet add package Azure.Identity

  • 必須azure-search-documents パッケージ:

    • 2026-08-01-preview機能の場合、最新のプレビュー パッケージ:pip install --pre azure-search-documents

    • 2026-04-01機能の場合、最新の安定したパッケージ:pip install azure-search-documents

  • キーレス認証の場合、 azure-identity パッケージは次のようになります。 pip install azure-identity

  • 必要な Search Service REST API のバージョン:

  • キーレス認証の場合は、各 HTTP 要求の Authorization ヘッダーにMicrosoft Entra ID トークンを含めます。

サポートされているモデル

Azure OpenAI の次のいずれかの LLM を Foundry モデルで使用します。 Azure OpenAI は、選択したデプロイのリージョンの可用性を決定します。 デプロイ手順については、Microsoft Foundry モデルを Foundry ポータルでデプロイするドキュメントを参照してください。

GPT-4 ファミリは非推奨です。 モデル ライフサイクル ガイダンス、提供終了日、および現在の状態については、「モデルの提供終了と廃止」および「モデル提供終了スケジュール - Microsoft Foundry」を参照してください。

Model サポートされる API バージョン
gpt-4o (非推奨) 2025-11-01-preview、2026-05-01-preview、2026-08-01-preview
gpt-4o-mini (非推奨) 2025-11-01-preview、2026-05-01-preview、2026-08-01-preview
gpt-4.1 (非推奨) 2025-11-01-preview、2026-05-01-preview、2026-08-01-preview
gpt-4.1-mini (非推奨) 2025-11-01-preview、2026-05-01-preview、2026-08-01-preview
gpt-4.1-nano (非推奨) 2025-11-01-preview、2026-05-01-preview、2026-08-01-preview
gpt-5 2025-11-01-preview、2026-05-01-preview、2026-08-01-preview
gpt-5-mini 2025-11-01-preview、2026-05-01-preview、2026-08-01-preview
gpt-5-nano 2025-11-01-preview、2026-05-01-preview、2026-08-01-preview
gpt-5.1 2026-05-01-preview、2026-08-01-preview
gpt-5.2 2026-05-01-preview、2026-08-01-preview
gpt-5.4 2026-05-01-preview、2026-08-01-preview
gpt-5.4-mini 2026-05-01-preview、2026-08-01-preview
gpt-5.4-nano 2026-05-01-preview、2026-08-01-preview
gpt-5.5 2026-08-01-preview
gpt-5.6-sol 2026-08-01-preview
gpt-5.6-terra 2026-08-01-preview
gpt-5.6-luna 2026-08-01-preview

アクセスの構成

Azure AI 検索 は、Foundry Models 内の Azure OpenAI の LLM にアクセスする必要があります。 認証用にMicrosoft Entra IDし、承認用にロールベースのアクセスを行うことをお勧めします。 ロールを割り当てるには、 所有者またはユーザー アクセス管理者である必要があります。 ロールを使用できない場合は、代わりにキーベースの認証を使用してください。

  1. Azure AI 検索でロールベースのアクセス制御を有効にします

  2. Azure AI 検索 をマネージド ID で構成する

  3. モデル プロバイダーで、検索サービスのマネージド ID に Cognitive Services ユーザー を割り当てます。 ローカルでテストする場合は、同じロールをユーザー アカウントに割り当てます。

  4. ローカル テストの場合は、「 クイック スタート: キーなしで接続 して特定のサブスクリプションとテナントにサインインする」の手順に従います。 各要求でAzureKeyCredentialの代わりにDefaultAzureCredentialを使用します。これは次の例のようになります。

    // Authenticate using roles
    using Azure.Search.Documents.Indexes;
    using Azure.Identity;
    
    var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());
    
  1. Azure AI 検索でロールベースのアクセス制御を有効にします

  2. Azure AI 検索 をマネージド ID で構成する

  3. モデル プロバイダーで、検索サービスのマネージド ID に Cognitive Services ユーザー を割り当てます。 ローカルでテストする場合は、同じロールをユーザー アカウントに割り当てます。

  4. ローカル テストの場合は、「 クイック スタート: キーなしで接続 して特定のサブスクリプションとテナントにサインインする」の手順に従います。 各要求でAzureKeyCredentialの代わりにDefaultAzureCredentialを使用します。これは次の例のようになります。

    # Authenticate using roles
    from azure.identity import DefaultAzureCredential
    index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())
    
  1. Azure AI 検索でロールベースのアクセス制御を有効にします

  2. Azure AI 検索 をマネージド ID で構成する

  3. モデル プロバイダーで、検索サービスのマネージド ID に Cognitive Services ユーザー を割り当てます。 ローカルでテストする場合は、同じロールをユーザー アカウントに割り当てます。

  4. ローカル テストの場合は、「 クイック スタート: キーなしで接続 して、特定のサブスクリプションとテナントの個人用アクセス トークンを取得する」の手順に従います。 各要求でアクセス トークンを指定します。これは次の例のようになります。

    # List indexes using roles
    GET {{search-endpoint}}/indexes?api-version=2026-04-01
    Content-Type: application/json
    Authorization: Bearer {{search-access-token}}
    

重要

この記事のコード スニペットでは、キーレス認証を使用します。 代わりに API キーを使用するには、それに応じて各要求を更新します。 両方の方法を指定する要求では、API キーが優先されます。

既存のナレッジ ベースを確認する

ナレッジ ベースは、最上位の再利用可能なオブジェクトです。 既存のナレッジ ベースについて知ることは、新しいオブジェクトを再利用または名前付けする場合に役立ちます。

次のコードを実行して、既存のナレッジ ベースを名前で一覧表示します。 この一覧には、作成に使用した API バージョンに関係なく、検索サービスのすべてのナレッジ ベースが含まれます。

// List knowledge bases by name
using Azure.Search.Documents.Indexes;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
var knowledgeBases = indexClient.GetKnowledgeBasesAsync();

Console.WriteLine("Knowledge Bases:");

await foreach (var kb in knowledgeBases)
{
    Console.WriteLine($"  - {kb.Name}");
}

Reference:SearchIndexClient

# List knowledge bases by name
from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())

for kb in index_client.list_knowledge_bases():
    print(f"  - {kb.name}")

Reference:SearchIndexClient

# List knowledge bases
GET {{search-endpoint}}/knowledgebases?api-version={{api-version}}&$select=name
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

リファレンス:ナレッジ ベース - リスト

名前で 1 つのナレッジ ベースを返して、その JSON 定義を確認することもできます。

using Azure.Search.Documents.Indexes;
using System.Text.Json;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);

// Specify the knowledge base name to retrieve
string kbNameToGet = "earth-knowledge-base";

// Get a specific knowledge base definition
var knowledgeBaseResponse = await indexClient.GetKnowledgeBaseAsync(kbNameToGet);
var kb = knowledgeBaseResponse.Value;

// Serialize to JSON for display
string json = JsonSerializer.Serialize(kb, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(json);

Reference:SearchIndexClient

# Get a knowledge base definition
from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
import json

index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())

kb = index_client.get_knowledge_base("<knowledge-base-name>")
print(json.dumps(kb.as_dict(), indent = 2))

Reference:SearchIndexClient

# Get knowledge base
GET {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

リファレンス:ナレッジ ベース - 取得

次の JSON は、ナレッジ ベースに対する応答の例です。

{
  "name": "my-kb",
  "description": "A sample knowledge base.",
  "retrievalInstructions": null,
  "answerInstructions": null,
  "outputMode": null,
  "knowledgeSources": [
    {
      "name": "my-blob-ks"
    }
  ],
  "models": [],
  "encryptionKey": null,
  "retrievalReasoningEffort": {
    "kind": "low"
  }
}

メモ

応答スキーマには、ナレッジ ベースの作成に使用した API バージョンが反映されます。 一般提供 2026-04-01 API バージョンで作成されたナレッジ ベースは、 2026-08-01-previewよりも狭い定義を返します。 各バージョンでサポートされるプロパティの詳細については、「 ナレッジ ベースの作成」を参照してください。

ナレッジ ベースを作成する

重要

2026-04-01 API バージョンでは、一般公開されているナレッジ ソースの種類のみを受け入れ、最小限の抽出取得がサポートされます。 クエリ計画、回答合成、構成可能な推論作業など、プレビューのみの機能はサポートされていません。 完全な機能を使用するには、 2026-08-01-previewを使用します。

ナレッジベースは、Foundry Models において、検索可能なコンテンツである 1 つ以上のナレッジソースを、Azure OpenAI のオプションの LLM に接続します。 設定したプロパティは、クエリの実行と取得応答の既定値を設定します。

ナレッジ ベースを作成した後は、いつでもそのプロパティを更新できます。 ナレッジ ベースが使用中の場合、更新は次の取得に有効になります。

// Create a knowledge base
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;
using Azure.Identity;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());

var aoaiParams = new AzureOpenAIVectorizerParameters
{
    ResourceUri = new Uri(aoaiEndpoint),
    DeploymentName = aoaiGptDeployment,
    ModelName = aoaiGptModel,
};

var knowledgeBase = new KnowledgeBase(
    name: "my-kb",
    knowledgeSources: new KnowledgeSourceReference[]
    {
        new KnowledgeSourceReference("hotels-ks"),
        new KnowledgeSourceReference("earth-at-night-ks")
    }
)
{
    Description = "This knowledge base handles questions directed at two unrelated sample indexes.",
    RetrievalInstructions = "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
    AnswerInstructions = "Answer in two concise sentences.",
    OutputMode = KnowledgeRetrievalOutputMode.AnswerSynthesis,
    Models = { new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: aoaiParams) },
    RetrievalReasoningEffort = new KnowledgeRetrievalAutoReasoningEffort()
};

await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);
Console.WriteLine($"Knowledge base '{knowledgeBase.Name}' created or updated successfully.");

リファレンス:SearchIndexClientKnowledgeBase

# Create a knowledge base
from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    AzureOpenAIVectorizerParameters,
    KnowledgeBase,
    KnowledgeBaseAzureOpenAIModel,
    KnowledgeSourceReference,
)
from azure.search.documents.knowledgebases.models import (
    KnowledgeRetrievalAutoReasoningEffort,
    KnowledgeRetrievalOutputMode,
)

index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())

aoai_params = AzureOpenAIVectorizerParameters(
    resource_url = "<aoai-endpoint>",
    deployment_name = "<aoai-gpt-deployment>",
    model_name = "<aoai-gpt-model>",
)

knowledge_base = KnowledgeBase(
    name = "my-kb",
    description = "This knowledge base handles questions directed at two unrelated sample indexes.",
    retrieval_instructions = "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
    answer_instructions = "Answer in two concise sentences.",
    output_mode = KnowledgeRetrievalOutputMode.ANSWER_SYNTHESIS,
    knowledge_sources = [
        KnowledgeSourceReference(name = "hotels-ks"),
        KnowledgeSourceReference(name = "earth-at-night-ks"),
    ],
    models = [KnowledgeBaseAzureOpenAIModel(azure_open_ai_parameters = aoai_params)],
    encryption_key = None,
    retrieval_reasoning_effort = KnowledgeRetrievalAutoReasoningEffort(),
)

index_client.create_or_update_knowledge_base(knowledge_base)
print(f"Knowledge base '{knowledge_base.name}' created or updated successfully.")

リファレンス:SearchIndexClientKnowledgeBase

# Create a knowledge base
PUT {{search-endpoint}}/knowledgebases/my-kb?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
    "name" : "my-kb",
    "description": "This knowledge base handles questions directed at two unrelated sample indexes.",
    "retrievalInstructions": "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
    "answerInstructions": "Answer in two concise sentences.",
    "outputMode": "answerSynthesis",
    "knowledgeSources": [
        {
            "name": "hotels-ks"
        },
        {
            "name": "earth-at-night-ks"
        }
    ],
    "models" : [
        {
            "kind": "azureOpenAI",
            "azureOpenAIParameters": {
                "resourceUri": "{{aoai-endpoint}}",
                "deploymentId": "gpt-5.4-mini",
                "modelName": "gpt-5.4-mini"
            }
        }
    ],
    "encryptionKey": null,
    "retrievalReasoningEffort": {
        "kind": "auto"
    }
}

リファレンス:ナレッジ ベース - 作成または更新

既定の取得制限を構成する (プレビュー)

2026-08-01-preview API バージョン以降では、省略可能な retrieveDefaults オブジェクトを使用して、要求全体の既定値をナレッジ ベースに格納できます。 格納されている各プロパティは、取得要求で対応する要求フィールドが省略されている場合にのみ適用されます。

格納プロパティ 要求フィールドの取得
maxRuntimeInSeconds maxRuntimeInSeconds
maxOutputDocuments maxOutputDocuments
maxOutputSizeInTokens maxOutputSize

出力トークンの予算では、格納およびオーバーライドされるときに異なるプロパティ名が使用されます。 retrieveDefaultsmaxOutputSizeInTokensを設定し、取得要求でmaxOutputSizeを使用します。

各プロパティの有効な値は、次の順序で個別に決定されます。

  1. 取得要求の対応する値。
  2. ナレッジ ベースの retrieveDefaults オブジェクトの値。
  3. 両方のレベルでプロパティが指定されていない場合のサービスの既定値。

次の例では、 your-knowledge-sourceという名前の既存の検索インデックスナレッジ ソースを使用します。 45 秒のランタイム予算、最大 8 つの出力ドキュメント、12,000 トークンの出力予算が格納されます。

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

string searchEndpoint = "<search-endpoint>";

var options = new SearchClientOptions(
    SearchClientOptions.ServiceVersion.V2026_08_01_Preview);
var indexClient = new SearchIndexClient(
    new Uri(searchEndpoint),
    new DefaultAzureCredential(),
    options);

var knowledgeBase = new KnowledgeBase(
    "your-knowledge-base",
    new[] { new KnowledgeSourceReference("your-knowledge-source") })
{
    Description = "A knowledge base for product support content.",
    RetrieveDefaults = new KnowledgeBaseRetrieveDefaults
    {
        MaxRuntimeInSeconds = 45,
        MaxOutputDocuments = 8,
        MaxOutputSizeInTokens = 12000
    }
};

await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);

Reference:SearchIndexClientSearchClientOptions.ServiceVersionKnowledgeBase

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    KnowledgeBase,
    KnowledgeBaseRetrieveDefaults,
    KnowledgeSourceReference,
)

search_endpoint = "<search-endpoint>"
index_client = SearchIndexClient(
    endpoint=search_endpoint,
    credential=DefaultAzureCredential(),
    api_version="2026-08-01-preview",
)

knowledge_base = KnowledgeBase(
    name="your-knowledge-base",
    description="A knowledge base for product support content.",
    knowledge_sources=[
        KnowledgeSourceReference(name="your-knowledge-source"),
    ],
    retrieve_defaults=KnowledgeBaseRetrieveDefaults(
        max_runtime_in_seconds=45,
        max_output_documents=8,
        max_output_size_in_tokens=12000,
    ),
)

index_client.create_or_update_knowledge_base(knowledge_base)

リファレンス:SearchIndexClientKnowledgeBase

PUT {{search-endpoint}}/knowledgebases/your-knowledge-base?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
  "name": "your-knowledge-base",
  "description": "A knowledge base for product support content.",
  "knowledgeSources": [
    {
      "name": "your-knowledge-source"
    }
  ],
  "retrieveDefaults": {
    "maxRuntimeInSeconds": 45,
    "maxOutputDocuments": 8,
    "maxOutputSizeInTokens": 12000
  }
}

リファレンス:ナレッジ ベース - 作成または更新

これらの格納された値を、1 つの要求に対して 20 秒、1 つのドキュメント、5,000 個のトークンでオーバーライドするには、「 ナレッジ ベースが既定値を取得することを確認する」を参照してください。

ブラウザーベースの取得呼び出し用に CORS を構成する (プレビュー)

重要

クロスオリジン リソース共有 (CORS) を使用すると、ブラウザー ベースのアプリケーションがサービスに直接データを要求できます。 CORS 構成によっては、外部 Web ページがユーザーのブラウザー コンテキストを使用してサービスとそのデータにアクセスまたは呼び出される場合があります。 このアクセスにより、セキュリティ上の脅威が発生する可能性があります。 CORS の有効化は、ご自身の責任で行ってください。

2026-05-01-preview API バージョン以降、ナレッジ ベースでは、JavaScript から直接取得アクションを呼び出すブラウザー ベースのアプリケーションのcorsOptionsを定義できます。 CORS ポリシーは、取得要求をナレッジ ベースに送信できるブラウザーの配信元を識別します。

corsOptionsを省略すると、ナレッジ ベースには CORS ポリシーがなく、ブラウザーはクロスオリジン取得要求をブロックします。

次の例では、1 つのブラウザーの配信元から要求を取得できるナレッジ ベースを作成します。

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

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());

var knowledgeBase = new KnowledgeBase(
    name: "browser-chat-kb",
    knowledgeSources: new[] { new KnowledgeSourceReference("product-docs-ks") }
)
{
    Description = "A knowledge base that allows one browser app origin.",
    CorsOptions = new CorsOptions(new[] { "https://myapp.example.com" })
    {
        MaxAgeInSeconds = 300
    }
};

await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);

Reference:CorsOptionsKnowledgeBase

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    CorsOptions,
    KnowledgeBase,
    KnowledgeSourceReference,
)

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())

knowledge_base = KnowledgeBase(
    name="browser-chat-kb",
    description="A knowledge base that allows one browser app origin.",
    knowledge_sources=[KnowledgeSourceReference(name="product-docs-ks")],
    cors_options=CorsOptions(
        allowed_origins=["https://myapp.example.com"],
        max_age_in_seconds=300,
    ),
)

index_client.create_or_update_knowledge_base(knowledge_base)

Reference:CorsOptionsKnowledgeBase

PUT {{search-endpoint}}/knowledgebases/browser-chat-kb?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
  "name": "browser-chat-kb",
  "description": "A knowledge base that allows one browser app origin.",
  "knowledgeSources": [
    {
      "name": "product-docs-ks"
    }
  ],
  "corsOptions": {
    "allowedOrigins": [
      "https://myapp.example.com"
    ],
    "maxAgeInSeconds": 300
  }
}

ナレッジ ベースのクエリを実行する

ナレッジ ベースを作成したら、 取得アクションまたは MCP エンドポイント を呼び出してクエリを実行します。

ナレッジ ベースを削除する

ナレッジ ベースが不要になった場合、または検索サービスでナレッジ ベースを再構築する必要がなくなった場合は、次のコードを実行してオブジェクトを削除します。

// Delete a knowledge base
using Azure.Search.Documents.Indexes;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);

await indexClient.DeleteKnowledgeBaseAsync(knowledgeBaseName);
System.Console.WriteLine($"Knowledge base '{knowledgeBaseName}' deleted successfully.");

Reference:SearchIndexClient

# Delete a knowledge base
from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())
index_client.delete_knowledge_base("<knowledge-base-name>")
print(f"Knowledge base deleted successfully.")

Reference:SearchIndexClient

# Delete a knowledge base
DELETE {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
Authorization: Bearer {{search-access-token}}

リファレンス:ナレッジ ベース - 削除