メモ
Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。
メモ
このエージェント検索機能は、プログラムによるアクセスを介して 2026-04-01 REST API で一般提供されています。 Azure ポータルと foundry ポータルMicrosoftは、引き続きすべてのエージェント検索機能へのプレビュー専用アクセスを提供します。 移行のガイダンスについては、「 エージェントの取得コードを最新バージョンに移行する」を参照してください。
プレビュー REST API を使用する場合は、この機能ではまだ一般公開されていない機能にアクセスできます。 プレビュー機能は、サービス レベル アグリーメントなしで提供され、運用環境のワークロードには推奨されません。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。
重要
これらの機能は、2026-05-01-preview REST API の一部です。 2026-05-01-preview は、お客様の Azure サブスクリプションの一部としてお客様にライセンス供与されるものであり、Microsoft Product Terms における「Previews」に適用される条件、Microsoft Products and Services Data Protection Addendum(「DPA」)、および Supplemental Terms of Use for Microsoft Azure Previews に従うものとします。
2026-05-01-preview では、他のMicrosoft サービスやサード パーティのサービスへの接続がサポートされています。 これらのサービスの利用は各サービスの利用規約に従うものとし、データが Azure コンプライアンス境界の外部で処理または保存されたり、Azure コンプライアンス境界内に流入したりする場合があります。
データが組織のコンプライアンスと地理的境界の外部に流れるかどうか、および関連する影響、および適切なアクセス許可、境界、承認がプロビジョニングされるかどうかを管理するのは、お客様の責任です。
特定のユース ケースのコンテキストで構築したアプリケーションを慎重に確認およびテストし、すべての適切な決定とカスタマイズを行う責任があります。 これには、メタプロンプト、コンテンツ フィルター、その他の安全システムなどの独自の責任ある AI 軽減策の実装や、アプリケーションが適切な品質、信頼性、セキュリティ、信頼性の標準を満たしていることを確認する機能が含まれます。 詳細については、「Azure AI 検索透過性に関するメモを参照してください。
Azure AI 検索では、knowledge base は、agentic 取得を調整する最上位のオブジェクトです。 クエリを実行するナレッジ ソースと、取得操作の既定の動作を定義します。 クエリ時に、 取得メソッド はナレッジ ベースをターゲットにして、構成された取得パイプラインを実行します。
ナレッジ ベースは、Microsoft Foundry (新しい) ポータルの Foundry IQ ワークロードで作成できます。 また、Azure AI 検索 API を使用して作成するすべてのエージェント ソリューションのナレッジ ベースも必要です。
ナレッジ ベースでは、次の項目を指定します。
検索可能なコンテンツを指す 1 つ以上のナレッジ ソース。
クエリ計画、応答合成、または Web コンテンツの要約のためのオプションの LLM。 サポートされるタスクは、API のバージョンとナレッジ ソースの種類によって異なります。
ルーティング、ソースの選択、およびオブジェクトの暗号化を制御するカスタム プロパティ。
利用サポート
| Azure Portal | Microsoft Foundry ポータル | .NET SDK | Python SDK | Java SDK | JavaScript SDK | REST API |
|---|---|---|---|---|---|---|
| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
前提 条件
Azure AI 検索 を利用できる任意のエージェンティック検索を提供する領域。 デプロイされたモデルへのロールベースのアクセスに マネージド ID を 使用している場合は、検索サービスが Basic レベル以上である必要があります。
1 つ以上の ナレッジ ソース。 2026-05-01-preview API バージョンを使用して、プレビューのナレッジ ソースにアクセスしたり、Web 以外のナレッジ ソースで LLM を使用したりします。 一般公開されているナレッジ ソースと最小限の抽出取得には、2026-04-01 API バージョンを使用します。
(条件付き) サポートされた LLM デプロイを使用した Azure OpenAI。 ナレッジ ベースに Web ナレッジ ソースが含まれている場合は、LLM が必要です。 その他のナレッジ ソースの場合、LLM は 2026-05-01-preview API バージョンでは省略可能であり、2026-04-01 API バージョンではサポートされていません。
ナレッジ ベースを作成するためのアクセス許可。 ユーザー アカウントに割り当てられた Search Service 共同作成者ロール (推奨) を使用してキーレス認証を構成するか、API キーを使用します。
ナレッジ ベースで LLM が指定されている場合、検索サービスには、Microsoft Foundry リソースに対する Cognitive Services ユーザーアクセス許可を持つマネージド ID が必要です。
必須
Azure.Search.Documentsパッケージ:2026-05-01-preview 機能の場合、最新のプレビュー パッケージ:
dotnet add package Azure.Search.Documents --prerelease2026-04-01 機能の場合、最新の安定したパッケージ:
dotnet add package Azure.Search.Documents
必須
azure-search-documentsパッケージ:2026-05-01-preview 機能の場合、最新のプレビュー パッケージ:
pip install --pre azure-search-documents2026-04-01 機能の場合、最新の安定したパッケージ:
pip install azure-search-documents
必要な REST API バージョン:
プレビュー機能の場合: Search Service 2026-05-01-preview
一般公開されている機能の場合: Search Service 2026-04-01
サポートされているモデル
Azure OpenAI の次のいずれかの LLM を Foundry モデルで使用します。 Azure OpenAI は、選択したデプロイのリージョンの可用性を決定します。 デプロイ手順については、Microsoft Foundry モデルを Foundry ポータルでデプロイするドキュメントを参照してください。
| Model | サポートされる API バージョン |
|---|---|
gpt-4o |
2025-11-01-preview、2026-05-01-preview |
gpt-4o-mini |
2025-11-01-preview、2026-05-01-preview |
gpt-4.1 |
2025-11-01-preview、2026-05-01-preview |
gpt-4.1-mini |
2025-11-01-preview、2026-05-01-preview |
gpt-4.1-nano |
2025-11-01-preview、2026-05-01-preview |
gpt-5 |
2025-11-01-preview、2026-05-01-preview |
gpt-5-mini |
2025-11-01-preview、2026-05-01-preview |
gpt-5-nano |
2025-11-01-preview、2026-05-01-preview |
gpt-5.1 |
2026-05-01-プレビュー |
gpt-5.2 |
2026-05-01-プレビュー |
gpt-5.4 |
2026-05-01-プレビュー |
gpt-5.4-mini |
2026-05-01-プレビュー |
gpt-5.4-nano |
2026-05-01-プレビュー |
アクセスの構成
Azure AI 検索 は、Foundry Models 内の Azure OpenAI の LLM にアクセスする必要があります。 認証用にMicrosoft Entra IDし、承認用にロールベースのアクセスを行うことをお勧めします。 ロールを割り当てるには、 所有者またはユーザー アクセス管理者である必要があります。 ロールを使用できない場合は、代わりにキーベースの認証を使用してください。
モデル プロバイダーで、検索サービスのマネージド ID に Cognitive Services ユーザー を割り当てます。 ローカルでテストする場合は、同じロールをユーザー アカウントに割り当てます。
ローカル テストの場合は、「 クイック スタート: キーなしで接続 して特定のサブスクリプションとテナントにサインインする」の手順に従います。 各要求で
DefaultAzureCredentialの代わりにAzureKeyCredentialを使用します。これは次の例のようになります。// Authenticate using roles using Azure.Search.Documents.Indexes; using Azure.Identity; var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());
モデル プロバイダーで、検索サービスのマネージド ID に Cognitive Services ユーザー を割り当てます。 ローカルでテストする場合は、同じロールをユーザー アカウントに割り当てます。
ローカル テストの場合は、「 クイック スタート: キーなしで接続 して特定のサブスクリプションとテナントにサインインする」の手順に従います。 各要求で
DefaultAzureCredentialの代わりにAzureKeyCredentialを使用します。これは次の例のようになります。# Authenticate using roles from azure.identity import DefaultAzureCredential index_client = SearchIndexClient(endpoint = "search_url", credential = DefaultAzureCredential())
モデル プロバイダーで、検索サービスのマネージド ID に Cognitive Services ユーザー を割り当てます。 ローカルでテストする場合は、同じロールをユーザー アカウントに割り当てます。
ローカル テストの場合は、「 クイック スタート: キーなしで接続 して、特定のサブスクリプションとテナントの個人用アクセス トークンを取得する」の手順に従います。 各要求でアクセス トークンを指定します。これは次の例のようになります。
# List indexes using roles GET https://{{search-url}}/indexes?api-version=2026-04-01 Content-Type: application/json Authorization: Bearer {{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.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
for kb in index_client.list_knowledge_bases():
print(f" - {kb.name}")
Reference:SearchIndexClient
# List knowledge bases
GET {{search-url}}/knowledgebases?api-version={{api-version}}&$select=name
Content-Type: application/json
api-key: {{search-api-key}}
リファレンス:ナレッジ ベース - リスト
名前で 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.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
import json
index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
kb = index_client.get_knowledge_base("knowledge_base_name")
print(json.dumps(kb.as_dict(), indent = 2))
Reference:SearchIndexClient
# Get knowledge base
GET {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
Content-Type: application/json
api-key: {{search-api-key}}
リファレンス:ナレッジ ベース - 取得
次の 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-05-01-preview よりも狭い定義を返します。 各バージョンでサポートされるプロパティの詳細については、次のセクションを参照してください。
ナレッジ ベースを作成する
重要
2026-04-01 API バージョンは、一般公開されているナレッジ ソースの種類のみを受け入れ、最小限の抽出取得をサポートします。 クエリ計画、回答合成、構成可能な推論作業などのプレビューのみの機能はサポートされていません。 完全な機能については、2026-05-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;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));
var aoaiParams = new AzureOpenAIVectorizerParameters
{
ResourceUri = new Uri(aoaiEndpoint),
DeploymentName = aoaiGptDeployment,
ModelName = aoaiGptModel,
ApiKey = aoaiApiKey
};
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 = "Provide a two-sentence, concise, and informative answer based on the retrieved documents.",
OutputMode = KnowledgeRetrievalOutputMode.AnswerSynthesis,
Models = { new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: aoaiParams) },
RetrievalReasoningEffort = new KnowledgeRetrievalLowReasoningEffort()
};
await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);
Console.WriteLine($"Knowledge base '{knowledgeBase.Name}' created or updated successfully.");
リファレンス:SearchIndexClient、 KnowledgeBase
# Create a knowledge base
from azure.core.credentials import AzureKeyCredential
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 KnowledgeRetrievalLowReasoningEffort
index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
aoai_params = AzureOpenAIVectorizerParameters(
resource_url = "aoai_endpoint",
api_key="aoai_api_key",
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 = "Provide a two-sentence, concise, and informative answer based on the retrieved documents.",
output_mode = "answerSynthesis",
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 = KnowledgeRetrievalLowReasoningEffort(),
)
index_client.create_or_update_knowledge_base(knowledge_base)
print(f"Knowledge base '{knowledge_base.name}' created or updated successfully.")
リファレンス:SearchIndexClient、 KnowledgeBase
# Create a knowledge base
PUT {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2026-05-01-preview
Content-Type: application/json
api-key: {{search-api-key}}
{
"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": null,
"outputMode": "answerSynthesis",
"knowledgeSources": [
{
"name": "hotels-ks"
},
{
"name": "earth-at-night-ks"
}
],
"models" : [
{
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "{{model-provider-url}}",
"apiKey": "{{model-api-key}}",
"deploymentId": "gpt-5.4-mini",
"modelName": "gpt-5.4-mini"
}
}
],
"encryptionKey": null,
"retrievalReasoningEffort": {
"kind": "low"
}
}
リファレンス:ナレッジ ベース - 作成または更新
ブラウザーベースの取得呼び出し用に CORS を構成する (プレビュー)
重要
2026-05-01-preview を使用してクロスオリジン リソース共有 (CORS) を有効にすることができます。これにより、ブラウザー ベースのアプリケーションがサービスから直接データを要求できます。 CORS の構成によっては、外部 Web ページが、ユーザーのブラウザー コンテキストを使用してサービスとそのデータにアクセスまたは呼び出したり、他のセキュリティ上の脅威を作成したりすることができます。 CORS の有効化は、ご自身の責任で行ってください。
2026-05-01-preview API バージョンでは、ナレッジ ベースで、JavaScript から直接取得アクションを呼び出すブラウザー ベースのアプリケーションの corsOptions を定義できます。 CORS ポリシーは、取得要求をナレッジ ベースに送信できるブラウザーの配信元を識別します。
corsOptionsを省略すると、ナレッジ ベースには CORS ポリシーがなく、ブラウザーはクロスオリジン取得要求をブロックします。
次の例では、1 つのブラウザーの配信元から要求を取得できるナレッジ ベースを作成します。
using Azure;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));
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:CorsOptions、 KnowledgeBase
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
CorsOptions,
KnowledgeBase,
KnowledgeSourceReference,
)
index_client = SearchIndexClient(endpoint="search_url", credential=AzureKeyCredential("api_key"))
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:CorsOptions、 KnowledgeBase
PUT {{search-url}}/knowledgebases/browser-chat-kb?api-version=2026-05-01-preview
Content-Type: application/json
api-key: {{search-api-key}}
{
"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.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
index_client.delete_knowledge_base("knowledge_base_name")
print(f"Knowledge base deleted successfully.")
Reference:SearchIndexClient
# Delete a knowledge base
DELETE {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
api-key: {{search-api-key}}
リファレンス:ナレッジ ベース - 削除