-- Views
April 18, 26
スライド概要
本セッションでは、Copilot Studio のエージェントフローを活用し、日本語の Dataverse に対して自然言語で検索できるチャットボットを構築します。ユーザーが自然言語で問い合わせると、エージェントが正規表現クエリに変換し、Dataverse の「行の検索」(full モード)を実行して結果を HTML テーブルで返します。また、検索構文の注意点やパフォーマンス対策、指示設計のコツも紹介し、実装上の地雷と回避策を解説します。
非IT企業でコーポレートITをする傍ら個人事業主として、Power Platformを使用した業務改善提案等をしています。
Copilot Studio x Dataverse 日本語環境で賢い検索を実現するハイブリッド検索の実装 よう(Yoh) 2026/4/18 気ままに勉強会 #142 #気ままに勉強会
自己紹介 よう 某企業でPower Platform関連のお仕事を しています。 業務ハックLabというブログとYouTube チャンネルで業務改善やPower Platform 関連の情報を発信しています。 #気ままに勉強会
新しくブログサイトを オープンしました! 良ければこちらの方も見ていた だけると嬉しいです! #気ままに勉強会
前回の振り返り Dataverse 検索の高度検索機能は、環境の基本言語が英語のパブリッククラウド環境にのみ 提供される(公式ドキュメントに明記) Dataverse 検索を使用してレコードを検索する - Power Apps | Microsoft Learn 日本語で動作するもの キーワード検索 構文上は記載があるが、実環境では要検証 ワイルドカード検索 Boolean演算子(AND/OR/NOT) 日本語で動作しないもの 自然言語の意図をくみ取る検索 誤字補正、同義語、略語の理解 一般的な知識を使った解釈 高度なランキング ※ 正規表現 / Boolean は API・Power Automate 側に構文記載あり。 # 気ままに勉強会
前回の振り返り Dataverse 検索の高度検索機能は、環境の基本言語が英語のパブリッククラウド環境にのみ 提供される(公式ドキュメントに明記) Dataverse 検索を使用してレコードを検索する - Power Apps | Microsoft Learn 今日はこの「動かない」を突破する 回避策を実装します 日本語環境で動作するもの キーワード検索 構文上は記載があるが、実環境では要検証 ワイルドカード検索 Boolean演算子(AND/OR/NOT) 日本語環境で動作がしないもの 自然言語の意図をくみ取る検索 誤字補正、同義語、略語の理解 一般的な知識を使った解釈 高度なランキング ※ 正規表現 / Boolean は API・Power Automate 側に構文記載あり。 # 気ままに勉強会
アジェンダ 01 Copilot Studio とは? 02 Dataverse「行の検索」アクション 03 エージェントフローの設計 04 【デモ1】エージェントフロー構築 + API実行 05 エージェント指示の設計 06 【デモ2】Copilot Studio 設定 07 【デモ3】自然言語検索 08 地雷と回避/まとめ・Q&A #気ままに勉強会
Copilot Studio とは? Microsoft の AI エージェント / エージェントフロー構築プラットフォーム トピック ナレッジ 会話シナリオ / 対話フローを定 義 AIがデータソースから 回答を生成 ツール 生成オーケストレーション AI が適切なツールを 選んで実行 (今日の主役) エージェントフロー Copilot Studio内で 直接構築できる フロー (今日の主役) # 気ままに勉強会
今日のゴール 日本語のDataverseに対して、自然言語で検索できるチャットボットを構築する ユーザー Copilot Studio エージェントフロー Dataverse検索 自然言語で質問 「印刷エラーの 事例を探して」 生成型アクションで 正規表現クエリに 変換 Dataverse「行の検索」を 実行(fullモード) 正規表現で レコードを検索 結果を返却 作成したエージェントが「自然言語→検索クエリ」の変換を担う = 英語環境のインテリジェント検索の代替 # 気ままに勉強会
Dataverse「行の検索」アクション simpleモード(デフォルト) full モード ←今回使用 基本的な検索構文 後方ワイルドカードは利用可能 正規表現・先頭ワイルドカードは使用不可 Lucene クエリ構文が有効 先頭/後方ワイルドカード・正規表現・ ファジー検索などの高度検索が利用可能 参考:単純なクエリ構文 - Azure AI Search | Microsoft Learn 参考:Lucene クエリ構文 - Azure AI Search | Microsoft Learn 正規表現クエリの例 (/.*印刷.*/ OR /.*プリント.*/) AND (/.*エラー.*/ OR /.*失敗.*/) OR 条件と正規表現で、表記ゆれ(印刷 プリント、エラー 失敗)を明示的に吸収。 # 気ままに勉強会
エージェントフローの設計 トリガー 行の検索 選択(Select) HTMLテーブル 応答 「エージェントがフロー を呼び出したとき」 トリガー 入力: UserQuery (テキスト) 行の検索 検索の種類: full テーブルフィルター指定 Apply to each 不使用 配列を一括変換 タイトル/カテゴリ/説明 検索結果を HTMLテーブルに変換 「エージェントに応答す る」 出力: SearchResult (HTML文字列) 検索モードを full に変更することを忘れない! /配列整形は Apply to each より Select がシンプルで扱いやすい # 気ままに勉強会
DEMO ① エージェントフロー構築 + SearchQuery API 実行結果 # 気ままに勉強会
エージェント指示の設計 指示1: クエリ形式の指定 指示2: HTML出力の強制 正規表現クエリの形式を具体例付きで指示。 具体例を含めると、期待する形式に寄せやすい。 検索結果のHTMLテーブルをそのまま 表示させる指示。 必要に応じて、出力形式を調整して安定化する。 クエリ形式: (/.*キーワードA.*/ OR /.*同義語A.*/) AND (/.*キーワードB.*/ OR /.*同義語B.*/) ツール出力は要約せず、 HTML テーブルをそのまま表示する。 不要な警告文やメタデータは出さないよう指示す る。 # 気ままに勉強会
DEMO ② Copilot Studio 生成型アクション設定 # 気ままに勉強会
DEMO ③ 自然言語で検索する 「印刷でエラーが起きるトラブルを探して」 「プリンターの不具合について過去の事例は?」 → 表記ゆれを吸収して同じ結果がヒットするか? # 気ままに勉強会
日本語実装の地雷と回避策 HTML出力のぶれ 環境や指示内容によって、HTML出力に余計な説明文が混ざることがある → エージェント指示で「警告を出力しない」と明示 ワイルドカード/正規表現のパフォーマンス /.*keyword.*/ のような先頭ワイルドカードや正規表現は処理負荷が高くなりやすい → テーブルフィルターで対象を絞る /可能なら前方一致寄りのクエリを優先 入力パラメータの説明文 入力の名前や説明が曖昧だと、エージェントがツールの使いどころや入力内容を判断しにくい → UserQuery には「検索用クエリ文字列」など用途を具体的に書く # 気ままに勉強会
まとめ 1 生成オーケストレーション × エージェントフローで エージェントに自然言語 → 正規表現クエリ変換を担わせる 2 エージェントフロー内で Dataverse「行の検索」(fullモード)を実行 3 エージェント指示の設計が品質を決定する クエリ形式の指定 + HTML出力の指定 4 日本語実装で特に気になりやすい注意点を事前に把握しておく 余計な説明文の混入・パフォーマンス・入力パラメータの説明文 # 気ままに勉強会
参考リンク集 Copilot Studio / 生成オーケストレーション 1 生成オーケストレーションによるエージェント動作の制御 https://learn.microsoft.com/microsoft-copilot-studio/advanced-generative-actions?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/microsoft-copilot-studio/advanced-generative-actions?wt.mc_id=DX-MVP-5005155 2 生成オーケストレーション機能の適用(アーキテクチャ・ベストプラクティス) https://learn.microsoft.com/microsoft-copilot-studio/guidance/generative-orchestration?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/microsoft-copilot-studio/guidance/generative-orchestration?wt.mc_id=DX-MVP-5005155 3 カスタムエージェントにツールを追加する https://learn.microsoft.com/microsoft-copilot-studio/add-tools-custom-agent?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/microsoft-copilot-studio/add-tools-custom-agent?wt.mc_id=DX-MVP-5005155 # 気ままに勉強会
参考リンク集 エージェント指示 / エージェントフロー 1 生成オーケストレーション向け高品質な指示の構成 https://learn.microsoft.com/microsoft-copilot-studio/guidance/generative-mode-guidance?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/microsoft-copilot-studio/guidance/generative-mode-guidance?wt.mc_id=DX-MVP-5005155 2 エージェントフローの概要 https://learn.microsoft.com/microsoft-copilot-studio/flows-overview?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/microsoft-copilot-studio/flows-overview?wt.mc_id=DX-MVP-5005155 3 エージェントフローの作成(ツールとして利用) https://learn.microsoft.com/microsoft-copilot-studio/advanced-flow-create?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/microsoft-copilot-studio/advanced-flow-create?wt.mc_id=DX-MVP-5005155 4 エージェントフローの呼び出し https://learn.microsoft.com/microsoft-copilot-studio/advanced-use-flow?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/microsoft-copilot-studio/advanced-use-flow?wt.mc_id=DX-MVP-5005155 # 気ままに勉強会
参考リンク集 Dataverse「行の検索」/ Azure AI Search クエリ構文 1 Dataverse検索を使用して行を取得する(Search type: simple / full) https://learn.microsoft.com/power-automate/dataverse/search?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/power-automate/dataverse/search?wt.mc_id=DX-MVP-5005155 2 SearchQuery APIの詳細(searchtype・searchmode等のパラメータ仕様) https://learn.microsoft.com/power-apps/developer/data-platform/webapi/relevance-search?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/power-apps/developer/data-platform/webapi/relevance-search?wt.mc_id=DX-MVP-5005155 3 Simpleクエリ構文(Azure AI Search) https://learn.microsoft.com/azure/search/query-simple-syntax?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/azure/search/query-simple-syntax?wt.mc_id=DX-MVP-5005155 4 Luceneクエリ構文(正規表現・ワイルドカード・ファジー検索等) https://learn.microsoft.com/azure/search/query-lucene-syntax?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/azure/search/query-lucene-syntax?wt.mc_id=DX-MVP-5005155 Dataverse検索の基本 # 気ままに勉強会
参考リンク集 前回セッションからの参照 / ブログ記事 1 検索結果の理解(インテリジェント検索の英語環境限定記載) https://learn.microsoft.com/power-apps/user/relevance-search#understand-search-results?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/power-apps/user/relevance-search#understand-search-results?wt.mc_id=DX-MVP-5005155 2 Dataverse検索の環境設定(管理者向け) https://learn.microsoft.com/power-platform/admin/configure-relevance-search-organization?wt.mc_id=DX-MVP-5005155 https://learn.microsoft.com/power-platform/admin/configure-relevance-search-organization?wt.mc_id=DX-MVP-5005155 3 【ブログ】Dataverse検索の日本語環境における制限と回避策 https://yougears-lab.com/dataverse-search-japanese-limitation/ https://yougears-lab.com/dataverse-search-japanese-limitation/ # 気ままに勉強会
「面倒」は「改善のネタ」。 「面倒」を「楽に」、 「改善」を「楽しい」に 変えていきましょう! # 気ままに勉強会