注
現在、この機能はパブリック プレビュー段階にあります。 このプレビュー版はサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳細については、「Microsoft Azure プレビューの使用条件を参照してください。
Azure AI 検索では、knowledge base は、agentic 取得を調整する最上位のオブジェクトです。 クエリを実行するナレッジ ソースと、取得操作の既定の動作を定義します。 クエリ時に、 取得メソッド はナレッジ ベースをターゲットにして、構成された取得パイプラインを実行します。
ナレッジ ベースは、Microsoft Foundry (新しい) ポータルの Foundry IQ ワークロードで作成できます。 また、Azure AI 検索 API を使用して作成するすべてのエージェント ソリューションのナレッジ ベースも必要です。
ナレッジ ベースでは、次の項目を指定します。
- 検索可能なコンテンツを指す 1 つ以上のナレッジ ソース。
- クエリの計画と回答の定式化のための推論機能を提供するオプションの LLM。
- LLM が呼び出されるかどうかを決定し、コスト、待機時間、品質を管理する検索推論プロセス。
- ルーティング、ソースの選択、出力形式、およびオブジェクトの暗号化を制御するカスタム プロパティ。
ナレッジ ベースを作成した後は、いつでもそのプロパティを更新できます。 ナレッジ ベースが使用中の場合、更新は次の取得に有効になります。
Important
2025-11-01-preview では、2025-08-01-preview の "ナレッジ エージェント" の名前が "ナレッジ ベース" に変更されます。これは重大な変更です。 できるだけ早い、新しい API への既存のコードからの移行をおすすめします。
利用サポート
| Azure portal | Microsoft Foundry ポータル | .NET SDK | Python SDK | Java SDK | JavaScript SDK | REST API |
|---|---|---|---|---|---|---|
| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
[前提条件]
Azure AI 検索は、エージェント検索を提供する任意の地域で利用可能です。 セマンティック ランカーを有効にする必要があります。 デプロイされたモデルへのロールベースのアクセスに マネージド ID を 使用している場合、検索サービスは Basic 価格レベル以上である必要があります。
検索サービスに関する 1 つ以上の ナレッジ ソース 。
Azure OpenAI を使用した サポートされている LLM のデプロイメント。
Azure AI 検索でオブジェクトを作成および使用するためのアクセス許可。 ロールベースのアクセスをお勧めします。 Search Service 共同作成者 は、ナレッジ ベースを作成および管理できます。 検索インデックス データ 閲覧者 はクエリを実行できます。 または、ロールの割り当てが不可能な場合は 、API キー を使用することもできます。 詳細については、「 検索サービスへの接続」を参照してください。
- 最新の
Azure.Search.Documentsプレビュー パッケージ:dotnet add package Azure.Search.Documents --prerelease
- 最新の
azure-search-documentsプレビュー パッケージ:pip install --pre azure-search-documents
- Search Service REST API の 2025-11-01-preview バージョン。
サポートされているモデル
FoundryモデルでAzure OpenAIの次のいずれかのLLMを使用します。 デプロイ手順については、FoundryポータルでMicrosoft Foundryモデルをデプロイするを参照してください。
gpt-4ogpt-4o-minigpt-4.1gpt-4.1-nanogpt-4.1-minigpt-5gpt-5-nanogpt-5-mini
アクセスを構成する
Azure AI 検索は、Azure OpenAI から LLM にアクセスする必要があります。 認証用にMicrosoft Entra IDし、承認用にロールベースのアクセスを行うことをお勧めします。 ロールを割り当てるには、 所有者またはユーザー アクセス管理者である必要があります。 ロールを使用できない場合は、代わりにキーベースの認証を使用してください。
Foundry Models などのモデル プロバイダーで、検索サービスのマネージド ID に Cognitive Services ユーザー を割り当てます。 ローカルでテストする場合は、同じロールをユーザー アカウントに割り当てます。
ローカル テストの場合は、「 クイック スタート: キーなしで接続 して特定のサブスクリプションとテナントにサインインする」の手順に従います。 各要求で
DefaultAzureCredentialの代わりにAzureKeyCredentialを使用します。これは次の例のようになります。
using Azure.Search.Documents.Indexes;
using Azure.Identity;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());
```
Foundry Models などのモデル プロバイダーで、検索サービスのマネージド ID に Cognitive Services ユーザー を割り当てます。 ローカルでテストする場合は、同じロールをユーザー アカウントに割り当てます。
ローカル テストの場合は、「 クイック スタート: キーなしで接続 して特定のサブスクリプションとテナントにサインインする」の手順に従います。 各要求で
DefaultAzureCredentialの代わりにAzureKeyCredentialを使用します。これは次の例のようになります。
# Authenticate using roles
from azure.identity import DefaultAzureCredential
index_client = SearchIndexClient(endpoint = "search_url", credential = DefaultAzureCredential())
```
Foundry Models などのモデル プロバイダーで、検索サービスのマネージド ID に Cognitive Services ユーザー を割り当てます。 ローカルでテストする場合は、同じロールをユーザー アカウントに割り当てます。
ローカル テストの場合は、「 クイック スタート: キーなしで接続 して、特定のサブスクリプションとテナントの個人用アクセス トークンを取得する」の手順に従います。 各要求でアクセス トークンを指定します。これは次の例のようになります。
# List indexes using roles
GET https://{{search-url}}/indexes?api-version=2025-11-01-preview
Content-Type: application/json
Authorization: Bearer {{access-token}}
```
Important
この記事のコード スニペットでは、API キーを使用します。 ロールベースの認証を使用する場合は、それに応じて各要求を更新します。 両方の方法を指定する要求では、API キーが優先されます。
既存のナレッジ ベースを確認する
ナレッジ ベースは、最上位の再利用可能なオブジェクトです。 既存のナレッジ ベースについて知ることは、新しいオブジェクトを再利用または名前付けする場合に役立ちます。 2025-08-01-preview ナレッジ エージェントはすべてナレッジ ベース コレクションに返されます。
次のコードを実行して、既存のナレッジ ベースを名前で一覧表示します。
// 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}");
}
次のコードを実行して、既存のナレッジ ベースを名前で一覧表示します。
# 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}")
ナレッジ ベース - リスト (REST API) を使用して、名前と種類でナレッジ ベースを一覧表示します。
# List knowledge bases
GET {{search-url}}/knowledgebases?api-version=2025-11-01-preview&$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);
# 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))
# Get knowledge base
GET {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
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"
}
}
ナレッジ ベースの作成
ナレッジ ベースによって、エージェント検索パイプラインが推進されます。 アプリケーション コードでは、他のエージェントまたはチャットボットがそれを呼び出します。
ナレッジ ベースは、ナレッジ ソース (検索可能なコンテンツ) を Azure OpenAI の LLM デプロイメントに接続します。 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
};
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.");
次のコードを実行してナレッジ ベースを作成します。
# Create a knowledge base
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import KnowledgeBase, KnowledgeBaseAzureOpenAIModel, KnowledgeSourceReference, AzureOpenAIVectorizerParameters, KnowledgeRetrievalOutputMode, 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 = 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 = KnowledgeRetrievalLowReasoningEffort(),
)
index_client.create_or_update_knowledge_base(knowledge_base)
print(f"Knowledge base '{knowledge_base.name}' created or updated successfully.")
ナレッジ ベース - 作成または更新 (REST API) を使用してナレッジ ベースを作成します。
# Create a knowledge base
PUT {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-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-4.1-mini",
"modelName": "gpt-4.1-mini"
}
}
],
"encryptionKey": null,
"retrievalReasoningEffort": {
"kind": "low"
}
}
ナレッジ ベースのプロパティ
ナレッジ ベースを作成するには、次のプロパティを渡します。
| 名前 | Description | タイプ | 必須 |
|---|---|---|---|
Name |
サポート技術情報の名前。 ナレッジ ベース コレクション内で一意である必要があり、Azure AI 検索 内のオブジェクトの命名ガイドラインに従う必要があります。 | 糸 | イエス |
KnowledgeSources |
サポートされている 1 つ以上 のナレッジ ソース。 | Array | イエス |
Description |
ナレッジ ベースの説明。 LLM では、この記述を使用してクエリ計画を通知します。 | 糸 | いいえ |
RetrievalInstructions |
ナレッジ ソースがクエリのスコープ内に存在する必要があるかどうかを判断するための LLM のプロンプト。 複数のナレッジ ソースがある場合は、このプロンプトを含めます。 このフィールドは、ナレッジ ソースの選択とクエリの作成の両方に影響します。 たとえば、指示によって情報が追加されたり、ナレッジ ソースに優先順位が付けられたりする場合があります。 命令は LLM に直接渡されます。つまり、基本的なナレッジ ソースをバイパスする命令など、クエリ計画を中断する命令を提供できます。 | 糸 | いいえ |
AnswerInstructions |
合成された回答を整形するためのカスタム命令。 既定値は null です。 詳細については、「 引用に基づく応答に回答合成を使用する」を参照してください。 | 糸 | いいえ |
OutputMode |
有効な値は、0 が LLM で作成された回答を指し、1 が LLM にダウンストリーム ステップとして渡すことができる完全な検索結果を指します。 | 糸 | いいえ |
Models |
回答の作成やクエリの計画に使用するサポートされているLLMへの接続。 このプレビューでは、Models には 1 つのモデルのみを含めることができます。また、モデル プロバイダーは OpenAI Azureする必要があります。 Foundry ポータルまたはコマンド ライン要求からモデル情報を取得します。
KnowledgeBaseAzureOpenAIModel クラスを使用してパラメーターを指定します。 モデルへのAzure AI 検索接続には、API キーの代わりにロールベースのアクセス制御を使用できます。 |
Object | いいえ |
RetrievalReasoningEffort |
LLM 関連のクエリ処理のレベルを決定します。 有効な値は、 minimal、 low (既定値)、および mediumです。 詳細については、「取得理由の設定」を参照してください。 |
Object | いいえ |
| 名前 | Description | タイプ | 必須 |
|---|---|---|---|
name |
サポート技術情報の名前。 ナレッジ ベース コレクション内では一意である必要があり、Azure AI 検索 内のオブジェクトのネーミング ガイドラインに従う必要があります。 | 糸 | イエス |
description |
ナレッジ ベースの説明。 LLM では、この記述を使用してクエリ計画を通知します。 | 糸 | いいえ |
retrieval_instructions |
ナレッジ ソースがクエリのスコープ内に存在する必要があるかどうかを判断するための LLM のプロンプト。 複数のナレッジ ソースがある場合は、このプロンプトを含めます。 このフィールドは、ナレッジ ソースの選択とクエリの作成の両方に影響します。 たとえば、指示によって情報が追加されたり、ナレッジ ソースに優先順位が付けられたりする場合があります。 LLM に命令を直接渡します。 重要なナレッジ ソースをバイパスする命令など、クエリの計画を中断する命令を提供できます。 | 糸 | いいえ |
answer_instructions |
合成された回答を整形するためのカスタム命令。 既定値は null です。 詳細については、「 引用に基づく応答に回答合成を使用する」を参照してください。 | 糸 | いいえ |
output_mode |
有効な値は、0 が LLM で作成された回答を指し、1 が LLM にダウンストリーム ステップとして渡すことができる完全な検索結果を指します。 | 糸 | いいえ |
knowledge_sources |
サポートされている 1 つ以上 のナレッジ ソース。 | Array | イエス |
models |
回答の作成やクエリの計画に使用するサポートされているLLMへの接続。 このプレビューでは、models には 1 つのモデルのみを含めることができます。また、モデル プロバイダーは OpenAI Azureする必要があります。 Foundry ポータルまたはコマンド ライン要求からモデル情報を取得します。 モデルへのAzure AI 検索接続には、API キーの代わりにロールベースのアクセス制御を使用できます。 |
Object | いいえ |
encryption_key |
ナレッジ ベースと生成されたオブジェクトの両方の機密情報を暗号化するための カスタマー マネージド キー 。 | Object | いいえ |
retrieval_reasoning_effort |
LLM 関連のクエリ処理のレベルを決定します。 有効な値は、 minimal、 low (既定値)、および mediumです。 詳細については、「取得理由の設定」を参照してください。 |
Object | いいえ |
| 名前 | Description | タイプ | 必須 |
|---|---|---|---|
name |
サポート技術情報の名前。 ナレッジ ベース コレクション内で一意である必要があり、Azure AI 検索 内のオブジェクトに対する命名ガイドラインに従う必要があります。 | 糸 | イエス |
description |
ナレッジ ベースの説明。 LLM では、この記述を使用してクエリ計画を通知します。 | 糸 | いいえ |
retrievalInstructions |
ナレッジ ソースがクエリのスコープ内に存在する必要があるかどうかを判断するための LLM のプロンプト。 複数のナレッジ ソースがある場合は、このプロンプトを含めます。 このフィールドは、ナレッジ ソースの選択とクエリの作成の両方に影響します。 たとえば、指示によって情報が追加されたり、ナレッジ ソースに優先順位が付けられたりする場合があります。 LLM に命令を直接渡します。つまり、基本的なナレッジ ソースをバイパスする命令など、クエリ計画を中断する命令を提供できます。 | 糸 | いいえ |
answerInstructions |
合成された回答を整形するためのカスタム命令。 既定値は null です。 詳細については、「 引用に基づく応答に回答合成を使用する」を参照してください。 | 糸 | いいえ |
outputMode |
有効な値は、0 が LLM で作成された回答を指し、1 が LLM にダウンストリーム ステップとして渡すことができる完全な検索結果を指します。 | 糸 | いいえ |
knowledgeSources |
サポートされている 1 つ以上 のナレッジ ソース。 | Array | イエス |
models |
回答の作成やクエリの計画に使用するサポートされているLLMへの接続。 このプレビューでは、models には 1 つのモデルのみを含めることができます。また、モデル プロバイダーは OpenAI Azureする必要があります。 Foundry ポータルまたはコマンド ライン要求からモデル情報を取得します。 モデルへのAzure AI 検索接続には、API キーの代わりにロールベースのアクセス制御を使用できます。 |
Object | いいえ |
encryptionKey |
ナレッジ ベースと生成されたオブジェクトの両方の機密情報を暗号化するための カスタマー マネージド キー 。 | Object | いいえ |
retrievalReasoningEffort.kind |
LLM 関連のクエリ処理のレベルを決定します。 有効な値は、 minimal、 low (既定値)、および mediumです。 詳細については、「取得理由の設定」を参照してください。 |
Object | いいえ |
ナレッジ ベースにクエリを実行する
ナレッジ ベースを作成したら、 取得アクション を使用してクエリを実行し、LLM 接続を確認します。
ナレッジ ベースを削除する
ナレッジ ベースが不要になった場合、または検索サービスでナレッジ ベースを再構築する必要がなくなった場合は、次のコードを実行してオブジェクトを削除します。
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.");
# 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.")
# Delete a knowledge base
DELETE {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
api-key: {{search-api-key}}
関連コンテンツ
- Azure AI 検索 におけるエージェント駆動型の検索
Agentic RAG: Azure AI 検索 (YouTube ビデオ) - Azure エージェント検索を特徴とする OpenAI デモ