Microsoft 365 Copilot 取得 API を使って RAG データを取得する
はじめに
Microsoft Build 2025 で発表された Microsoft 365 Copilot 取得 API を、ようやく自分の環境で試せるようになったため、動作を確認します。取得 API はすでに一般提供されており、v1.0 エンドポイントで試せます。
Microsoft 365 Copilot 取得 API は、Microsoft 365 Copilot のセマンティック インデックスを使用します。セマンティック インデックスは、すべてのファイル形式に対応しているわけではないため、注意してください。
今回は、サンプルとして Microsoft Online サービスの SLA ドキュメント (Word ファイル) を使用します。ファイルは、あらかじめ SharePoint のドキュメント ライブラリにアップロードしておきます。
Microsoft Graph 検索 API
まず、通常の Microsoft Graph 検索 API を実行します。https://graph.microsoft.com/v1.0/search/query に対して、「メールの稼働率はどのくらいですか」という質問で検索します。

結果として、次の JSON が返されます。自然文をキーワードに分割して検索していますが、検索結果はありませんでした。
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.searchResponse)",
} "value": [
{
"searchTerms": [
"メール",
"の",
"稼働",
"率",
"は",
"どの",
"くらい",
"です",
"か"
],
"hitsContainers": [
{
"total": 0,
"moreResultsAvailable": false
}
]
}
]
Microsoft 365 Copilot 取得 API
次に、Microsoft 365 Copilot 取得 API を実行します。https://graph.microsoft.com/v1.0/copilot/retrieval に対して、同じ質問で検索します。

結果として、次の JSON が返されます。先ほどとは異なり、検索結果が返ります。内部でチャンク化されているため、同じファイルでも一致する複数の部分が返却されます。
{
"retrievalHits": [
{
"webUrl": "https://karamem0.sharepoint.com/Shared Documents/OnlineSvcsConsolidatedSLA(WW)(Japanese)(November2025)(CR).docx",
"extracts": [
{
"text": " \r\n**追加条件:** お客様は、お客様が Duet Enterprise Online User SL の前提条件として購入した SharePoint Online Plan 2 User SL のサービス クレジットの適用を受けることができる場合に限り、Duet Enterprise Online のサービス クレジットの適用を受けることができます。 \r\n[目次](\\l \"TOC) / [定義]() \r\nExchange Online \r\n**ダウンタイム:** ユーザーが Outlook Web Access を使用して電子メールを送受信することができない期間。このサービスには予定されていたダウンタイムはありません。 \r\n**稼働率:**稼働率は次の式を使用して計算されます。 \r\nユーザー時間 \\( 分 \\) \\- ダウンタイム ユーザー時間 \\( 分 \\) x 100 \r\nダウンタイムは、ユーザー時間単位で測定されます。つまり、各当該期間につき、ダウンタイムは、当該期間に発生した各インシデントの期間 \\(分\\) の合計に、かかるインシデントの影響を受けたユーザーの数を乗じた時間となります。 \r\n**サービス クレジット:**\r\n<table>\r\n<tr>\r\n<th> \r\n稼働率\r\n</th>\r\n<th> \r\nサービス クレジット\r\n</th>\r\n</tr>\r\n<tr>\r\n<td> \r\n99.9% 未満\r\n</td>\r\n<td> \r\n25%\r\n</td>\r\n</tr>\r\n<tr>\r\n<td> \r\n99% 未満\r\n</td>\r\n<td> \r\n50%\r\n</td>\r\n</tr>\r\n<tr>\r\n<td> \r\n95% 未満\r\n</td>\r\n<td> \r\n100%\r\n</td>\r\n</tr>\r\n</table>\r\n\r\n \r\n**OWA 可用性サービスレベルは、次のような状況には適用されません。** \r\nサービス妨害攻撃 \\(DoS\\) \r\nMicrosoft 365 テナントの誤構成 \r\nMicrosoft 365 の境界外のネットワークの問題 \r\nMicrosoft 365 送受信制限の超過 \r\n拡張機能 \\(テナントのカスタム ポリシーやアプリなど\\) による問題 \r\n第三者によるインシデント \\(ISP、OnPrem など\\) \r\n**Exchange 電子メール配信時間の稼働率** \r\n**M365 内部電子メール配信** \r\nM365 内部電子メール配信は、Microsoft 365 の境界内の当該期間中の秒単位で計測されたメッセージの上位 95% として定義され、次のような状況に適用されます。 \r\n**着信から Microsoft 365 クラウドでホストされているメールボックスまで:**メールが Microsoft 365 の境界に入った時点から、Microsoft 365 クラウドでホストされているメールボックスに配信されるまでの経過時間。 \r\n**テナント内の Microsoft 365 から Microsoft 365 クラウドでホストされているメールボックスまで \\(テナント間は除外\\):**Microsoft 365 クラウドでホストされているメールボックスからメールが送信された時点から、そのメールが別の Microsoft 365 クラウドでホストされているメールボックスに配信されるまでの経過時間。 \r\n**Microsoft 365 クラウドでホストされているメールボックスから外部の受信者まで:**Microsoft 365 テナントの境界内で遅延が障害として特定された場合に、Microsoft 365 クラウドでホストされているメールボックスから外部の受信者にメールが送信された時点からの経過時間。 \r\n**Microsoft 365 **",
"relevanceScore": 0.76488797333149
},
{
"text": " \r\n**リレーから外部の受信者まで:**Microsoft 365 の境界内で遅延が障害として特定された場合に、メールが着信コネクターを経由してお客様のオンプレミス環境から Microsoft 365 の境界に入り、Microsoft 365 テナントの境界を出るまでの経過時間。 \r\nM365 内部電子メール配信は計測され、経過時間順に並べ替えられます。上位 95% の計測値を使用して、当該期間の平均配信時間を作成します。 \r\nお客様は、当該期間の電子メール配信の上位 95% が次のしきい値を超えた場合、サービス クレジットの適用を受けることができます。\r\n<table>\r\n<tr>\r\n<th> \r\n\t平均電子メール配信時間\r\n</th>\r\n<th> \r\nサービス クレジット\r\n</th>\r\n</tr>\r\n<tr>\r\n<td> \r\n1 分を超える\r\n</td>\r\n<td> \r\n25%\r\n</td>\r\n</tr>\r\n<tr>\r\n<td> \r\n4 分を超える\r\n</td>\r\n<td> \r\n50%\r\n</td>\r\n</tr>\r\n<tr>\r\n<td> \r\n10 分を超える\r\n</td>\r\n<td> \r\n100%\r\n</td>\r\n</tr>\r\n</table>\r\n\r\n \r\n**保証電子メール配信** \r\nMicrosoft 365 の境界内での保証電子メール配信は、送信に成功した電子メールのメッセージ数を指します。これについて予定されたダウンタイムはなく、M365 の境界内の障害にのみ適用されます。 \r\n稼働率:稼働率は次の式を使用して計算されます。 \r\n月の総時間 \\( 分 \\)\\- ダウンタイム 月の総時間 \\( 分 \\) x 100 \r\nダウンタイムは、利用できなかったサービスの割合を乗じた時間数 \\(分単位\\) を歴月にわたって合計したものです。 \r\n**サービス クレジット:**\r\n<table>\r\n<tr>\r\n<th> \r\n稼働率 \r\n</th>\r\n<th> \r\nサービス クレジット \r\n</th>\r\n</tr>\r\n<tr>\r\n<td> \r\n99.9% 未満 \r\n</td>\r\n<td> \r\n25% \r\n</td>\r\n</tr>\r\n<tr>\r\n<td> \r\n99% 未満 \r\n</td>\r\n<td> \r\n50% \r\n</td>\r\n</tr>\r\n<tr>\r\n<td> \r\n95% 未満 \r\n</td>\r\n<td> \r\n100% \r\n</td>\r\n</tr>\r\n</table>\r\n\r\n \r\n**M365 電子メール送受信の可用性 ** \r\nM365 電子メール送受信の可用性は、M365 境界内の問題のため M365 が電子メールを送受信できない期間と定義されます。これには予定されていたダウンタイムはありません。 \r\n可用性は 2 種類に分かれます。 \r\n M365 の問題による恒久的な拒否 \r\n M365 の問題による暫定的な拒否 \r\n**稼働率 ** \r\n M365 の問題による恒久的な拒否 \r\n稼働率は次の式を使用して計算されます。 \r\n月の総時間 \\( 分 \\)\\- ダウンタイム 月の総時間 \\( 分 \\) x 100 \r\nダウンタイムは、利用できなかったサービスの割合を乗じた時間数 \\(分単位\\) を暦月にわたって合計したものです。 \r\nM365 の問題による暫定的な拒否 \r\n**稼働率** \r\n月の総時間 \\( メッセージ \\)\\- 影響を受けたメッセージ 月の総時間 \\( メッセージ \\) x 100 \r\n影響を受けるメッセージは、問題の期間中に 10 分を超えて遅延したメッセージを、暦月にわたって合計したものであると定義されます。",
"relevanceScore": 0.8056889989911922
},
...
],
"resourceType": "listItem",
"resourceMetadata": {
"title": "OnlineSvcsConsolidatedSLA(WW)(Japanese)(November2025)(CR)",
"author": "Takashi Shinohara"
}
}
]
}
おわりに
Microsoft 365 のデータを RAG で利用する場合、Microsoft AI Search のインデックスを作成すると、データ サイズや権限の制約が発生します。Microsoft 365 Copilot 取得 API は、この課題を解決できる点が大きなメリットです。チャット UI だけでなく、AI エージェントでの利用も想定されるため、有効に活用したいです。
Discussion