Note
Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。
Important
これらの機能は、2026-05-01-preview REST API の一部です。 2026-05-01-preview は、お客様の Azure サブスクリプションの一部としてお客様にライセンス供与されるものであり、Microsoft Product Terms における「Previews」に適用される条件、Microsoft Products and Services Data Protection Addendum(「DPA」)、および Supplemental Terms of Use for Microsoft Azure Previews に従うものとします。
2026-05-01-preview では、他のMicrosoft サービスやサード パーティのサービスへの接続がサポートされています。 これらのサービスの利用は各サービスの利用規約に従うものとし、データが Azure コンプライアンス境界の外部で処理または保存されたり、Azure コンプライアンス境界内に流入したりする場合があります。
Work IQ に接続すると、コストが発生する可能性があり、データはAzureコンプライアンス境界外に送信され、該当するサービス条件とデータ処理ポリシーに従って処理される可能性があります。 データが組織のコンプライアンスと地理的境界の外部に流れるかどうか、および関連する影響、および適切なアクセス許可、境界、承認がプロビジョニングされるかどうかを管理するのは、お客様の責任です。
特定のユース ケースのコンテキストで構築したアプリケーションを慎重に確認およびテストし、すべての適切な決定とカスタマイズを行う責任があります。 これには、メタプロンプト、コンテンツ フィルター、その他の安全システムなどの独自の責任ある AI 軽減策の実装や、アプリケーションが適切な品質、信頼性、セキュリティ、信頼性の標準を満たしていることを確認する機能が含まれます。 詳細については、「Azure AI 検索透過性に関するメモを参照してください。
Work IQ ナレッジ ソース (プレビュー) は、Work IQ をAzure AI 検索のエージェント検索パイプラインに接続します。 ナレッジ ソース は個別に作成され、 ナレッジ ベースで参照され、実行時にナレッジ ベースの クエリが実行されるときに、グラウンド データとして使用されます。
Work IQ は、ドキュメント、電子メール、会議、Microsoft 365 アプリ全体のアクティビティなど、Microsoft 365 コンテンツから組織のインテリジェンスを表示します。
インデックス付きナレッジ ソースとは異なり、Work IQ ナレッジ ソースは、取得時にライブ データに直接クエリを実行します。 インジェスト パイプラインは必要ありません。 クエリには、呼び出し元の代わりに Work IQ を呼び出すために取得エンジンが使用するエンドユーザー アクセス トークンが必要です。
Warning
このプレビューでは、Work IQ ナレッジ ソースは、情報を取得するだけでなく、アクションを実行する Work IQ 機能を使用する可能性があります。 これを有効にする前に、慎重に使用し、信頼できるアプリケーションとユーザーへのアクセスを制限し、シナリオのアクセス許可とガバナンス制御を確認します。
使用サポート
| Azure Portal | Microsoft Foundry ポータル | .NET SDK | Python SDK | Java SDK | JavaScript SDK | REST API |
|---|---|---|---|---|---|---|
| ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Prerequisites
エージェント検索を提供する任意のリージョンの Azure AI 検索 サービス。
このナレッジ ソースを照会する各エンド ユーザーには、Microsoft 365 Copilot ライセンスが必要です。
Azure AI 検索 サービス、作業 IQ 環境、エンド ユーザーは、同じMicrosoft Entra テナントに存在する必要があります。 テナントをまたいだデータ取得はサポートされていません。
Azure AI 検索を使用した Work IQ 取得へのアクセスが承認されました。 詳細については、「 Work IQ 取得へのアクセスを要求する」を参照してください。
ナレッジソースを作成する権限。 ユーザー アカウントに割り当てられた 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 の 2026-05-01-preview バージョン。
Work IQ 取得へのアクセスを要求する
Azure AI 検索 による Work IQ の取得は既定では無効になっており、利用するには事前に Microsoft の承認済みリクエストが必要です。
アクセスを要求するには:
Azure サブスクリプションに
EnableFoundryIQWithWorkIQ機能フラグを登録します。az feature register --namespace Microsoft.Search --name EnableFoundryIQWithWorkIQ --subscription "<your-subscription-guid>"Microsoft.Searchリソース プロバイダーを再登録します。az provider register -n Microsoft.Search --subscription "<your-subscription-guid>"テナントのMicrosoft Entra管理者に、Work IQ アクセス要求フォームを送信してもらう。
要求を確認して承認した後、Microsoftがアクセスを有効になるまで待ちます。
Tip
プレビュー機能を登録するには、サブスクリプションにOwnerまたはContributor組み込みロールが必要です。これは、フォームを送信するMicrosoft Entra管理者とは別のロールです。 この 2 つの責務は、組織内の別々の担当者が担うことができます。 登録メカニズムの詳細については、「 Azure サブスクリプションでプレビュー機能を設定するを参照してください。
データ ガバナンスとコンプライアンス
Work IQ は、完全にMicrosoft 365信頼境界内で動作します。 Work IQ を使用してエージェント要求をルーティングする場合は、次のコミットメントが適用されます。
データの保存場所
Work IQ は、組織のMicrosoft 365 テナントからデータを取得します。 データ取得時に、データがテナント外に出たり、リージョンの境界をまたいだりすることはありません。 データの場所は、Azure AI 検索 サービス リージョンではなく、Microsoft 365 テナントのデータ所在地の構成に従います。 詳細については、「Data, Privacy, and Security for Microsoft 365 Copilot」を参照してください。
プライバシーとデータの処理
すべての Work IQ 要求は、Data、Privacy、Security for Microsoft 365 Copilot によって管理されます。 主なコミットメント:
- Work IQ では、基になる AI モデルのトレーニングや改善に顧客コンテンツは使用されません。
アクセス制御とアクセス許可
Work IQ では、すべての要求Microsoft 365アクセス許可が自動的に適用されます。 エージェントは、サインインしているユーザーが既に表示を許可されているデータにのみアクセスできます。 特権の昇格は不可能です。
- Microsoft 365で定義されているロールベースのアクセス制御、秘密度ラベル、および情報バリアが尊重されます。
コンプライアンス認定
Work IQ は、Microsoft 365のコンプライアンス認定を継承します。 詳細については、「Data, Privacy, and Security for Microsoft 365 Copilot」を参照してください。
既存のナレッジ ソースを確認する
ナレッジ ソースは、最上位の再利用可能なオブジェクトです。 既存のナレッジ ソースについて知ることは、新しいオブジェクトを再利用または名前付けする場合に役立ちます。
次のコードを実行して、名前と種類でナレッジ ソースを一覧表示します。
// 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 は、Work IQ ナレッジ ソースの応答の例です。
{
"name": "my-workiq-ks",
"kind": "workIQ",
"description": "A sample Work IQ knowledge source.",
"encryptionKey": null
}
ナレッジ ソースを作成する
次のコードを実行して、Work IQ ナレッジ ソースを作成します。
using Azure;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
Uri searchEndpoint = new Uri("<search-service-url>");
AzureKeyCredential credential = new AzureKeyCredential("<api-key>");
var indexClient = new SearchIndexClient(searchEndpoint, credential);
var knowledgeSource = new WorkIQKnowledgeSource(name: "my-workiq-ks")
{
Description = "A sample Work IQ knowledge source."
};
await indexClient.CreateOrUpdateKnowledgeSourceAsync(knowledgeSource);
Console.WriteLine($"Knowledge source '{knowledgeSource.Name}' created or updated successfully.");
Reference:SearchIndexClient
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import WorkIQKnowledgeSource
index_client = SearchIndexClient(
endpoint="<search-service-url>",
credential=AzureKeyCredential("<api-key>")
)
knowledge_source = WorkIQKnowledgeSource(
name="my-workiq-ks",
description="A sample Work IQ knowledge source."
)
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 a Work IQ knowledge source
PUT {{search-url}}/knowledgesources/my-workiq-ks?api-version=2026-05-01-preview
api-key: {{api-key}}
Content-Type: application/json
{
"name": "my-workiq-ks",
"kind": "workIQ",
"description": "A sample Work IQ knowledge source."
}
リファレンス:ナレッジ ソース - 作成または更新
ナレッジ ベースに割り当てる
ナレッジ ソースに満足している場合は、 ナレッジ ベースに追加します。
ナレッジ ベースのクエリを実行する
ナレッジ ベースが構成されたら、 取得アクションまたは MCP エンドポイントを呼び出 して、Work IQ コンテンツのクエリを実行します。 このナレッジ ソースには、クエリ時のアクセス許可の適用と応答の特性が固有です。
Important
作業 IQ の応答には 40 ~ 60 秒以上かかることがあります。 タイムアウト エラーを回避するには、取得要求の maxRuntimeInSeconds を 120 以上に設定します。
クエリ時にアクセス許可を適用する
Work IQ のサポート情報ソースでは、代理 (OBO) トークン フローが使用されています。 取得要求の x-ms-query-source-authorization ヘッダーにエンドユーザー アクセス トークンを渡します。 トークンのスコープは、Azure AI 検索対象ユーザー (https://search.azure.com/.default) にする必要があります。 取得エンジンは、このトークンを Work IQ スコープ トークンと交換し、それを使用してエンド ユーザーに代わって Work IQ のクエリを実行します。
取得要求では、標準Azure AI 検索認証も必要です。
x-ms-query-source-authorization トークンは個別に渡され、サービス認証に代わることはありません。
トークンを渡す手順については、「 クエリ時にアクセス許可を適用する (プレビュー)」を参照してください。
作業 IQ 固有の応答フィールド
作業 IQ ナレッジ ソースは、 references 配列に結果を返し、 activity 配列の診断をクエリします。 各参照エントリには、次のものが含まれます。
-
sourceData.extracts[].text: Work IQ に基づく根拠のあるテキスト抜粋。 -
attributions[].seeMoreWebUrl: Microsoft 365のソース ドキュメントへのリンク。
次の例は、Work IQ ナレッジ ソース参照とそれに対応するアクティビティ レコードを含む取得応答を示しています。 応答の取得の解釈に関するより広範なガイダンスについては、 応答の確認を参照してください。
Tip
参照のsourceDataを受信するには、includeReferenceSourceDataを取得要求のtrue内のナレッジ ソース エントリのknowledgeSourceParamsに設定します。
{
"response": [
// ... Response omitted for brevity
],
"activity": [
{
"type": "workIQ",
"id": 0,
"knowledgeSourceName": "my-workiq-ks",
"queryTime": "2026-05-01T19:25:23.683Z",
"count": 1,
"elapsedMs": 1137,
"workIQArguments": {
"search": "my query"
}
},
{
// ... Additional activity records omitted for brevity
}
],
"references": [
{
"type": "workIQ",
"id": "83dd7d40",
"activitySource": 0,
"rerankerScore": 3.5,
"attributions": [
{
"seeMoreWebUrl": "https://..."
}
],
"sourceData": {
"extracts": [
{
"text": "Have your VPN username and password ready."
}
]
}
},
{
// ... Additional references omitted for brevity
}
]
}
ナレッジ ソースを削除する
ナレッジ ソースを削除する前に、ナレッジ ソースを参照するすべてのナレッジ ベースを削除するか、ナレッジ ベース定義を更新して参照を削除する必要があります。 インデックスとインデクサー パイプラインを生成するナレッジ ソースの場合、 生成されたすべてのオブジェクト も削除されます。 ただし、既存のインデックスを使用してナレッジ ソースを作成した場合、インデックスは削除されません。
使用中のナレッジ ソースを削除しようとすると、アクションは失敗し、影響を受けるナレッジ ベースの一覧が返されます。
ナレッジ ソースを削除するには:
検索サービスのすべてのナレッジ ベースの一覧を取得します。
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" } ] }個別のナレッジベース定義を取得して、ナレッジソースの参照を確認する。
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 }ナレッジ ベースを削除するか、複数のナレッジ ソースがある場合は、ナレッジ ベースを更新してソースを削除します。 この例では、削除を示します。
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
ナレッジ ソースを削除します。
await indexClient.DeleteKnowledgeSourceAsync(knowledgeSourceName); System.Console.WriteLine($"Knowledge source '{knowledgeSourceName}' deleted successfully.");Reference:SearchIndexClient
検索サービスのすべてのナレッジ ベースの一覧を取得します。
# 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" } ] }個別のナレッジベース定義を取得して、ナレッジソースの参照を確認する。
# 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" } }ナレッジ ベースを削除するか、複数のナレッジ ソースがある場合は、ナレッジ ベースを更新してソースを削除します。 この例では、削除を示します。
# 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
ナレッジ ソースを削除します。
# 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
検索サービスのすべてのナレッジ ベースの一覧を取得します。
### 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" } ] }個別のナレッジベース定義を取得して、ナレッジソースの参照を確認する。
### 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" } }ナレッジ ベースを削除するか、複数のナレッジ ソースがある場合は、ナレッジ ベースを更新してソースを削除します。 この例では、削除を示します。
### Delete a knowledge base DELETE {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}} Authorization: Bearer {{token}}リファレンス:ナレッジ ベース - 削除
ナレッジ ソースを削除します。
### Delete a knowledge source DELETE {{search-url}}/knowledgesources/{{knowledge-source-name}}?api-version={{api-version}} Authorization: Bearer {{token}}リファレンス:ナレッジ ソース - 削除