データ エージェントのセマンティック モデルのベスト プラクティス

Fabric データ エージェントを使用すると、組織は生成 AI を使用して会話システムを構築できます。 Power BI セマンティック モデルをデータ ソースとして接続することで、チームは自然言語の質問を行い、複雑な DAX クエリや SQL クエリを記述することなく、正確でコンテキストに富んだ回答を受け取ることができます。

ただし、AI 応答の品質は、データ ソースをどの程度適切に準備するかによって大きく異なります。 Fabric データ エージェントは、レイクハウス、ウェアハウス、イベントハウス、オントロジなどの複数のデータ ソースの種類をサポートしていますが、このガイドでは、特に Power BI セマンティック モデルに焦点を当て、精度と関連性を最大化するように構成するためのベスト プラクティスについて説明します。

Fabric データ エージェントのしくみ

データ エージェントは、ユーザーの質問が Orchestrator を通過する階層構造のアーキテクチャを使用します。 Orchestrator は、適切なデータ ソースを決定し、クエリを生成、検証、実行するための Power BI セマンティック モデル用の DAX 生成ツールを含む特殊なツールを呼び出します。

クエリ処理フロー

  1. 質問の解析: エージェントは Azure OpenAI を通じてユーザーの質問を処理し、セキュリティ プロトコルとアクセス許可に準拠し、 Microsoft の責任ある AI 原則に準拠します。

  2. データ ソースの選択: システムは、提供したスキーマ情報と AI 命令を使用して、利用可能なソースに対して質問を評価します。

  3. クエリの生成: セマンティック モデルの場合、DAX 生成ツールは、スキーマ、メタデータ (数値列のシノニム、最小値と最大値、レポートのビジュアル メタデータなど)、 AI の準備データで構成されたコンテキスト、および会話履歴に基づいて DAX クエリを生成します。

  4. 応答の書式設定: エージェントは、エージェントの指示に基づいて、テーブル、概要、または分析情報を使用して、人間が判読できる応答に結果を書式設定します。

DAX 生成への入力を示すクエリ処理フロー: クエリ、ビジュアル メタデータ、AI 命令、検証済みの回答、AI データ スキーマ。

AI の準備: セマンティック モデルの AI を準備する

Power BI の PREP for AI 機能には、Fabric データ エージェントによるセマンティック モデルの解釈方法に直接影響する 3 つの構成コンポーネントが用意されています。 これらのコンポーネントには、Power BI Desktop と Power BI サービスの両方でアクセスできます。 Power BI Copilot では AI 構成にも Prep が使用されるため、これらの設定に時間を費やして、Copilot とデータ エージェントの両方の応答にメリットをもたらします。

Important

セマンティック モデルに対してクエリを実行する場合、データ エージェントによって使用される DAX 生成ツールは、セマンティック モデルのメタデータと AI 構成の準備のみに依存します。 DAX 生成ツールは、DAX クエリ生成のためにデータ エージェント レベルで追加した命令を無視します。 正確な結果を得るには、AI の適切な準備が不可欠です。

AI データ スキーマ

AI データ スキーマを使用すると、AI の優先順位付けに焦点を当てたモデルのサブセットを定義できます。 データ エージェントには、データ ソースとしてセマンティック モデルを追加するときに独自のテーブルを選択することもできますが、まず Prep for AI でスキーマを構成します。 DAX 生成ツールでは、このスキーマを使用して DAX クエリを作成します。

このスキーマは、Power BI Desktop または Power BI サービスで、[ホーム] リボンから [ AI 用の準備データ ] を選択して構成できます。 次に、[ データ スキーマの簡略化 ] タブに移動します。そこから、応答を生成するときに AI が使用するテーブル、列、およびメジャーを選択します。 詳細なセットアップ手順については、「 AI データ スキーマの設定」を参照してください。

AI 分析用にテーブルと列が選択された [データ スキーマの簡略化] パネルを示す AI の準備データのスクリーンショット。

セマンティック モデルをデータ エージェントに追加する場合は、Prep for AI で定義したのと同じテーブルを選択して、一貫した動作を保証します。 まず、データ エージェントのスコープ (回答する必要がある質問の種類) を定義します。 次に、関連するオブジェクトのみを選択します。 この方法では、あいまいさが軽減され、精度が向上し、応答の待機時間が短縮されます。

DAX 生成ツールは、モデルのメタデータに依存して質問を解釈します。 テーブル、列、メジャーには、ユーザーがデータを自然に参照する方法を反映した、わかりやすくビジネスフレンドリーな名前を使用します。 たとえば、'DIM_GEO_01' ではなく 、'TR_AMT' または 'Sales Region' の代わりに 'Total Revenue' を使用します。 このガイダンスは、重複するフィールドまたは類似の名前付きフィールドを持つ大規模なモデルでは特に重要です。あいまいな名前を指定すると、クエリが正しく生成されません。

例: フィールドのあいまいさの解決
AI データ スキーマなし AI データ スキーマを使用する
ユーザーが尋ねました:"What were our sales last quarter?" セマンティックモデルには、売上合計、総売上、純売上、返品後の売上といった複数の売上関連指標が含まれています。 AI は総売上を返しますが、チームは通常、四半期ごとのレポートに Net Sales を使用します。 Net Sales のみを含むように AI データ スキーマを構成し、関連のない他のメジャーを除外した後、同じ質問で予想されるメトリックが返されるようになりました。 AI は、ユーザーが意図した "販売" 測定を推測する必要がなくなりました。

AI データ スキーマのヒント

  • 一貫性のある正確な結果を得るには、Prep for AI で AI データ スキーマを使用して定義されているのと同じテーブルを Fabric データ エージェントで選択してください。

  • スキーマを選択する場合は、依存オブジェクトも含めます。 たとえば、Total Revenue メジャーが、追加の列に依存する他の 2 つのメジャーを参照している場合は、それらの依存オブジェクトをすべてスキーマに含めます。 依存関係を識別するには、セマンティック リンク ラボ ライブラリのget_measure_dependencies関数を使用します。

  • 大規模なセマンティック モデルがある場合、すべてのオブジェクトの名前を手動で変更するのは面倒な場合があります。 Power BI Modeling MCP サーバーを使用して、LLM によりテーブル、列、メジャーにビジネスに適した名前を生成します。 保存する前に変更を確認して検証し、DAX の式、リレーションシップ、またはその他の依存オブジェクトを中断しないようにします。

検証済みの回答

検証済みの回答は、特定の質問がトリガーする、ユーザーが承認した視覚的な応答です。 これらは、誤って解釈される可能性のある一般的または複雑な質問に対して、一貫性のある信頼性の高い回答を提供します。 検証済みの回答は (レポート レベルではなく) セマンティック モデル レベルで格納されるため、同じモデルを使用するすべてのデータ エージェントで機能します。 詳細については、「 AI のためのデータの準備 - 検証済みの回答」を参照してください。

データ エージェントで検証済みの回答を使用する場合、システムは Power BI ビジュアル自体を返しません。 代わりに、ユーザーの質問とビジュアルのプロパティ (列、メジャー、フィルター) を使用して、DAX クエリの生成に影響を与えます。 このアプローチは、DAX 生成ツールを正しいクエリ構造に導くことで、検証済みの回答によって応答の精度が向上することを意味します。 ユーザーがデータ エージェントに質問すると、システムは、新しい応答を生成する前に、検証済みの回答で定義されたプロンプトと正確または意味的に類似した一致を最初にチェックします。

Power BI での検証済みの回答のセットアップのスクリーンショット。アイランド名と乗車目的のトリガー フレーズ、ビジュアル グラフ、フィルター オプションが表示されています。

例: 地域用語の処理

検証済みの回答なし 検証済みの回答あり
ユーザーが "Show me performance by territory" AI は製品カテゴリとして "territory" を解釈します。これは、Products テーブルに Territory 列があるためです。 ユーザーは実際に販売地域を指していました。 "What is the sales performance by territory?"、"Show me sales broken down by territory"、"Sales are distributed across regions?" (地域間での売上の分散方法) などのトリガーの質問を含む地域の販売ビジュアルを使用して、検証済みの回答を作成します。ユーザーが担当地域のパフォーマンスについて質問すると、地域の売上ビジュアルで使用されるオブジェクトに基づいて、一貫して正確な応答が得られます。

検証済みの回答の構成に関するヒント

  • 自然なバリエーションをカバーするには、検証済みの回答ごとに 5 ~ 7 個のトリガーの質問を使用します。
  • ユーザーが試す可能性のある正式な言い回しと会話のフレージングの両方を含めます。
  • 複数の検証済み回答を作成せずに柔軟にスライスできるように、最大 3 つのフィルターを構成します。
  • 検証済みの回答で参照されているテーブル、列、またはメジャーの名前を変更する場合は、検証済みの回答を更新し、変更を有効にするためにもう一度保存します。

AI の手順

PREP for AI の AI 命令は、セマンティック モデルに関するコンテキスト、ビジネス ロジック、ガイダンスを直接提供します。 これらは、用語を明確にし、分析アプローチをガイドし、AI が理解しない重要なビジネスコンテキストとセマンティック コンテキストを提供するのに役立ちます。

これらの手順は、Power BI Desktop または Power BI サービスで[ホーム] リボンから [AI 用のデータの準備 ] を選択し、[ AI 命令の追加 ] タブに移動することで構成できます。詳細なセットアップ手順については、 AI の手順に関するドキュメントを参照してください

[ADD AI instructions]\(AI 命令の追加\) タブが開いている [AI 用 Power BI Prep data for AI] パネルのスクリーンショット。ビジネス用語と分析の既定値を入力するためのテキスト ボックスが表示されています。

AI 命令は、LLM が解釈する非構造化ガイダンスですが、正確に従う保証はありません。 明確で具体的な命令は、複雑な命令や競合する命令よりも効果的です。

前述のように、DAX 生成ツールは、セマンティック モデルの AI の準備で構成された AI 命令のみを参照します。 データ エージェント命令はツールに渡されず、セマンティック モデルのクエリを実行する場合は無視されます。 このため、データ エージェント レベルでセマンティック モデル固有の命令を追加しないでください。 代わりに、DAX 生成ツールで使用できる AI の準備ですべてのセマンティック モデル命令を保持します。 データ エージェントの指示には、一般的な応答の書式設定の基本設定、ソース間ルーティング規則、一般的な省略形、トーンなど、エージェントで構成されているすべてのデータ ソースに適用されるガイダンスのみを含める必要があります。 また、他のデータ ソースとは異なり、データ エージェントはセマンティック モデルのデータ ソース命令や説明をサポートしていません。

例: ビジネス用語の定義

AI 命令なし AIの指示を使用する
ユーザーは次の質問を行います。"先月のトップパフォーマーは誰でしたか?AI は、組織内の "トップ パフォーマー" の意味を理解せず、エラーを返したり、明確化を求めたりします。 「次の指示を追加します:「トップ パフォーマーとは、毎月のクォータを110%以上達成する営業担当者です。」 Rep_Performance テーブルを使用し、Quota_Attainment > = 1.1" でフィルター処理します。これで、AI は質問を正しく解釈し、適切な結果を返します。

効果的な命令パターン

  • 期間の定義: 「ピークシーズンは11月から1月まで行われます。 オフシーズンは2月から4月です。
  • メトリックの基本設定: "ユーザーが収益性について質問する場合は、Gross_Profitではなく、Contribution_Marginメジャーを使用します。"
  • データ ソース ルーティング: "インベントリに関する質問の場合は、Sales_OrdersよりもWarehouse_Inventoryテーブルに優先順位を付けます。"
  • 既定のグループ化: 「特に指定しない限り、カレンダー月ではなく、会計四半期別に収益を分析します。

DAX クエリ生成ツールは、AI の準備に加えて、ビジュアル タイトル、列、メジャー、フィルターなどのレポート ビジュアルのメタデータも使用して、クエリの精度を向上させます。

  1. セマンティック モデルを最適化する: まず、パフォーマンスのためにセマンティック モデルを最適化します。 データ エージェントのパフォーマンスの低下は、多くの場合、設計が不十分なセマンティック モデル、非効率的な DAX メジャー、または 2 つの組み合わせによって生じます。 ユーザーが質問すると、データ エージェントによって DAX クエリが生成され、モデルに対して実行されます。 適切に最適化されたモデルでは、使用するリソースが少なく、クエリの実行速度が速くなります。 会話型インターフェイスでは、ユーザーは迅速な応答を期待するため、パフォーマンスが低下すると、ユーザー エクスペリエンスと導入に直接影響します。

    さらに、不要な列、テーブル、メジャーを含む肥大化したモデルでは、DAX 生成ツールが解析するためのノイズが増え、応答の精度が低下する可能性があります。 モデルを早期に最適化することで、データの増加やモデルの複雑化に伴うパフォーマンスの問題も回避できます。 詳細については、 Power BI のパフォーマンスに合わせてモデルを最適化するコースを 参照してください。

    ファブリック ノートブックで ベスト プラクティス アナライザーとセマンティック モデル メモリ アナライザー を使用して、不適切なデータ型、不要な列、カーディナリティの高い列、非効率的な DAX パターンなどの問題を特定します。 テーブル、列、メジャーに説明を追加して、LLM が AI データ スキーマ内の各オブジェクトの目的を理解しやすくします。

    ベスト プラクティス アナライザー、メモリ アナライザー、コミュニティ ノートブックのオプションが強調表示されている Power BI セマンティック モデル メニューのスクリーンショット。

  2. AI > の準備を定義するAI データ スキーマ: データ エージェントのスコープに基づいて、エージェントが回答する必要がある質問に関連するテーブル、列、メジャーのみを選択して、Prep for AI で AI データ スキーマを構成します。

  3. Prep for AI で検証済みの回答を作成: 最も一般的な質問を特定し、適切なビジュアルを使用して Prep for AI で検証済みの回答を設定します。 完全で堅牢な質問をトリガー (部分的なフレーズではなく) として使用して、照合の精度を向上させます。

  4. データ エージェントへのセマンティック モデルの追加: AI の準備で AI 命令を追加する前に、データ エージェントからの応答をテストして検証します。 この手順は、DAX クエリの生成を改善するために AI 命令が必要な場所を理解するのに役立ちます。

  5. AI > の準備を追加するAI 命令: 検証結果に基づいて、ビジネス用語、分析の基本設定、およびデータ ソースの優先順位を、(データ エージェントの指示ではなく) AI 命令の準備で定義します。

  6. レポートビジュアルを準備する: 非表示のビジュアルやページなど、セマンティック モデルに接続されているレポートを確認して、ビジュアルにわかりやすいタイトルがあることを確認します。 適切に構造化されたビジュアルは、ビジュアル タイトル、テーブル、列、使用されるメジャー、フィルターの適用などのビジュアル メタデータを使用して、AI が応答を解決するのに役立ちます。

  7. DAX の検証とテスト: 応答の精度は、生成された DAX クエリによって異なります。 データ エージェントをテストする場合は、各応答で DAX クエリを確認して、有効であり、質問に正しく回答することを確認します。 結果が正しくない場合は、DAX を分析して、調整が必要な構成 (セマンティック モデル、AI データ スキーマ、検証済みの回答、または AI 命令) を特定します。

    ユーザー クエリ、AI によって生成された売上応答、ステップ トラッカー、DAX クエリ コード パネルを示すデータ エージェント インターフェイスのスクリーンショット。

  8. データ エージェントの構成手順: エージェントで構成されているすべてのデータ ソースに適用されるガイダンスに対してのみ、データ エージェント レベルで手順を追加します。 このガイダンスには、一般的な応答の書式設定の基本設定、ソース間ルーティング規則、一般的な省略形、トーンが含まれます。 DAX 生成ツールに渡されないため、セマンティック モデル固有の命令はここに追加しないでください。 エージェントの構成手順のガイダンスについては、 構成ガイドラインを参照してください。

  9. 検証と反復処理: LLM は、適切なコンテキストなしで正しくない結果を生成する可能性があります。 構成を継続的に反復処理し、応答を検証して、データ エージェントでの信頼を構築します。 プログラムで応答を評価するには、Fabric データ エージェント Python SDK を使用して、真偽の質問と回答のペアに対して自動評価を実行し、精度メトリックを分析できます。 SDK はこの場合のみ評価用であり、セマンティック モデルの AI 構成の準備を変更できないことに注意してください。 詳細については、「 データ エージェントの評価」を参照してください。 さらに、利害関係者とエンド ユーザーを評価プロセスに関与します。 フィードバックにより、応答が実際の期待と使いやすさと一致することが保証され、自動チェックが見逃す可能性のあるギャップを特定するのに役立ちます。

  10. ソース管理とデプロイ パイプラインを実装する: Git 統合パイプラインとデプロイ パイプラインを使用して、開発、テスト、運用の各ワークスペースにわたってデータ エージェントの構成を管理します。 この方法により、エンド ユーザーがアクセスする運用環境に昇格する前に、構成の変更がテストおよび検証されます。 詳細については、 Fabric データ エージェントのソース管理、CI/CD、ALM に関するページを参照してください。

ヒント

ファブリック ツールボックス リポジトリ内のリソースを参照として使用して、このワークフローを進めることができます。 このリポジトリには次のものが含まれます。

回避する一般的な落とし穴

  • スター スキーマを使用しない: フラットで非正規化されたテーブルまたはピボットされたデータ構造を使用するセマンティック モデルにより、DAX の効率が低下し、正しく書きにくくなります。 DAX は、ファクト テーブルとディメンション テーブルが明確なスター スキーマ用に最適化されています。 ワイド テーブルを正規化された構造にピボット解除します。各行は 1 つの観測値を表します。

  • 非表示フィールドに依存する場合: 検証済みの回答は、モデル内の非表示の列を参照している場合は機能しません。

  • 不要な対策を含む: セマンティック モデルには、多くの場合、レポートの対話機能を強化するために使用されるヘルパー メジャーと中間オブジェクトが含まれています。 AI データ スキーマを構成するときは、実際のビジネス メトリックを計算するメジャーのみを含めます。 ヘルパー メジャーを除外すると、ノイズが減り、DAX 生成ツールがより正確なクエリを生成するのに役立ちます。

  • メジャーの重複または重複: 類似のメトリック (Total Sales、Sales Amount、Revenue など) を計算する複数のメジャーでは、あいまいさが生まれます。 測定値を統合または区別し、AIデータスキーマから重複を除外しなさい。

  • わかりにくい名前付け: TR_AMT、F_SLS、DIM_GEO_01などのオブジェクト名は、DAX生成ツールにコンテキストを提供しません。 Total Revenue、Sales、Customer Geography など、わかりやすいわかりやすい名前を使用します。 オブジェクトの名前を変更できない場合は、AI が目的を理解するために必要なコンテキストを説明とシノニムが提供していることを確認してください。

  • 暗黙的なメジャーに依存する場合: 暗黙的なメジャーは、予期しない結果につながる可能性があります。 ユーザーがクエリを実行する計算用の明示的な DAX メジャーを作成し、意図しない集計を防ぐために、数値列に適切な既定の集計 (Sum、Average、None など) を設定します。

  • あいまいな日付フィールド: 明確なガイダンスがない複数の日付列 (注文日、出荷日、期限、カレンダー四半期/FY 四半期など) は、AI を混乱させるものです。 Prep for AI の検証済み回答と AI 命令を使用して、既定で使用する日付フィールドまたは特定の質問の種類を指定します。

  • 競合する手順: 検証済み応答の構成と矛盾する AI 命令により、予測できない動作が発生します。

  • スキーマ絞り込みのスキップ: 同じような名前のフィールドが多数ある大規模なモデルには、焦点を絞った AI データ スキーマが必要です。

  • 過度に複雑な命令: 指示に焦点を当て、具体的な状態に保ちます。 AI は解釈されますが、複雑で競合するガイダンスに従う保証はありません。 複雑な命令によって待機時間が長くなる場合もあります。

Tools

これらのガイドラインに従うには、 fabric-toolbox GitHub リポジトリから次のツールを使用できます。

その他のリソース