AI/BI Genieスペースで信頼できるアセットを使用する

プレビュー

この機能は パブリック プレビュー段階です。ワークスペース管理者は、プレビューページからこの機能を有効にできます。「Databricksプレビューの管理」を参照してください。

この記事では、信頼できるアセットを定義し、それらを使用してGenieスペースで検証済みの回答を提供する方法について説明します。

信頼できるアセットとは

信頼できるアセットは、予想されるユーザーからの特定の質問に答えるために作成できる ユーザー定義のテーブル関数 です。 これらを使用することで、一般的な質問に答えるためのレシピとして機能する、検証済みのパラメーター化された SQL 関数を定義できます。 ユーザーが信頼できるアセットを呼び出すような質問を送信すると、それがレスポンスに表示されるので、結果の正確性がさらに保証されます。

信頼できるアセットで回答された質問の例。

注:

信頼できるアセットは、他のすべての命令に代わるものではありません。 Databricks では、確立された定期的な質問には信頼できるアセットを使用することをお勧めします。 これらは特定の質問に対する正確な回答を提供し、隣接する質問に対処するためにGenieによって再利用されることはありません。

信頼できるアセットを作成する理由

AI ツールを使用する場合、ユーザーは生成された応答の精度を評価する必要があります。 通常、彼らは答えが理にかなっていて、質問に効果的に対処しているかどうかを検討することによってこれを行います。 Genieでは、応答は結果のテーブルとして配信されます。 ユーザーは結果セットを作成する生成された SQL を確認できますが、技術者以外のユーザーには SQL ステートメントを解釈したり、回答の正確さを評価したりする知識がない可能性があります。 信頼できるアセットは、これらのユーザーが誤解を招く、正しくない、または解釈が困難な応答に遭遇する可能性を減らすのに役立ちます。

ユーザーは、信頼できるアセットを使用した応答を受け取った場合、ドメイン エキスパートが結果を入力する SQL ステートメントを確認したことを確信できます。

信頼できるアセットとサンプル SQL クエリの違いは何ですか?

信頼できるアセットは、 Genieスペースのユーザーが尋ねると予想される質問に対する検証済みの回答を提供します。 信頼できるアセットがユーザーの質問に答えられる場合、信頼できる資産として保存されているユーザー定義のテーブル関数が実行され、指定された結果セットが返されます。 こうすることで、ユーザーが質問に対する正しい情報を受け取っていることがわかり、ビジネス ユーザーには検証された回答を受け取っているというさらなる保証が提供されます。 Genieは質問に答えるときに、信頼できるアセットのSQLのコンテンツを考慮しません。

サンプルSQLクエリは、 Genie Space を設定するための別のオプションを提供します。 これらは、 Genieが他の質問を処理する方法と、生成するSQLステートメントを記述する方法を教えるコンテキストを提供します。 指示セットの「SQL クエリのサンプル」セクションで提供されている正確なサンプルは、ビジネス ユーザーが関連する質問をしたときに必ずしも返されるわけではありません。

信頼できるアセットを定義する

信頼できるアセットの定義は、ありそうな質問を特定することから始まります。 たとえば、営業パイプライン データセットを扱っているとします。営業マネージャーがよく尋ねる質問は、「パイプライン内の未解決の営業機会は何ですか?」です。

次の手順では、この質問に答える信頼できるアセットを作成する手順の概要を示します。

  1. 質問に答える SQL クエリを定義してテストします。

    このクエリは 2 つのテーブルを結合し、「パイプライン」予測カテゴリにリストされているオープンな商談のデータセットを返します。 このステップの目標は、期待される結果を返す基本的なクエリを記述することです。

    SELECT
      o.id AS `OppId`,
      a.region__c AS `Region`,
      o.name AS `Opportunity Name`,
      o.forecastcategory AS `Forecast Category`,
      o.stagename,
      o.closedate AS `Close Date`,
      o.amount AS `Opp Amount`
    FROM
    users.user_name.opportunity o
    JOIN catalog.schema.accounts a ON o.accountid = a.id
    WHERE
    o.forecastcategory = 'Pipeline'
    AND o.stagename NOT LIKE '%closed%';
    
  2. Unity Catalog関数を定義します。

    Unity Catalog関数はクエリをパラメーター化し、ユーザーが尋ねると予想される特定の条件に一致する結果を生成する必要があります。 営業マネージャーが特定の地域または地域のグループに焦点を当てて結果セットを絞り込みたいとします。

    次の例では、地域のリストをパラメーターとして受け取り、テーブルを返す Unity Catalog 関数を定義します。 関数の戻り値は、前のステップのSQLステートメントとほぼ同じですが、地域が指定されている場合は結果を地域別にフィルター処理するように WHERE 句が変更されています。 関数定義で提供されるコメントは、 Genieにこの関数をいつどのように呼び出すかを指示するために重要です。

    • 引数コメント: open_opps_in_region関数は引数として文字列の配列を必要とします。 コメントには、想定される入力の例が含まれています。 引数が指定されていない場合、デフォルト値はNULLになります。 オプションの引数とコメントを含める方法の詳細については、 「関数の記述に関するヒント」を参照してください。

    • 関数コメント: SQL テーブル関数内のコメントには、関数の機能の詳細な説明が記載されています。 これは、ユーザーの質問への応答としていつ関数を使用するかをGenieに伝えるため、重要です。 コメントは、関数の目的をできるだけ正確に説明する必要があります。 この情報は、 Genieが特定の質問に対する関数の関連性を認識するのに役立ちます。

    CREATE
    OR REPLACE FUNCTION users.user_name.open_opps_in_region (
      regions ARRAY < STRING >
      COMMENT 'List of regions.  Example: ["APAC", "EMEA"]' DEFAULT NULL
    ) RETURNS TABLE
    COMMENT 'Addresses questions about the pipeline in the specified regions by returning
     a list of all the open opportunities. If no region is specified, returns all open opportunities.
     Example questions: "What is the pipeline for APAC and EMEA?", "Open opportunities in
     APAC"'
    RETURN
      SELECT
      o.id AS `OppId`,
      a.region__c AS `Region`,
      o.name AS `Opportunity Name`,
      o.forecastcategory AS `Forecast Category`,
      o.stagename,
      o.closedate AS `Close Date`,
      o.amount AS `Opp Amount`
      FROM
      catalog.schema.opportunity o
      JOIN catalog.schema.accounts a ON o.accountid = a.id
      WHERE
      o.forecastcategory = 'Pipeline'
      AND o.stagename NOT LIKE '%closed%'
      AND (
        isnull(open_opps_in_region.regions)
        OR array_contains(open_opps_in_region.regions, region__c)
      );
    

    コードを実行して関数を作成すると、デフォルトで現在アクティブなスキーマに登録されます。 Unity Catalog のカスタム SQL 関数を参照してください。 構文と例については、「SQL テーブル関数の作成」を参照してください。

  3. 信頼できるアセットを追加します。

    Unity Catalog関数が作成されると、Genie スペースで少なくともCAN EDIT権限を持つユーザーは、GenieスペースのInstructionタブから関数を追加できます。

必要な権限

Genieスペースに対して少なくともCAN EDIT権限を持つユーザーは、信頼できるアセットを追加または削除できます。

Genieスペース ユーザーには、関数を含むカタログとスキーマに対する CAN USE 権限が必要です。 信頼できるアセットを呼び出すには、Unity Catalog 内の関数に対するEXECUTE権限が必要です。 Unity Catalog のセキュリティ保護可能なオブジェクトは、親コンテナーから権限を継承します。 Unity Catalog 内のセキュリティ保護可能なオブジェクトを参照してください。

Genieスペースでの共有を簡素化するために、 Databricks 、 Genieスペースで使用するすべての関数を含む専用のスキーマを作成することをお勧めします。

関数を記述するためのヒント

次の例を確認して、信頼できるアセットの動的関数を作成する方法を学習してください。

デフォルト値を含める

デフォルト 値を指定できます。 次の例に示すように、関数シグネチャで DEFAULT 句を使用します。

countries ARRAY<STRING> COMMENT 'List of countries' DEFAULT ARRAY()

サンプル値を含める

値の列挙が設定されている列の場合は、コメントで明確に定義することで精度を高めます。 次の例は、値のリストの例を示しています。

regions ARRAY < STRING > COMMENT 'List of regions. Values: ["AF","AN","AS", "EU", "NA", "OC", "SA", NULL]'

オプションで作成する

オプションの引数を作成するには、次の例に示すように、デフォルト引数をNULLに設定します。

min_date STRING DEFAULT NULL

コメントによる書式設定の指定

次の例に示すように、コメントに引数を含めることで、引数の正確な形式を指定できます。

min_date STRING COMMENT 'minimum date (included) for a transaction, in `yyyy-mm-dd` format'

NULL値を明示的にチェックする

オプションの を含める場合、想定される値の 1 つはNULLです。 NULL との比較では予測できない結果が生じる可能性があるため、NULL値のチェックを関数に明示的に組み込む必要があります。次の例は、構文の例です。

WHERE (isnull(min_date) OR created_date >= min_date)