インデックス付き OneLake ナレッジ ソースを作成する

メモ

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

インデックス付き OneLake ナレッジ ソースを使用して、Microsoft OneLakeファイルのインデックスを作成し、検索エージェントパイプライン内でクエリを実行します。 ナレッジ ソース は個別に作成され、 ナレッジ ベースで参照され、エージェントまたはチャットボットがクエリ時に 取得アクション を呼び出すときに、グラウンド データとして使用されます。

インデックス付きの OneLake ナレッジ ソースを作成するときは、外部データ ソース、モデル、およびプロパティを指定して、次のAzure AI 検索 オブジェクトを自動的に生成します。

  • レイクハウスを表すデータ ソース。
  • レイクハウスからマルチモーダル コンテンツをチャンクし、必要に応じてベクター化するスキルセット。
  • エンリッチされたコンテンツを格納し、エージェント検索の条件を満たすインデックス。
  • 前のオブジェクトを使用してインデックス作成およびエンリッチメント パイプラインを駆動するインデクサー。

生成されたインデクサーは OneLake インデクサーに準拠しており、その前提条件、サポートされているタスク、サポートされているドキュメント形式、サポートされているショートカット、制限事項も OneLake ナレッジ ソースに適用されます。 詳細については、 OneLake インデクサーのドキュメントを参照してください

利用サポート

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

前提 条件

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

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

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

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

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

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

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

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

次のコードを実行して、名前と種類でナレッジ ソースを一覧表示します。

// List knowledge sources by name and type
using Azure.Search.Documents.Indexes;

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

Console.WriteLine("Knowledge Sources:");

await foreach (var ks in knowledgeSources)
{
    Console.WriteLine($"  Name: {ks.Name}, Type: {ks.GetType().Name}");
}

Reference:SearchIndexClient

# List knowledge sources by name and type
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))

for ks in index_client.list_knowledge_sources():
    print(f"  - {ks.name} ({ks.kind})")

Reference:SearchIndexClient

### List knowledge sources by name and type
GET {{search-url}}/knowledgesources?api-version={{api-version}}&$select=name,kind
api-key: {{api-key}}

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

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

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

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

// Specify the knowledge source name to retrieve
string ksNameToGet = "earth-knowledge-source";

// Get its definition
var knowledgeSourceResponse = await indexClient.GetKnowledgeSourceAsync(ksNameToGet);
var ks = knowledgeSourceResponse.Value;

// Serialize to JSON for display
var jsonOptions = new JsonSerializerOptions 
{ 
    WriteIndented = true,
    DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.Never
};
Console.WriteLine(JsonSerializer.Serialize(ks, ks.GetType(), jsonOptions));

Reference:SearchIndexClient

# Get a knowledge source 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"))

ks = index_client.get_knowledge_source("knowledge_source_name")
print(json.dumps(ks.as_dict(), indent = 2))

Reference:SearchIndexClient

### Get a knowledge source definition
GET {{search-url}}/knowledgesources/{{knowledge-source-name}}?api-version={{api-version}}
api-key: {{api-key}}

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

次の JSON は、インデックス付き OneLake ナレッジ ソースの応答例です。

{
  "name": "my-onelake-ks",
  "kind": "indexedOneLake",
  "description": "A sample indexed OneLake knowledge source.",
  "encryptionKey": null,
  "indexedOneLakeParameters": {
    "fabricWorkspaceId": "<REDACTED>",
    "lakehouseId": "<REDACTED>",
    "targetPath": null,
    "ingestionParameters": {
      "disableImageVerbalization": false,
      "ingestionPermissionOptions": [],
      "contentExtractionMode": "standard",
      "identity": null,
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "<REDACTED>",
          "deploymentId": "text-embedding-3-large",
          "apiKey": "<REDACTED>",
          "modelName": "text-embedding-3-large"
        }
      },
      "chatCompletionModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "<REDACTED>",
          "deploymentId": "gpt-5-mini",
          "apiKey": "<REDACTED>",
          "modelName": "gpt-5-mini"
        }
      },
      "ingestionSchedule": null,
      "aiServices": {
        "uri": "<REDACTED>",
        "apiKey": "<REDACTED>"
      }
    },
    "createdResources": {
    "datasource": "my-onelake-ks-datasource",
    "indexer": "my-onelake-ks-indexer",
    "skillset": "my-onelake-ks-skillset",
    "index": "my-onelake-ks-index"
    }
  }
}

メモ

機密情報が編集されます。 生成されたリソースは、応答の最後に表示されます。

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

次のコードを実行して、インデックス付き OneLake ナレッジ ソースを作成します。

// Create an indexed OneLake knowledge source
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.Models;
using Azure;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));

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

var embeddingParams = new AzureOpenAIVectorizerParameters
{
    ResourceUri = new Uri(aoaiEndpoint),
    DeploymentName = aoaiEmbeddingDeployment,
    ModelName = aoaiEmbeddingModel
};

var ingestionParams = new KnowledgeSourceIngestionParameters
{
    DisableImageVerbalization = false,
    ChatCompletionModel = new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: chatCompletionParams),
    EmbeddingModel = new KnowledgeSourceAzureOpenAIVectorizer
    {
        AzureOpenAIParameters = embeddingParams
    },
    IngestionPermissionOptions = new List<KnowledgeSourceIngestionPermissionOption>
    {
        KnowledgeSourceIngestionPermissionOption.UserIds,
        KnowledgeSourceIngestionPermissionOption.GroupIds
    }
};

var oneLakeParams = new IndexedOneLakeKnowledgeSourceParameters(
    fabricWorkspaceId: fabricWorkspaceId,
    lakehouseId: lakehouseId)
{
    IngestionParameters = ingestionParams
};

var knowledgeSource = new IndexedOneLakeKnowledgeSource(
    name: "my-onelake-ks",
    indexedOneLakeParameters: oneLakeParams)
{
    Description = "This knowledge source pulls content from a lakehouse."
};

await indexClient.CreateOrUpdateKnowledgeSourceAsync(knowledgeSource);
Console.WriteLine($"Knowledge source '{knowledgeSource.Name}' created or updated successfully.");

Reference:SearchIndexClientIndexedOneLakeKnowledgeSource

# Create an indexed OneLake knowledge source
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import IndexedOneLakeKnowledgeSource, IndexedOneLakeKnowledgeSourceParameters, KnowledgeBaseAzureOpenAIModel, AzureOpenAIVectorizerParameters, KnowledgeSourceAzureOpenAIVectorizer, KnowledgeSourceContentExtractionMode, KnowledgeSourceIngestionParameters

index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))

knowledge_source = IndexedOneLakeKnowledgeSource(
    name = "my-onelake-ks",
    description= "This knowledge source pulls content from a lakehouse.",
    encryption_key = None,
    indexed_one_lake_parameters = IndexedOneLakeKnowledgeSourceParameters(
        fabric_workspace_id = "fabric_workspace_id",
        lakehouse_id = "lakehouse_id",
        target_path = None,
        ingestion_parameters = KnowledgeSourceIngestionParameters(
            identity = None,
            disable_image_verbalization = False,
            chat_completion_model = KnowledgeBaseAzureOpenAIModel(
                azure_open_ai_parameters = AzureOpenAIVectorizerParameters(
                    resource_url = "aoai_endpoint",
                    deployment_name = "aoai_gpt_deployment",
                    model_name = "aoai_gpt_model",
                    api_key = "aoai_api_key"
                )
            ),
            embedding_model = KnowledgeSourceAzureOpenAIVectorizer(
                azure_open_ai_parameters=AzureOpenAIVectorizerParameters(
                    resource_url = "aoai_endpoint",
                    deployment_name = "aoai_embedding_deployment",
                    model_name = "aoai_embedding_model",
                    api_key = "aoai_api_key"
                )
            ),
            content_extraction_mode = KnowledgeSourceContentExtractionMode.MINIMAL,
            ingestion_schedule = None,
            ingestion_permission_options = ["user_ids", "group_ids"]
        )
    )
)

index_client.create_or_update_knowledge_source(knowledge_source)
print(f"Knowledge source '{knowledge_source.name}' created or updated successfully.")

Reference:SearchIndexClient

### Create an indexed OneLake knowledge source
PUT {{search-url}}/knowledgesources/my-onelake-ks?api-version=2025-11-01-preview
api-key: {{api-key}}
Content-Type: application/json

{
    "name": "my-onelake-ks",
    "kind": "indexedOneLake",
    "description": "This knowledge source pulls content from a lakehouse.",
    "indexedOneLakeParameters": {
      "fabricWorkspaceId": "<YOUR FABRIC WORKSPACE GUID>",
      "lakehouseId": "<YOUR LAKEHOUSE GUID>",
      "targetPath": null,
      "ingestionParameters": {
        "identity": null,
        "disableImageVerbalization": null,
        "chatCompletionModel": {
            "kind": "azureOpenAI",
            "azureOpenAIParameters": {
                "resourceUri": "{{aoai-endpoint}}",
                "deploymentId": "{{aoai-gpt-deployment}}",
                "modelName": "{{aoai-gpt-model}}",
                "apiKey": "{{aoai-key}}"
            }
        },
        "embeddingModel": {
            "kind": "azureOpenAI",
            "azureOpenAIParameters": {
                "resourceUri": "{{aoai-endpoint}}",
                "deploymentId": "{{aoai-embedding-deployment}}",
                "modelName": "{{aoai-embedding-model}}",
                "apiKey": "{{aoai-key}}"
            }
        },
        "contentExtractionMode": "minimal",
        "ingestionSchedule": null,
        "ingestionPermissionOptions": ["userIds", "groupIds"]
    }
  }
}

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

メモ

ingestionPermissionOptionsを使用したドキュメント レベルのアクセス許可の適用には、2025-11-01-preview API バージョンが必要です。 2026-04-01 では、この機能はサポートされていません。

ソース固有のプロパティ

2025-11-01-preview バージョンと 2026-04-01 API バージョンの両方で、次のプロパティを渡して、インデックス付きの OneLake ナレッジ ソースを作成できます。

名前 説明 タイプ 編集可能 必須
Name ナレッジ ソースの名前。ナレッジ ソース コレクション内で一意である必要があり、Azure AI 検索内のオブジェクトのに関するガイドラインに従う必要があります。 文字列 いいえ はい
Description ナレッジ ソースの説明。 文字列 はい いいえ
EncryptionKey ナレッジ ソースと生成されたオブジェクトの両方の機密情報を暗号化するための カスタマー マネージド キー オブジェクト はい いいえ
IndexedOneLakeKnowledgeSourceParameters OneLake ナレッジ ソースに固有のパラメーター: FabricWorkspaceIdLakehouseIdTargetPath オブジェクト はい
FabricWorkspaceId レイクハウスを含むワークスペースの GUID。 文字列 いいえ はい
LakehouseId レイクハウスのGUID。 文字列 いいえ はい
TargetPath レイクハウス内のフォルダーまたはショートカット。 指定しない場合、レイクハウス全体のインデックスが作成されます。 文字列 いいえ いいえ
名前 説明 タイプ 編集可能 必須
name ナレッジ ソースの名前。ナレッジ ソース コレクション内で一意である必要があり、Azure AI 検索内のオブジェクトのに関するガイドラインに従う必要があります。 文字列 いいえ はい
description ナレッジ ソースの説明。 文字列 はい いいえ
encryption_key ナレッジ ソースと生成されたオブジェクトの両方の機密情報を暗号化するための カスタマー マネージド キー オブジェクト はい いいえ
indexed_one_lake_parameters OneLake ナレッジ ソースに固有のパラメーター: fabric_workspace_idlakehouse_idtarget_path オブジェクト はい
fabric_workspace_id レイクハウスを含むワークスペースの GUID。 文字列 いいえ はい
lakehouse_id レイクハウスのGUID。 文字列 いいえ はい
target_path レイクハウス内のフォルダーまたはショートカット。 指定しない場合、レイクハウス全体のインデックスが作成されます。 文字列 いいえ いいえ
名前 説明 タイプ 編集可能 必須
name ナレッジ ソースの名前。ナレッジ ソース コレクション内で一意である必要があり、Azure AI 検索内のオブジェクトのに関するガイドラインに従う必要があります。 文字列 いいえ はい
kind このケースでは、indexedOneLake されるナレッジソースの種類。 文字列 いいえ はい
description ナレッジ ソースの説明。 文字列 はい いいえ
encryptionKey ナレッジ ソースと生成されたオブジェクトの両方の機密情報を暗号化するための カスタマー マネージド キー オブジェクト はい いいえ
indexedOneLakeParameters OneLake ナレッジ ソースに固有のパラメーター: fabricWorkspaceIdlakehouseIdtargetPath オブジェクト はい
fabricWorkspaceId レイクハウスを含むワークスペースの GUID。 文字列 いいえ はい
lakehouseId レイクハウスのGUID。 文字列 いいえ はい
targetPath レイクハウス内のフォルダーまたはショートカット。 指定しない場合、レイクハウス全体のインデックスが作成されます。 文字列 いいえ いいえ

インジェスト パラメーターのプロパティ

インデックス付きナレッジ ソースの場合のみ、次の ingestionParameters プロパティを渡して、コンテンツの取り込みと処理方法を制御できます。

名前 説明 タイプ 編集可能 必須
Identity 生成されたインデクサーで使用する マネージド ID オブジェクト はい いいえ
DisableImageVerbalization 画像の言語化の使用を有効または無効にします。 既定値は False で、画像の言語化を 有効にします 。 画像の言語化をTrueにするには、に設定します。 ブール値 いいえ いいえ
ChatCompletionModel 画像を言語化したり、コンテンツを抽出したりするチャット完了モデル。 サポートされているモデルは、 gpt-4ogpt-4o-minigpt-4.1gpt-4.1-minigpt-4.1-nanogpt-5gpt-5-mini、および gpt-5-nanoです。 GenAI プロンプト スキルは、生成されたスキルセットに含まれています。 このパラメーターを設定するには、 DisableImageVerbalizationFalse に設定されている必要もあります。 オブジェクト 編集可能な ApiKeyDeploymentName のみ いいえ
EmbeddingModel インデックス作成中およびクエリ時にテキストと画像の内容をベクター化するテキスト埋め込みモデル。 サポートされているモデルは、 text-embedding-ada-002text-embedding-3-small、および text-embedding-3-largeです。 Azure OpenAI Embedding スキルは生成されたスキルセットに含まれており、生成されたインデックスには Azure OpenAI vectorizer が含まれます。 オブジェクト 編集可能な ApiKeyDeploymentName のみ いいえ
ContentExtractionMode ファイルからコンテンツを抽出する方法を制御します。 既定値は minimal で、テキストと画像に標準のコンテンツ抽出を使用します。 生成されたスキルセットに含まれる standard を使用して高度なドキュメントの解読とチャンクを行う場合は、 に設定します。 standardの場合のみ、AiServices パラメーターは指定できます。 文字列 いいえ いいえ
AiServices Microsoft Foundryのリソースで、Foundry ToolsのAzure Content Understandingにアクセスできます。 このパラメーターを設定するには、 ContentExtractionModestandard に設定されている必要があります。 オブジェクト 編集可能な ApiKey のみ いいえ
IngestionSchedule 生成されたインデクサーにスケジュール情報を追加します。 後で スケジュールを追加 して、データ更新を自動化することもできます。 オブジェクト はい いいえ
IngestionPermissionOptions コンテンツと共に取り込むためのドキュメント単位の権限。 アクセス許可メタデータをインデックスに格納する UserIdsGroupIds、または RbacScope を指定します。 ソース固有のガイダンスについては、 BLOB ストレージからの RBAC アクセス許可の取り込 みと ADLS Gen2 からの ACL の取り込みに関するページを参照してください。 クエリ時にこれらのアクセス許可を適用するには、「クエリ 時にアクセス許可を適用する」を参照してください。 配列 いいえ いいえ
名前 説明 タイプ 編集可能 必須
identity 生成されたインデクサーで使用する マネージド ID オブジェクト はい いいえ
disable_image_verbalization 画像の言語化の使用を有効または無効にします。 既定値は False で、画像の言語化を 有効にします 。 画像の言語化をTrueにするには、に設定します。 ブール値 いいえ いいえ
chat_completion_model 画像を言語化したり、コンテンツを抽出したりするチャット完了モデル。 サポートされているモデルは、 gpt-4ogpt-4o-minigpt-4.1gpt-4.1-minigpt-4.1-nanogpt-5gpt-5-mini、および gpt-5-nanoです。 GenAI プロンプト スキルは、生成されたスキルセットに含まれています。 このパラメーターを設定するには、 disable_image_verbalizationFalse に設定されている必要もあります。 オブジェクト 編集可能な api_keydeployment_name のみ いいえ
embedding_model インデックス作成中およびクエリ時にテキストと画像の内容をベクター化するテキスト埋め込みモデル。 サポートされているモデルは、 text-embedding-ada-002text-embedding-3-small、および text-embedding-3-largeです。 Azure OpenAI Embedding スキルは生成されたスキルセットに含まれており、生成されたインデックスには Azure OpenAI vectorizer が含まれます。 オブジェクト 編集可能な api_keydeployment_name のみ いいえ
content_extraction_mode ファイルからコンテンツを抽出する方法を制御します。 既定値は minimal で、テキストと画像に標準のコンテンツ抽出を使用します。 生成されたスキルセットに含まれる standard を使用して高度なドキュメントの解読とチャンクを行う場合は、 に設定します。 standardの場合のみ、ai_services パラメーターは指定できます。 文字列 いいえ いいえ
ai_services Microsoft Foundryのリソースで、Foundry ToolsのAzure Content Understandingにアクセスできます。 このパラメーターを設定するには、 content_extraction_modestandard に設定されている必要があります。 オブジェクト 編集可能な api_key のみ いいえ
ingestion_schedule 生成されたインデクサーにスケジュール情報を追加します。 後で スケジュールを追加 して、データ更新を自動化することもできます。 オブジェクト はい いいえ
ingestion_permission_options コンテンツと共に取り込むためのドキュメント単位の権限。 アクセス許可メタデータをインデックスに格納する user_idsgroup_ids、または rbac_scope を指定します。 ソース固有のガイダンスについては、 BLOB ストレージからの RBAC アクセス許可の取り込 みと ADLS Gen2 からの ACL の取り込みに関するページを参照してください。 クエリ時にこれらのアクセス許可を適用するには、「クエリ 時にアクセス許可を適用する」を参照してください。 配列 いいえ いいえ
名前 説明 タイプ 編集可能 必須
identity 生成されたインデクサーで使用する マネージド ID オブジェクト はい いいえ
disableImageVerbalization 画像の言語化の使用を有効または無効にします。 既定値は false で、画像の言語化を 有効にします 。 画像の言語化をtrueにするには、に設定します。 ブール値 いいえ いいえ
chatCompletionModel 画像を言語化したり、コンテンツを抽出したりするチャット完了モデル。 サポートされているモデルは、 gpt-4ogpt-4o-minigpt-4.1gpt-4.1-minigpt-4.1-nanogpt-5gpt-5-mini、および gpt-5-nanoです。 GenAI プロンプト スキルは、生成されたスキルセットに含まれています。 このパラメーターを設定するには、 disableImageVerbalizationfalse に設定されている必要もあります。 オブジェクト 編集可能な apiKeydeploymentId のみ いいえ
embeddingModel インデックス作成中およびクエリ時にテキストと画像の内容をベクター化するテキスト埋め込みモデル。 サポートされているモデルは、 text-embedding-ada-002text-embedding-3-small、および text-embedding-3-largeです。 Azure OpenAI Embedding スキルは生成されたスキルセットに含まれており、生成されたインデックスには Azure OpenAI vectorizer が含まれます。 オブジェクト 編集可能な apiKeydeploymentId のみ いいえ
contentExtractionMode ファイルからコンテンツを抽出する方法を制御します。 既定値は minimal で、テキストと画像に標準のコンテンツ抽出を使用します。 生成されたスキルセットに含まれる standard を使用して高度なドキュメントの解読とチャンクを行う場合は、 に設定します。 standardの場合のみ、aiServices パラメーターは指定できます。 文字列 いいえ いいえ
aiServices Microsoft Foundryのリソースで、Foundry ToolsのAzure Content Understandingにアクセスできます。 このパラメーターを設定するには、 contentExtractionModestandard に設定されている必要があります。 オブジェクト 編集可能な apiKey のみ いいえ
ingestionSchedule 生成されたインデクサーにスケジュール情報を追加します。 後で スケジュールを追加 して、データ更新を自動化することもできます。 オブジェクト はい いいえ
ingestionPermissionOptions コンテンツと共に取り込むためのドキュメント単位の権限。 アクセス許可メタデータをインデックスに格納する userIdsgroupIds、または rbacScope を指定します。 ソース固有のガイダンスについては、 BLOB ストレージからの RBAC アクセス許可の取り込 みと ADLS Gen2 からの ACL の取り込みに関するページを参照してください。 クエリ時にこれらのアクセス許可を適用するには、「クエリ 時にアクセス許可を適用する」を参照してください。 配列 いいえ いいえ

インジェストの状態を確認する

インデクサー パイプラインを生成して検索インデックスを作成するナレッジ ソースにおいて、ナレッジ ソースの種類や詳細なインデックス作成エラーを含む、インジェストの進捗と健全性を監視するために、次のコードを実行します。

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

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));

// Get knowledge source ingestion status
var statusResponse = await indexClient.GetKnowledgeSourceStatusAsync(knowledgeSourceName);
var status = statusResponse.Value;

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

Reference:SearchIndexClient

# Check knowledge source ingestion status
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"))

status = index_client.get_knowledge_source_status("knowledge_source_name")
print(json.dumps(status.as_dict(), indent=2))

Reference:SearchIndexClient

### Check knowledge source ingestion status
GET {{search-url}}/knowledgesources/{{knowledge-source-name}}/status?api-version={{api-version}}
api-key: {{api-key}}
Content-Type: application/json 

リファレンス:ナレッジ ソース - 状態の取得

インジェスト パラメーターを含み、コンテンツをアクティブに取り込む要求の応答は、次の例のようになります。

{
  "kind": "azureBlob",
  "synchronizationStatus": "active",
  "synchronizationInterval": "1d",
  "currentSynchronizationState": {
    "startTime": "2026-04-10T19:30:00Z",
    "itemUpdatesProcessed": 1100,
    "itemsUpdatesFailed": 100,
    "itemsSkipped": 1100,
    "errors": [
      {
        "key": "Item id 1",
        "docURL": "https://contoso.blob.core.windows.net/contracts/2024/Q4/doc-00023.csv",
        "statusCode": 400,
        "componentName": "DocumentExtraction.AzureBlob.MyDataSource",
        "errorMessage": "Could not read the value of column 'foo' at index '0'.",
        "details": "The file could not be parsed.",
        "documentationLink": "https://go.microsoft.com/fwlink/?linkid=2049388"
      }
    ]
  },
  "lastSynchronizationState": {
    "status": "partialSuccess",
    "startTime": "2026-04-09T19:30:00Z",
    "endTime": "2026-04-09T19:40:01Z",
    "itemUpdatesProcessed": 1100,
    "itemsUpdatesFailed": 100,
    "itemsSkipped": 1100,
    "errors": null
  },
  "statistics": {
    "totalSynchronizations": 25,
    "averageSynchronizationDuration": "00:15:20",
    "averageItemsProcessedPerSynchronization": 500
  }
}

メモ

ドキュメント レベルのエラーの詳細を含む kind プロパティと currentSynchronizationState.errors[] 配列は、2026-04-01 API バージョン以降で使用できます。 以前のバージョンの API では、これらのフィールドは返されません。 lastSynchronizationState.status フィールドは、2026-04-01 でも新しく追加されています。

作成されたオブジェクトを確認する

インデックス付きの OneLake ナレッジ ソースを作成すると、検索サービスによってインデクサー、インデックス、スキルセット、データ ソースも作成されます。 エラーや非互換性が発生するとパイプラインが壊れる可能性があるので、これらのオブジェクトを編集することはお勧めしません。

ナレッジ ソースを作成すると、作成されたオブジェクトが応答に一覧表示されます。 これらのオブジェクトは固定テンプレートに従って作成され、その名前はナレッジ ソースの名前に基づいています。 オブジェクト名は変更できません。

Azure ポータルを使用して出力の作成を検証することをお勧めします。 ワークフローは次のとおりです。

  1. インデクサーで成功または失敗のメッセージを確認します。 接続エラーまたはクォータ エラーがここに表示されます。
  2. 検索可能なコンテンツのインデックスを確認します。 検索エクスプローラーを使用してクエリを実行します。
  3. スキルセットを確認して、コンテンツがどのようにチャンクされ、必要に応じてベクター化されるかを確認します。
  4. 接続の詳細については、データ ソースを確認します。 この例では、わかりやすくするために API キーを使用していますが、認証にはMicrosoft Entra IDを使用し、承認にはロールベースのアクセス制御を使用できます。

ナレッジ ベースに割り当てる

ナレッジ ソースに問題がない場合は、次の手順に進 みます。ナレッジ ベースでナレッジ ソースを指定します。

インデックス付き OneLake ナレッジ ソースを指定するナレッジ ベースの場合は、必ず includeReferenceSourceDatatrue に設定してください。 この手順は、引用文献にソース ドキュメントの URL をプルするために必要です。

ナレッジ ベースを構成したら、 取得アクション を使用してナレッジ ソースにクエリを実行します。

ヒント

ドキュメント レベルのアクセス許可を適用するには、このナレッジ ソースを作成するときに ingestionPermissionOptions を設定し、取得要求にユーザーのアクセス トークンを含めます。 詳細については、「 クエリ時にアクセス許可を適用する」を参照してください。

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

ナレッジ ソースを削除する前に、ナレッジ ソースを参照するすべてのナレッジ ベースを削除するか、ナレッジ ベース定義を更新して参照を削除する必要があります。 インデックスとインデクサー パイプラインを生成するナレッジ ソースの場合、 生成されたすべてのオブジェクト も削除されます。 ただし、既存のインデックスを使用してナレッジ ソースを作成した場合、インデックスは削除されません。

使用中のナレッジ ソースを削除しようとすると、アクションは失敗し、影響を受けるナレッジ ベースの一覧が返されます。

ナレッジ ソースを削除するには:

  1. 検索サービスのすべてのナレッジ ベースの一覧を取得します。

    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

    応答の例は次のようになります。

     Knowledge Bases:
       - earth-knowledge-base
       - hotels-sample-knowledge-base
       - my-demo-knowledge-base
    
  2. 個別のナレッジベース定義を取得して、ナレッジソースの参照を確認する。

    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

    応答の例は次のようになります。

     {
       "Name": "earth-knowledge-base",
       "KnowledgeSources": [
         {
           "Name": "earth-knowledge-source"
         }
       ],
       "Models": [
         {}
       ],
       "RetrievalReasoningEffort": {},
       "OutputMode": {},
       "ETag": "\u00220x8DE278629D782B3\u0022",
       "EncryptionKey": null,
       "Description": null,
       "RetrievalInstructions": null,
       "AnswerInstructions": null
     }
    
  3. ナレッジ ベースを削除するか、複数のナレッジ ソースがある場合は、ナレッジ ベースを更新してソースを削除します。 この例では、削除を示します。

    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

  4. ナレッジ ソースを削除します。

    await indexClient.DeleteKnowledgeSourceAsync(knowledgeSourceName);
    System.Console.WriteLine($"Knowledge source '{knowledgeSourceName}' deleted successfully.");
    

    Reference:SearchIndexClient

  1. 検索サービスのすべてのナレッジ ベースの一覧を取得します。

    # Get knowledge bases
    from azure.core.credentials import AzureKeyCredential
    from azure.search.documents.indexes import SearchIndexClient
    
    index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
    
    print("Knowledge Bases:")
    for kb in index_client.list_knowledge_bases():
        print(f"  - {kb.name}")
    

    Reference:SearchIndexClient

    応答の例は次のようになります。

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. 個別のナレッジベース定義を取得して、ナレッジソースの参照を確認する。

    # Get a knowledge base definition
    from azure.core.credentials import AzureKeyCredential
    from azure.search.documents.indexes import SearchIndexClient
    
    index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
    kb = index_client.get_knowledge_base("knowledge_base_name")
    print(kb)
    

    Reference:SearchIndexClient

    応答の例は次のようになります。

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks",
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. ナレッジ ベースを削除するか、複数のナレッジ ソースがある場合は、ナレッジ ベースを更新してソースを削除します。 この例では、削除を示します。

    # 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

  4. ナレッジ ソースを削除します。

    # Delete a knowledge source
    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_source("knowledge_source_name")
    print(f"Knowledge source deleted successfully.")
    

    Reference:SearchIndexClient

  1. 検索サービスのすべてのナレッジ ベースの一覧を取得します。

    ### Get knowledge bases
    GET {{search-url}}/knowledgebases?api-version={{api-version}}&$select=name
    api-key: {{api-key}}
    

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

    応答の例は次のようになります。

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  2. 個別のナレッジベース定義を取得して、ナレッジソースの参照を確認する。

    ### Get a knowledge base definition
    GET {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
    api-key: {{api-key}}
    

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

    応答の例は次のようになります。

     {
       "name": "my-kb",
       "description": null,
       "retrievalInstructions": null,
       "answerInstructions": null,
       "outputMode": null,
       "knowledgeSources": [
         {
           "name": "my-blob-ks",
         }
       ],
       "models": [],
       "encryptionKey": null,
       "retrievalReasoningEffort": {
         "kind": "low"
       }
     }
    
  3. ナレッジ ベースを削除するか、複数のナレッジ ソースがある場合は、ナレッジ ベースを更新してソースを削除します。 この例では、削除を示します。

    ### Delete a knowledge base
    DELETE {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
    api-key: {{api-key}}
    

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

  4. ナレッジ ソースを削除します。

    ### Delete a knowledge source
    DELETE {{search-url}}/knowledgesources/{{knowledge-source-name}}?api-version={{api-version}}
    api-key: {{api-key}}
    

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