【Microsoft×生成AI連載】【Agents】Microsoft Copilot Studioで検索対象を自動で変更する実装をしてみた

【Microsoft×生成AI連載】寺澤です。今回は、Microsoft Copilot StudioでSharePoint Onlineをデータソースに設定し、検索時に特定のフォルダのみを検索するように実装してみました。

本記事では、1つのSharePoint Onlineサイトに特定の内容ごとにファイルをフォルダで分けていることを想定してエージェントを作成します。

※ この記事の情報は2025/7/23時点のものです。

これまでの連載

これまでの連載記事一覧はこちらの記事にまとめておりますので、過去の連載を確認されたい方はこちらの記事をご参照ください。

blog.jbs.co.jp

シナリオの紹介

今回はエージェントに質問をする際に、ユーザーがカテゴリを選択しその範囲内のファイルのみを検索する仕組みを実装します。

Copilot Studioでは、データソースとしてSharePoint Onlineのフォルダを指定することが可能です。

エージェントは、ユーザーの質問に対してフォルダ内の複数のファイルを対象に検索を行い、回答を生成します。

その際に、ファイルの数が多いほど、間違ったファイルを参照する可能性が高くなります。

そのため、検索対象のファイル数をできるだけ減らすことを目的に、ファイル内容のカテゴリごとにフォルダを分けて、検索する際に特定のフォルダのみを検索する仕組みを実装します。

実装

SharePoint Onlineの構成

SharePoint Onlineでは、ドキュメントライブラリとリストを使用します。

ドキュメントライブラリ

カテゴリごとにフォルダを作成し、ファイルを保存します。

検索対象となるファイルをカテゴリごとに絞ることで検索精度の向上を目的としています。

下記のようにフォルダを作成し、ファイルを保存します。

フォルダ ファイル 備考
カテゴリ1 運動会の告知2.pdf  
カテゴリ2 サンプル.pdf  
カテゴリ3 (なし) フォルダ内にファイルが無いときの動作検証用に作成

各フォルダに異なるファイルを保存します。

リスト

カテゴリをリストで管理します。

ユーザーがエージェントに質問する際に表示される選択肢をリストで管理することで、メンテナンス性を向上することを目的としています。

列を追加し、値にはドキュメントライブラリのフォルダ名と同じものを入力します。

エージェントの実装

Copilot Studioでエージェントを作成します。

ブラウザで「https://copilotstudio.microsoft.com/」にアクセスし、任意の名前でエージェントを作成します。

今回はオーケストレーターに生成AIは利用しないため、「オーケストレーション」を無効にします。

ナレッジの追加

概要タブの[ナレッジ]の「+ナレッジの追加」を押します。

表示された「SharePoint」を選択します。

データソースに設定するSharePoint OnlineのサイトのURLを下記の形式で入力します。

https://{ドメイン}.sharepoint.com/sites/{サイト名}/Shared%20Documents

この時「Shared%20Documents」以降はSharePoint Onlineのドキュメントライブラリに作成した各カテゴリのフォルダまでのパスを記載します。

こうすることで入力したパス以降のフォルダ(今回の場合はカテゴリ1、カテゴリ2、カテゴリ3のフォルダ)すべてにアクセスが可能になります。

追加後、「エージェントに追加する」ボタンを押します。

トピックの編集

次は、ユーザーがカテゴリを選択して、質問を行うトピックを作成します。

トピックタブの[+トピックの追加]から「最初から」を選択します。

トリガーのフレーズに「検索」を設定します。入力し、+を押して追加します。

次にSharePoint Onlineのリストから選択肢を取得します。[ツールを追加する]のコネクタタブから「複数項目の取得(SharePoint)」を選択します。

追加したノードの[入力]をクリックし、リストが保存してあるSharePoint Onlineのサイトとリストを入力します。

変数を追加し、SharePoint Onlineのリストの値を設定します。変数名は任意、値は下記の形式を設定します。

AddColumns(Topic.GetItems.value, DisplayName,{リストの列名})

選択肢を表示するために「質問する」を選択します。

質問内容を入力し、[特定]を「リスト変数のオプション」に変更します。

「リスト変数」に先ほど追加した変数(今回はlist)、「ユーザーの応答を名前を付けて保存」の変数名を任意の値に変更します。

次は、エージェントからの質問を追加するために「質問する」を選択します。

下記の通り設定します。

  • 値:質問を入力してください
  • 特定:ユーザーの応答全体
  • ユーザーの応答を名前を付けて保存:questionに変数名を変更

次は、検索するノードを追加するために[詳細]の「生成型の回答」を選択します。

[入力]に先ほどの変数(今回はquestion)を設定します。

次にデータソースを設定します。[データソース]の「編集する」をクリックし「クラシック データ」開きます。

SharePointの「手動入力」を「式」に変更します。

値に[計算式]を選択して、下記の形式で値を設定します。

["https://{ドメイン}.sharepoint.com/sites/{サイト名}/Shared%20Documents/"&
Topic.{ユーザーのカテゴリ選択時の変数名(今回はselectedOption)}.{リストの列名(今回はoptions)}]

「選択したソースのみを検索する」を有効にします。

最後に、トピックの右上で「保存」を押します。

動作確認

テスト ウィンドウを開き、トリガーフレーズ(今回は「検索」)を送信します。

SharePoint Onlineのリストに保存した値が表示されていることを確認し、選択します。

「カテゴリ1」フォルダに入っているファイルに関する質問を行います。

フォルダ内に入っているファイルが参照されていることを確認します。

次はファイルが入っていないフォルダを検索対象として質問します。今回は「カテゴリ3」フォルダにファイルを保存していないため、「カテゴリ3」を選択します。

先ほどと同じ質問をしても、ファイルが参照されていないことを確認します。

利用シーンとメリット、注意点

利用シーン

検索対象のファイルがSharePoint Onlineに保存されていて、対象のファイル数が多い場合におすすめです。

メリット

検索対象のファイルが絞られるため、検索精度が向上します。

注意点

今回の実装ではユーザーがカテゴリを選択して、検索範囲を指定します。

この時に検索したい内容と選択したカテゴリが異なる場合、検索結果に誤りが生じてしまいます。

そのような場合やカテゴリを判断できない場合を考慮して、実装を工夫することが必要です。

まとめ

今回はSharePoint Onlineの検索対象のフォルダを動的に変更する実装を試しました。

RAGを構築する場合、検索結果の精度は必ず確認する必要があります。

今回のような実装やその他の方法を試し、よりよいエージェントを作成できるように工夫していこうと思います。

おまけ(BizChatによる本記事の要約)

シナリオ概要:カテゴリ選択による検索精度の向上
Copilot Studioでエージェントに質問する際、ユーザーがカテゴリを選択し、そのカテゴリに対応するSharePoint Onlineフォルダ内のファイルのみを検索対象とする仕組みを実装した事例です。

目的
ファイル数が多いと誤ったファイルを参照するリスクが高まるため、検索対象を絞ることで検索精度を向上させる。
実装構成
SharePoint Online 側の構成
ドキュメントライブラリ:カテゴリごとにフォルダを作成し、ファイルを分類。
リスト:カテゴリ名を管理し、ユーザーが選択する選択肢として利用。
Copilot Studio 側の構成
エージェント作成:オーケストレーションは無効化。
ナレッジ追加:SharePointのURLを指定し、カテゴリフォルダまでのパスを設定。
トピック作成:
トリガー:「検索」
SharePointリストからカテゴリを取得し、選択肢として表示。
ユーザーの質問を受け取り、変数に保存。
「生成型の回答」ノードで、選択されたカテゴリに対応するフォルダパスを式で指定し、検索対象を限定。
動作確認
カテゴリ1を選択 → フォルダ内のファイルが参照される。
カテゴリ3(ファイルなし)を選択 → ファイルが参照されないことを確認。
利用シーン・メリット・注意点
利用シーン
SharePointに大量のファイルが保存されている環境での検索精度向上。
メリット
検索対象を絞ることで、誤回答のリスクを低減し、精度が向上。
注意点
ユーザーの選択したカテゴリと質問内容が一致しないと、正しい検索結果が得られない。
カテゴリ選択を誤った場合のフォールバック設計が必要。
まとめ
この実装は、RAG(Retrieval-Augmented Generation)における検索精度の向上に有効です。カテゴリごとのフォルダ分けと動的な検索対象の切り替えにより、より信頼性の高いエージェントを構築できます。

執筆担当者プロフィール
寺澤 滉

寺澤 滉(日本ビジネスシステムズ株式会社)

Csol本部 DAPf部所属。AI関連(Azure OpenAIやCopilot Studioなど)を勉強中です。

担当記事一覧