インデックス付きAzure SQLナレッジ ソースを作成する (プレビュー)

Note

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

Important

これらの機能は、2026-08-01-preview REST API の一部です。 2026-08-01-preview は、Azure サブスクリプションの一部としてユーザーにライセンス付与され、Microsoft製品使用条件Microsoft製品およびサービス データ保護補遺 ("DPA")、および Microsoft Azure プレビューの追加使用条件に適用される条件に従います。

2026-08-01-preview では、他のMicrosoft サービスやサード パーティのサービスへの接続がサポートされています。 これらのサービスの利用は各サービスの利用規約に従うものとし、データが Azure コンプライアンス境界の外部で処理または保存されたり、Azure コンプライアンス境界内に流入したりする場合があります。

データが組織のコンプライアンスと地理的境界の外部に流れるかどうか、および関連する影響、および適切なアクセス許可、境界、承認がプロビジョニングされるかどうかを管理するのは、お客様の責任です。

特定のユース ケースのコンテキストで構築したアプリケーションを慎重に確認およびテストし、すべての適切な決定とカスタマイズを行う責任があります。 これには、メタプロンプト、コンテンツ フィルター、その他の安全システムなどの独自の責任ある AI 軽減策の実装や、アプリケーションが適切な品質、信頼性、セキュリティ、信頼性の標準を満たしていることを確認する機能が含まれます。 詳細については、「Azure AI 検索透過性に関するメモを参照してください。

インデックス付きAzure SQLナレッジ ソース (プレビュー) は、Azure SQL DatabaseまたはAzure SQL Managed Instanceの行をAzure AI 検索のエージェント検索パイプラインに取り込みます。 ナレッジ ソース は個別に作成され、 ナレッジ ベースで参照され、実行時にナレッジ ベースの クエリが実行されるときに、グラウンド データとして使用されます。

Azure Blob Storageや OneLake などのファイル ベースのナレッジ ソースとは異なり、各 SQL 行は 1 つの論理ドキュメントとして扱われます。 固定ドキュメント スキーマを使用するのではなく、明示的な列マッピングを使用してインデックス スキーマを駆動します。

インデックス付きAzure SQLナレッジ ソースを作成する場合は、SQL データ ソース、オプションの列マッピング、および省略可能なモデルを指定して、次のAzure AI 検索 オブジェクトを自動的に生成します。

  • SQL テーブルまたはビューを表すデータ ソース。
  • 列マッピングから派生したフィールドを持つインデックス。
  • 埋め込みを生成するスキルセット。 サービスは、 embeddingColumnsを指定した場合にのみスキルセットを作成します。
  • インジェスト パイプラインを駆動するために前のオブジェクトを使用するインデクサー。

生成されたインデクサーは、Azure SQL インデクサーに準拠しており、その前提条件、変更検出ポリシー、制限事項は、インデックス付きAzure SQLナレッジ ソースにも適用されます。 詳細については、Azure SQL インデクサーのドキュメントを参照してください。

使用サポート

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

Prerequisites

  • エージェント検索を提供する任意のリージョンの Azure AI 検索 サービス。

  • Azure SQL インデクサーの前提条件を完了していること。これには次が含まれます。

    • 取り込むテーブルまたはビューを含む Azure SQL Database または Azure SQL Managed Instance

    • ソース テーブルまたはビューの単一値主キー。

    • ビューの場合は、ハイ ウォーター マークの変化を検出するのに適した列。 rowversion列を強くお勧めします。

  • ナレッジソースを作成する権限。 ユーザー アカウントに割り当てられた Search Service 共同作成者ロールと検索インデックス データ共同作成者ロール (推奨) を使用してキーレス認証を構成するか、管理者 API キーを使用します。

  • embeddingColumns を指定する場合、検索サービスには、埋め込みモデルをホストする Microsoft Foundry リソースに対する Cognitive Services User アクセス許可を持つ マネージド ID が必要です。

  • networkAccessModeprivate に設定した場合は、次の要件を満たします。

    • S2、S3、L1、または L2 検索サービスを使用します。

    • sqlServer グループ ID を使用して、SQL サーバーへの共有プライベート リンクを作成して承認します。 SQL Managed Instanceの場合は、managedInstance グループ ID を使用します。

    • SQL 認証またはマネージド ID 認証を使用します。 マネージド ID の場合は、必要なAzureとデータベース ロールを ID に付与し、SQL サーバーまたはSQL Managed InstanceのDatabase=<database-name>とリソース ID を持つ接続文字列を使用します。 ユーザー割り当て ID にのみ ingestionParameters.identity を設定します。 これを省略すると、インデクサーは検索サービスのシステム割り当て ID を使用します。

    • 保護された各モデル エンドポイントの共有プライベート リンクを作成して承認します。 Azure OpenAI エンドポイントには openai_account グループ ID を使用し、Foundry リソース エンドポイントにはfoundry_accountを使用します。

  • 最新の 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 トークンを含めます。

制限事項と考慮事項

  • ナレッジ ソースは、1 つのテーブルまたは 1 つのビューから取り込むことができます。
  • ソース テーブルまたはビューには、単一値の主キーが必要です。 複合キーはサポートされていません。
  • 主キーは自動検出され、オーバーライドできません。
  • contentExtractionMode では、 "minimal"のみがサポートされます。
  • 画像の抽出と画像の言語化はサポートされていません。
  • リアルタイム同期はサポートされていません。 生成されたインデクサーはスケジュールベースです。
  • リアルタイム SQL の取得はサポートされていません。 ナレッジ ソースはリモートではなく、インデックス化されています。

生成されたインデクサーを準備する

インジェストを促進するインデクサーは、インデックス付きAzure SQLナレッジ ソースによって自動的に作成されます。 ナレッジ ソースを作成する前に、次の詳細を確認してください。

変更検出

生成されたインデクサーは、標準Azure SQLインデクサーの変更検出を使用します。

認証

生成されたインデクサーでは、次の 2 つの認証オプションがサポートされます。

  • SQL authentication: 接続文字列にユーザー名とパスワードを指定します。

  • マネージド ID 認証: SQL リソース上で Azure RBAC とデータベース レベルのロールが付与されている、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を使用します。

接続文字列の形式、ロール要件、およびセットアップ手順については、Azure SQL インデクサーの前提条件およびマネージド ID を使用した接続を参照してください。

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

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

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

// 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
Authorization: Bearer {{token}}

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

名前で 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}}
Authorization: Bearer {{token}}

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

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

{
  "name": "indexedsqlks",
  "kind": "indexedSql",
  "description": "Sample indexed Azure SQL knowledge source.",
  "encryptionKey": null,
  "indexedSqlParameters": {
    "connectionString": "<sql-connection-string>",
    "tableOrView": "dbo.tbl_hotels",
    "contentColumns": [
      { "name": "hotelName", "sourceField": "HotelName", "searchFieldType": "Edm.String" },
      { "name": "description", "sourceField": "Description", "searchFieldType": "Edm.String" }
    ],
    "embeddingColumns": [
      { "name": "descriptionVector", "sourceField": "Description" }
    ],
    "ingestionParameters": {
      "contentExtractionMode": "minimal",
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "<aoai-endpoint>",
          "deploymentId": "text-embedding-3-large",
          "modelName": "text-embedding-3-large"
        }
      },
      "createdResources": {
        "datasource": "indexedsqlks-datasource",
        "indexer": "indexedsqlks-indexer",
        "skillset": "indexedsqlks-skillset",
        "index": "indexedsqlks-index"
      }
    }
  }
}

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

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

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

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

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

var ingestionParams = new KnowledgeSourceIngestionParameters
{
    NetworkAccessMode = KnowledgeSourceNetworkAccessMode.Public,
    ContentExtractionMode = "minimal",
    EmbeddingModel = new KnowledgeSourceAzureOpenAIVectorizer
    {
        AzureOpenAIParameters = embeddingParams
    }
};

var sqlParams = new IndexedSqlKnowledgeSourceParameters(
    connectionString: sqlConnectionString,
    tableOrView: "dbo.tbl_hotels")
{
    ContentColumns =
    {
        new ContentColumnMapping("hotelName", "HotelName", "Edm.String"),
        new ContentColumnMapping("description", "Description", "Edm.String")
    },
    EmbeddingColumns =
    {
        new EmbeddingColumnMapping("descriptionVector", "Description")
    },
    IngestionParameters = ingestionParams
};

var knowledgeSource = new IndexedSqlKnowledgeSource(
    name: "indexedsqlks",
    indexedSqlParameters: sqlParams)
{
    Description = "Indexed Azure SQL knowledge source."
};

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

Reference:SearchIndexClientIndexedSqlKnowledgeSource

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    AzureOpenAIVectorizerParameters,
    ContentColumnMapping,
    EmbeddingColumnMapping,
    IndexedSqlKnowledgeSource,
    IndexedSqlKnowledgeSourceParameters,
)
from azure.search.documents.knowledgebases.models import (
    KnowledgeSourceAzureOpenAIVectorizer,
    KnowledgeSourceIngestionParameters,
    KnowledgeSourceNetworkAccessMode,
)

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())

embedding_params = AzureOpenAIVectorizerParameters(
    resource_url="<aoai-endpoint>",
    deployment_name="<aoai-embedding-deployment>",
    model_name="<aoai-embedding-model>",
)

ingestion_params = KnowledgeSourceIngestionParameters(
    network_access_mode=KnowledgeSourceNetworkAccessMode.PUBLIC,
    content_extraction_mode="minimal",
    embedding_model=KnowledgeSourceAzureOpenAIVectorizer(
        azure_open_ai_parameters=embedding_params
    ),
)

knowledge_source = IndexedSqlKnowledgeSource(
    name="indexedsqlks",
    description="Indexed Azure SQL knowledge source.",
    indexed_sql_parameters=IndexedSqlKnowledgeSourceParameters(
        connection_string="Server=tcp:{server}.database.windows.net,1433;Database={db};...;",
        table_or_view="dbo.tbl_hotels",
        content_columns=[
            ContentColumnMapping(
                name="hotelName",
                source_field="HotelName",
                search_field_type="Edm.String",
            ),
            ContentColumnMapping(
                name="description",
                source_field="Description",
                search_field_type="Edm.String",
            ),
        ],
        embedding_columns=[
            EmbeddingColumnMapping(
                name="descriptionVector",
                source_field="Description",
            )
        ],
        ingestion_parameters=ingestion_params,
    ),
)

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

Reference:SearchIndexClient

### Create an indexed Azure SQL knowledge source
PUT {{search-endpoint}}/knowledgesources/indexedsqlks?api-version=2026-08-01-preview
Authorization: Bearer {{search-access-token}}
Content-Type: application/json

{
  "name": "indexedsqlks",
  "kind": "indexedSql",
  "description": "Indexed Azure SQL knowledge source.",
  "indexedSqlParameters": {
    "connectionString": "Server=tcp:{server}.database.windows.net,1433;Database={db};...;",
    "tableOrView": "dbo.tbl_hotels",
    "contentColumns": [
      { "name": "hotelName", "sourceField": "HotelName", "searchFieldType": "Edm.String" },
      { "name": "description", "sourceField": "Description", "searchFieldType": "Edm.String" }
    ],
    "embeddingColumns": [
      { "name": "descriptionVector", "sourceField": "Description" }
    ],
    "ingestionParameters": {
      "networkAccessMode": "public",
      "contentExtractionMode": "minimal",
      "embeddingModel": {
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
          "resourceUri": "{{aoai-endpoint}}",
          "deploymentId": "{{aoai-embedding-deployment}}",
          "modelName": "{{aoai-embedding-model}}"
        }
      }
    }
  }
}

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

indexedSqlParametersを使用して、取り込む SQL テーブルまたはビューを識別し、生成されたインデックスのフィールドになる列マッピングを定義します。 ビューでは、変更検出に使用する高水位マーク列を指定します。

列マッピング

contentColumnsを使用して、生成された Azure AI 検索 インデックス内の検索可能なフィールドに SQL テキスト列をマップします。 各コンテンツ列マッピングには、ターゲット インデックス フィールド、ソース SQL 列、およびAzure AI 検索 フィールドの種類の名前が付けられます。 contentColumns では Edm.String を使用します。

埋め込みマッピング

embeddingColumnsを使用して、生成されたベクター フィールドに SQL テキスト列をマップします。 埋め込み列を使用する場合は、 ingestionParameters で埋め込みモデルを指定します。

インデックス付きAzure SQLナレッジ ソースの場合、SQL インジェストは行ベースであり、バイナリ ドキュメントからコンテンツを抽出しないため、contentExtractionMode"minimal"する必要があります。 画像の抽出と画像の言語化はサポートされていないため、 chatCompletionModelassetStoreaiServices、および画像関連の設定は無効です。

既定値設定ルールと検証ルール

インデックス付きAzure SQLナレッジ ソースを作成する場合、次の既定値が適用されます。

  • contentColumnsを省略すると、Edm.Stringname等しい 1 対 1 のマッピングを使用して、テキストとして安全に表すことができる SQL 列が、生成されたインデックス内のsourceFieldフィールドに自動的にマップされます。

  • embeddingColumnsを省略した場合、サービスはベクター フィールドを作成せず、埋め込みスキルを構成しません。

  • embeddingColumnscontentColumnsに依存しません。 ベクターを取得可能なテキストに対応させるために、両方の配列に同じ SQL 列を含めます。

  • ソース テーブルまたはビューの主キーが自動検出されます。 明示的なオーバーライドはサポートされておらず、ソースには単一値の主キーが必要です。

インジェストをプライベート ネットワークに制限する

2026-08-01-preview API バージョン以降では、networkAccessModeは、インデックス付きAzure SQLナレッジ ソース用に生成されたインデクサーが実行されるネットワーク環境を制御します。 この設定はインジェストにのみ影響し、ナレッジ ベースの取得要求または応答は変更されません。

networkAccessMode は既定で public に設定され、既存のパブリック ネットワーク動作が保持されます。 networkAccessModeprivateされると、生成されたインデクサーはプライベート実行環境で実行されます。 承認された共有プライベート リンクを使用して、Azure SQL DatabaseまたはSQL Managed Instanceソース接続にアクセスし、サポートされているAzure依存関係 (Azure OpenAI モデルや foundry リソースMicrosoftなど) にアクセスします。

プライベート ネットワーク アクセスを構成して確認するには:

  1. プライベート ネットワークの前提条件を満たす

  2. ナレッジ ソースの作成要求でprivatenetworkAccessModeを設定します。 このプロパティは、作成時にのみ設定できます。 後で変更するには、ナレッジ ソースを削除して再作成します。

    サービス レベルまたはランタイムがプライベート実行をサポートしていない場合、または必要な共有プライベート リンクが存在しない場合、作成が失敗する可能性があります。

  3. 生成されたインデクサーの executionEnvironmentprivateされていることを確認します。

  4. 必要な各共有プライベート リンクが承認され、適切な依存関係をターゲットにしていることを確認します。 作成が成功しても、リンクの承認やターゲット設定は確認されません。

  5. lastSynchronizationState.endTimeに値が設定されるまで、ナレッジ ソースの状態をポーリングします。 itemsUpdatesFailed0されていることを確認し、コネクタ固有のソース コンテンツを確認します。 依存関係に到達できない場合、同期は失敗します。

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

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

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}}
Authorization: Bearer {{token}}
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
  }
}

Note

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

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

このナレッジ ソースを作成すると、Azure AI 検索はデータ ソース、スキルセット、インデクサー、およびインデックスを自動的に生成します。 作成応答では、 createdResourcesの下の各オブジェクトが一覧表示されます。

これらのオブジェクトは固定テンプレートに従って生成され、その名前はナレッジ ソースの名前に基づいています。 オブジェクト名は変更できません。 変更によってインデクサー パイプラインを中断するエラーや非互換性が発生する可能性があるので、これらのオブジェクトを直接編集することは避けてください。

Azure ポータルを使用して、オブジェクトの作成を検証できます。 ワークフローは次のとおりです。

  1. インデクサーで成功または失敗のメッセージを確認します。 接続エラーまたはクォータ エラーがここに表示されます。

  2. データ ソースを調べて、データ ストアへの接続を確認します。 接続では、ナレッジ ソースの構成方法に応じて、接続文字列またはマネージド ID が使用されます。

  3. スキルセットを調べて、コンテンツがどのようにチャンクされ、必要に応じてベクター化されているかを確認します。

  4. 検索可能なフィールドやフィルター可能なフィールド、類似性検索用のベクターを格納するフィールドなど、コンテンツのインデックス付けと取得用の公開方法を確認するには、インデックスを確認します。 Search Explorer を使用して、生成されたインデックスに対してクエリを実行します。

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

ナレッジ ソースに満足している場合は、 ナレッジ ベースに追加します

ナレッジ ベースのクエリを実行する

ナレッジ ベースが構成されたら、 取得アクションまたは MCP エンドポイントを呼び出 してナレッジ ソースにクエリを実行します。

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

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

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

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

  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

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

     {
         "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)",
         "value": [
         {
             "name": "my-kb"
         },
         {
             "name": "my-kb-2"
         }
         ]
     }
    
  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
    Authorization: Bearer {{token}}
    

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

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

     {
         "@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}}
    Authorization: Bearer {{token}}
    

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

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

     {
       "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}}
    Authorization: Bearer {{token}}
    

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

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

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

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