取得推論の労力を設定 (プレビュー)

メモ

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

Important

機能、またはマークされたプロパティ (プレビュー) は、サービス レベル アグリーメントの対象ではなく、運用環境のワークロードには推奨されず、一般公開される前に変更または制約される可能性があります。 Azure AI 検索 プレビューの用語は、スタンドアロンでも一般公開されている機能の一部でも、すべてのプレビュー機能に適用されます。

エージェント検索では、クエリの計画と回答の定式化のために、大規模言語モデル (LLM) 処理のレベルを指定できます。 取得の理由付け作業 (プレビュー) を使用して、コストと待機時間に影響する LLM 処理レベルを設定します。 追加の LLM 処理により関連性が向上しますが、時間がかかり、課金対象の LLM リソースも使用されます。

このプロパティは、ナレッジ ベースまたは取得要求で設定できます。 ナレッジ ベースの設定ではすべてのクエリの既定値が設定されますが、取得要求設定ではクエリごとに既定値がオーバーライドされます。 どちらの設定も存在しない場合、サービスは lowを使用します。

使用サポート

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

前提 条件

  • 少なくとも 1 つのナレッジ ソースとモデル構成を持つ既存のナレッジ ベース 。

  • ナレッジ ベースを更新およびクエリするためのアクセス許可。 ユーザー アカウントに割り当てられた Search Service 共同作成者ロールと検索インデックス データ閲覧者ロール (推奨) を使用してキーレス認証を構成するか、管理者 API キーを使用します。

  • 最新の 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 ベースのクエリ計画を無効にして、エージェント検索のコストと待機時間を最小限に抑えます。 ナレッジ ベースに一覧表示されているナレッジ ソース間で直接テキストとベクター検索を発行し、最適に一致する箇所を返します。 ナレッジ ベース内のすべてのナレッジ ソースは常に検索され、クエリの拡張は実行されないため、動作は予測可能で制御が容易です。 また、取得要求の alwaysQueryKnowledgeSource プロパティは無視されます。 minimalを使用して、Search API からの移行、またはクエリ計画を自分で管理する場合に使用します。
low エージェント検索の既定のモード。LLM ベースのクエリ計画とナレッジ ソースの選択を 1 回実行します。 エージェント検索エンジンによってサブクエリが生成され、選択したナレッジ ソースにファンアウトされ、結果がマージされます。 回答合成 (プレビュー) を有効にして、インライン引用で基底の自然言語応答を生成できます。 最小待機時間とより深い処理のバランスを取る場合は、 low を使用します。
  • 5,000 個の応答トークン。
  • セマンティック ランク付け用のドキュメントは最大 50 個、セマンティック ランカーが L3 分類を使用する場合は 10 個まで。
medium より深い検索と強化された検索スタックをエージェント検索に追加して、完全性を最大化します。 最初の検索の後、高精度セマンティック分類子は、取得したドキュメントを評価します。 最初の結果が十分に関連性がない場合、サービスは、変更されたクエリ プランを使用して 1 回のフォローアップイテレーションを実行します。 mediumを使用して、LLM 支援の知識取得の有用性を最大化します。
  • 10,000 個の応答トークン。
  • セマンティック ランク付け用のドキュメントは最大 50 個、セマンティック ランカーが L3 分類を使用する場合は 20 個まで。
  • 一部のリージョンで使用できます。
auto 軽量な検索パスで開始します。 最初のパスで十分な根拠が得られた場合、サービスは結果を返します。 それ以外の場合は、LLM ベースのクエリ計画が継続され、最大で中程度の作業が行われます。 autoは、要求ごとに取得の深さと待機時間のバランスを取るためにサービスを使用します。

媒体取得のための反復的な検索

初期結果が十分に関連性がない場合は、中程度の取得推論作業によって反復的な検索が提供されます。 2 回目の反復が必要かどうかを判断するために、追加の セマンティック分類子モデル が呼び出されます。

セマンティック分類子:

  • 質問に答えるのに十分なコンテキストがある場合に認識します。

  • コンテキストの既存の情報を使用して、不十分な結果を再試行します。 新しいクエリでは、詳細に絞り込んだり、検索の幅を広げたりする場合があります。 応答のアクティビティ ログには、より包括的な回答に使用される生成されたクエリが表示されます。

  • L3 分類を使用した再スコア付け。 範囲は L2 ランク付けと同じです。絶対範囲は 0 ~ 4.0 です。

再試行は 1 回だけです。 各イテレーションでは待機時間とコストが追加されるため、システムは再試行を 1 回のパスに制限します。 2 回目のイテレーションでは、クエリ パイプラインに入力トークンが追加され、課金対象の入力トークンの合計数が合計されます。

イテレーションでは、既存のナレッジ ソースを再利用したり、異なるソースを選択したりできます。 2 番目のパスは、不足している情報を提供するために最も有望なナレッジ ソースを選択します。

メディア取得のためのリージョンサポート

検索サービスが次のいずれかのリージョンにある場合は、中程度の取得推論作業を設定できます。

  • 米国東部 2
  • 米国東部
  • 米国中南部
  • 米国西部 3
  • 米国西部 2
  • 米国西部
  • ドイツ中西部
  • 北ヨーロッパ
  • スイス北部
  • スウェーデン中部
  • スペイン中部
  • 英国南部
  • 韓国中部
  • 東日本
  • 東南アジア

ナレッジ ベースで推論作業を設定する

ナレッジ ベース定義で retrievalReasoningEffort を設定して、クエリの既定値を確立します。 autoの推論作業には、モデル構成が必要です。 次の例では、既存の knowledgeSources と models の設定を保持し、推論の強度を auto に設定して、ナレッジベースを更新します。

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

var endpoint = new Uri("<search-endpoint>");
var credential = new DefaultAzureCredential();
var knowledgeBaseName = "<knowledge-base-name>";

var indexClient = new SearchIndexClient(endpoint, credential);
var knowledgeBase = (
    await indexClient.GetKnowledgeBaseAsync(knowledgeBaseName)).Value;
knowledgeBase.RetrievalReasoningEffort =
    new KnowledgeRetrievalAutoReasoningEffort();
await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);

リファレンス:KnowledgeBase

別のレベルを使用するには、 KnowledgeRetrievalAutoReasoningEffort を KnowledgeRetrievalMinimalReasoningEffort、 KnowledgeRetrievalLowReasoningEffort、または KnowledgeRetrievalMediumReasoningEffortに置き換えます。

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.knowledgebases.models import (
    KnowledgeRetrievalAutoReasoningEffort,
)

endpoint = "<search-endpoint>"
credential = DefaultAzureCredential()
knowledge_base_name = "<knowledge-base-name>"

index_client = SearchIndexClient(endpoint, credential)
knowledge_base = index_client.get_knowledge_base(knowledge_base_name)
knowledge_base.retrieval_reasoning_effort = (
    KnowledgeRetrievalAutoReasoningEffort()
)
index_client.create_or_update_knowledge_base(knowledge_base)

リファレンス:KnowledgeBase

別のレベルを使用するには、 KnowledgeRetrievalAutoReasoningEffort を KnowledgeRetrievalMinimalReasoningEffort、 KnowledgeRetrievalLowReasoningEffort、または KnowledgeRetrievalMediumReasoningEffortに置き換えます。

@api-version = 2026-08-01-preview
@knowledge-base-url = {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}

PUT {{knowledge-base-url}}?api-version={{api-version}}
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
  "name": "{{knowledge-base-name}}",
  "knowledgeSources": [
    {
      "name": "{{knowledge-source-name}}"
    }
  ],
  "models": [
    {
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "{{aoai-endpoint}}",
        "authIdentity": null,
        "deploymentId": "{{model-deployment-name}}",
        "modelName": "{{model-name}}"
      }
    }
  ],
  "retrievalReasoningEffort": {
    "kind": "auto"
  }
}

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

別のレベルを使用するには、 retrievalReasoningEffort.kind を minimal、 low、または mediumに設定します。

取得要求で推論作業を設定する

取得要求の retrievalReasoningEffort を設定して、その要求のナレッジ ベースの既定値をオーバーライドします。 次の例では、メッセージを送信し、 low を使用して前のセクションの既定の auto をオーバーライドし、応答合成 (プレビュー) を有効にします。

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

var endpoint = new Uri("<search-endpoint>");
var credential = new DefaultAzureCredential();
var knowledgeBaseName = "<knowledge-base-name>";

var kbClient = new KnowledgeBaseRetrievalClient(
    endpoint, knowledgeBaseName, credential);
var request = new KnowledgeBaseRetrievalRequest
{
    RetrievalReasoningEffort =
        new KnowledgeRetrievalLowReasoningEffort(),
    OutputMode = KnowledgeRetrievalOutputMode.AnswerSynthesis
};

request.Messages.Add(
    new KnowledgeBaseMessage(
        content: new[] {
            new KnowledgeBaseMessageTextContent("What is the return policy?")
        }
    ) { Role = "user" }
);

var result = await kbClient.RetrieveAsync(request);

リファレンス:KnowledgeBaseRetrievalRequest

from azure.identity import DefaultAzureCredential
from azure.search.documents.knowledgebases import KnowledgeBaseRetrievalClient
from azure.search.documents.knowledgebases.models import (
    KnowledgeBaseMessage,
    KnowledgeBaseMessageTextContent,
    KnowledgeBaseRetrievalRequest,
    KnowledgeRetrievalOutputMode,
    KnowledgeRetrievalLowReasoningEffort,
)

endpoint = "<search-endpoint>"
credential = DefaultAzureCredential()
knowledge_base_name = "<knowledge-base-name>"

kb_client = KnowledgeBaseRetrievalClient(
    endpoint,
    credential,
    knowledge_base_name=knowledge_base_name,
)
request = KnowledgeBaseRetrievalRequest(
    messages=[
        KnowledgeBaseMessage(
            role="user",
            content=[
                KnowledgeBaseMessageTextContent(
                    text="What is the return policy?"
                )
            ],
        )
    ],
    retrieval_reasoning_effort=KnowledgeRetrievalLowReasoningEffort(),
    output_mode=KnowledgeRetrievalOutputMode.ANSWER_SYNTHESIS,
)

result = kb_client.retrieve(request)

リファレンス:KnowledgeBaseRetrievalRequest

@api-version = 2026-08-01-preview
@retrieve-url = {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}/retrieve

POST {{retrieve-url}}?api-version={{api-version}}
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "What is the return policy?"
        }
      ]
    }
  ],
  "retrievalReasoningEffort": {
    "kind": "low"
  },
  "outputMode": "answerSynthesis"
}

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

取得要求は、ナレッジ ベースで構成されたナレッジ ソースに基づいて、根拠のある回答を返します。