メモ
Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。
重要
機能、またはマークされたプロパティ (プレビュー) は、サービス レベル アグリーメントの対象ではなく、運用環境のワークロードには推奨されず、一般公開される前に変更または制約される可能性があります。 Azure AI 検索 プレビューの用語は、スタンドアロンでも一般公開されている機能の一部でも、すべてのプレビュー機能に適用されます。
既定では、Azure AI 検索のナレッジ ベースによってデータ抽出が実行され、ナレッジ ソースから生のグラウンド チャンクが返されます。 データ抽出は特定の情報を取得するのに役立ちますが、複雑なクエリに必要なコンテキストと推論がありません。
代わりに、ナレッジ ベースで指定された LLM を使用して自然言語でクエリに応答する 応答合成 (プレビュー) を有効にすることができます。 各回答には、取得したソースへの引用が含まれており、箇条書きの使用など、指定した指示に従います。
このプロパティは、ナレッジ ベースまたは取得要求で設定できます。 ナレッジ ベースの設定ではすべてのクエリの既定値が設定されますが、取得要求設定ではクエリごとに既定値がオーバーライドされます。
使用サポート
| Azure Portal | Microsoft Foundry ポータル | .NET SDK | Python SDK | Java SDK | JavaScript SDK | REST API |
|---|---|---|---|---|---|---|
| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
前提 条件
LLM を指定する knowledge base を持つAzure AI 検索 サービス。
ナレッジ ベースを更新するためのアクセス許可。 ユーザー アカウントに割り当てられた Search Service 共同作成者ロール (推奨) を使用してキーレス認証を構成するか、管理者 API キーを使用します。
LLM への発信呼び出しの場合、検索サービスには、Microsoft Foundry リソースに対して マネージド ID と Cognitive Services User のアクセス許可が必要です。
最新の
Azure.Search.Documentsプレビュー パッケージ:dotnet add package Azure.Search.Documents --prereleaseキーレス認証の場合、
Azure.Identityパッケージは次のようになります。dotnet add package Azure.Identity
最新の
azure-search-documentsプレビュー パッケージ:pip install --pre azure-search-documentsキーレス認証の場合、
azure-identityパッケージは次のようになります。pip install azure-identity
Search Service REST API の 2026-08-01-preview バージョン。
キーレス認証の場合は、各 HTTP 要求の
AuthorizationヘッダーにMicrosoft Entra ID トークンを含めます。
制限事項と考慮事項
minimal取得の理由付け作業では LLM 処理が無効になるため、ナレッジ ベース定義と要求の両方での応答合成と互換性がありません。 詳細については、「取得理由付けの努力を設定」を参照してください。応答合成では、入力トークンと出力トークンの数に基づいて、Azure OpenAI から従量課金制の料金が発生します。 料金は、ナレッジ ベースに割り当てられている LLM の下に表示されます。 詳細については、「 リージョンの可用性、制限、課金」を参照してください。
ナレッジ ベースで回答合成を有効にする
このセクションでは、既存のナレッジ ベースで応答合成を有効にする方法について説明します。 この構成は新しいナレッジ ベースに使用できますが、ナレッジ ベースの作成はこの記事の範囲外です。
OutputMode 定義で "answerSynthesis" を KnowledgeBase に設定します。 必要に応じて、 AnswerInstructions を設定して回答の出力をカスタマイズします。 次の例では、ナレッジ ベースに Use concise bulleted listsするように指示します。
var aoaiParams = new AzureOpenAIVectorizerParameters
{
ResourceUri = new Uri("<aoai-endpoint>"),
DeploymentName = "<aoai-gpt-deployment>",
ModelName = "<aoai-gpt-model>",
};
var knowledgeBase = new KnowledgeBase(
name: "<knowledge-base-name>",
knowledgeSources: new[] { new KnowledgeSourceReference("<knowledge-source-name>") })
{
Models = { new KnowledgeBaseAzureOpenAIModel(aoaiParams) },
OutputMode = "answerSynthesis",
AnswerInstructions = "Use concise bulleted lists",
};
await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);
リファレンス:SearchIndexClient、 KnowledgeBase
output_mode 定義で "answerSynthesis" を KnowledgeBase に設定します。 必要に応じて、 answer_instructions を設定して回答の出力をカスタマイズします。 次の例では、ナレッジ ベースに Use concise bulleted listsするように指示します。
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
AzureOpenAIVectorizerParameters,
KnowledgeBase,
KnowledgeBaseAzureOpenAIModel,
KnowledgeSourceReference,
)
aoai_params = AzureOpenAIVectorizerParameters(
resource_url="<aoai-endpoint>",
deployment_name="<aoai-gpt-deployment>",
model_name="<aoai-gpt-model>",
)
knowledge_base = KnowledgeBase(
name="<knowledge-base-name>",
models=[KnowledgeBaseAzureOpenAIModel(azure_open_ai_parameters=aoai_params)],
knowledge_sources=[KnowledgeSourceReference(name="<knowledge-source-name>")],
output_mode="answerSynthesis",
answer_instructions="Use concise bulleted lists",
)
index_client = SearchIndexClient(endpoint=search_endpoint, credential=credential)
index_client.create_or_update_knowledge_base(knowledge_base)
リファレンス:SearchIndexClient、 KnowledgeBase
outputModeをナレッジ ベース定義の"answerSynthesis"に設定します。 必要に応じて、 answerInstructions を設定して回答の出力をカスタマイズします。 次の例では、ナレッジ ベースに Use concise bulleted listsするように指示します。
### Enable answer synthesis in a knowledge base
PUT {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}
{
"name": "{{knowledge-base-name}}",
"knowledgeSources": [ ... // OMITTED FOR BREVITY ],
"models": [ ... // OMITTED FOR BREVITY ],
"outputMode": "answerSynthesis",
"answerInstructions": "Use concise bulleted lists"
}
リファレンス:ナレッジ ベース - 作成または更新
取得要求で応答合成を有効にする
応答形式に対するクエリごとの制御では、クエリ時に応答合成を有効にすることができます。 この方法では、ナレッジ ベースで指定された既定の出力モードがオーバーライドされます。
OutputModeで"answerSynthesis"をKnowledgeBaseRetrievalRequestに設定します。
var client = new KnowledgeBaseRetrievalClient(
endpoint: new Uri(searchEndpoint),
knowledgeBaseName: knowledgeBaseName,
credential: credential);
var request = new KnowledgeBaseRetrievalRequest();
request.Messages.Add(
new KnowledgeBaseMessage(
content: new[]
{
new KnowledgeBaseMessageTextContent("What is healthcare?")
}) { Role = "user" });
request.OutputMode = "answerSynthesis";
var result = await client.RetrieveAsync(request);
Reference:KnowledgeBaseRetrievalClient、 KnowledgeBaseRetrievalRequest
output_modeで"answerSynthesis"をKnowledgeBaseRetrievalRequestに設定します。
from azure.search.documents.knowledgebases import KnowledgeBaseRetrievalClient
from azure.search.documents.knowledgebases.models import (
KnowledgeBaseMessage,
KnowledgeBaseMessageTextContent,
KnowledgeBaseRetrievalRequest,
)
agent_client = KnowledgeBaseRetrievalClient(
endpoint=search_endpoint,
credential=credential,
knowledge_base_name=knowledge_base_name,
)
request = KnowledgeBaseRetrievalRequest(
messages=[
KnowledgeBaseMessage(
role="user",
content=[KnowledgeBaseMessageTextContent(text="What is healthcare?")],
)
],
output_mode="answerSynthesis",
)
result = agent_client.retrieve(retrieval_request=request)
Reference:KnowledgeBaseRetrievalClient、 KnowledgeBaseRetrievalRequest
取得リクエストでは、outputMode を "answerSynthesis" に設定します。
### Enable answer synthesis in a retrieve request
POST {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}/retrieve?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}
{
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is healthcare?"
}
]
}
],
"outputMode": "answerSynthesis"
}
リファレンス:ナレッジの取得 - 取得
合成された回答を取得する
回答の合成が有効になっている場合、ナレッジ ベースでは、必要に応じてナレッジ ベースで指定した手順に基づいて自然言語の回答が返されます。 知識の出典への引用は、[ref_id:<number>]としてフォーマットされます。
たとえば、命令が Use concise bulleted lists され、クエリが What is healthcare?されている場合、応答は次の例のようになります。
{
"response": [
{
"content": [
{
"type": "text",
"text": "- Healthcare encompasses various services provided to patients and the general population ..."
}
]
}
]
}
完全な text 出力は次のとおりです。
"- Healthcare encompasses various services provided to patients and the general population, including primary health services, hospital care, dental care, mental health services, and alternative health services [ref_id:1].\n- It involves the delivery of safe, effective, patient-centered care through different modalities, such as in-person encounters, shared medical appointments, and group education sessions [ref_id:0].\n- Behavioral health is a significant aspect of healthcare, focusing on the connection between behavior and overall health, including mental health and substance use [ref_id:2].\n- The healthcare system aims to ensure quality of care, access to providers, and accountability for positive outcomes while managing costs effectively [ref_id:2].\n- The global health system is evolving to address complex health needs, emphasizing the importance of cross-sectoral collaboration and addressing social determinants of health [ref_id:4]."
ナレッジ ベースの構成によっては、応答にアクティビティ ログや参照配列などの他の情報が含まれる場合があります。 詳細については、「 ナレッジ ベースの作成」を参照してください。
関連コンテンツ
- ナレッジ ベースを作成する
- ナレッジ ベースのクエリを実行する
- クイック スタート: エージェント検索 (応答合成を使用)
- Python サンプル: AZURE AI SEARCH BLOB ナレッジ ソース (応答合成を使用)