コンテキスト セットの概要

QueryData を使用すると、会話調の言葉を使用してデータベース内のデータを操作し、データ エージェントを構築できます。QueryData は、データベースに関する一意の情報を含むコードのコレクションであるコンテキスト セットを使用して、データベースのクエリを作成します。このコンテキストにより、QueryData は自然言語の質問を対象となるユースケースに適した正確なクエリに変換できます。

QueryData を使用する場合

QueryData は、次のようなアプリケーションに最適です。

  • カスタマー サービスの自動化: 「注文した商品はどこにありますか?」、「現在の差引残高はいくらですか?」といった大量の問い合わせに対応します。
  • e コマースのショッピング アシスタント: 「100 ドル以下のランニング シューズを見せて」といった自然言語のクエリを使用して、ユーザーが膨大な商品 カタログをナビゲートできるようにします。
  • 現場で操作するツール: 外勤従業員が在庫 状況、部品の入手可能性、サービス チケットの詳細をリアルタイムでクエリできるようにします。

QueryData の仕組み

効果的なエージェント アプリケーションを構築するには、QueryData がデータの編成とビジネス ロジックを理解している必要があります。この情報は、コンテキスト セットの形式で提供します。

コンテキストは、各コンテキスト タイプの JSON オブジェクトを含むファイルで定義します。このようなコンテキスト ファイルは、Gemini CLI を使用して作成します。その後、コンソールで作成したコンテキスト セットにコンテキストファイルをアップロードします。 Google Cloudこのプロセスにより、QueryData はデータベースの特定のスキーマとアプリケーションのビジネス ロジックを学習できます。

コンテキスト ファイルは次のようになります。

{
  "templates": [
    {
      "nl_query": "Count Prague loan accounts",
      "sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" ='Prague'",
      "intent": "How many accounts associated with loans are located in the Prague region?",
      "manifest": "How many accounts associated with loans are located in a given city?",
      "parameterized": {
        "parameterized_intent": "How many accounts associated with loans are located in $1",
        "parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
      }
    }
  ],
  "facets": [
    {
      "sql_snippet": "T.\"A11\" BETWEEN 6000 AND 10000",
      "intent": "Average salary between 6000 and 10000",
      "manifest": "Average salary between a given number and a given number",
      "parameterized": {
         "parameterized_intent": "Average salary between $1 and $2",
         "parameterized_sql_snippet": "T.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ],
  "value_searches": [
    {
      "query": "SELECT $value as value, 'accounts.account_type' as columns, 'Account Type' as concept_type, 0 as distance, '{}'::text as context FROM \"accounts\" T WHERE T.\"account_type\" = $value",
      "concept_type": "Account Type",
      "description": "Exact match for account types"
    }
   ]
}

エンドユーザーが自然言語で質問すると、QueryData は、コンテキストをキュレートするデベロッパーによって監査されたテンプレートとファセットに質問を照合する処理を優先的に行います。一致を確認すると、QueryData は選択されたクエリ テンプレートとファセットを使用してデータベース クエリを合成します。次に、コンテキスト セットのロジックがそのクエリをデータベースに対して実行し、正確な結果を返します。

おすすめの方法は、コンテキスト内で値検索を定義することです。値検索を使用すると、エージェントは値フレーズをデータベース列に保存されている特定の値にマッピングできます。これにより、LLM は実際のデータに基づいて、用語が District 名を指すのか City を指すのかなど、曖昧さを解消できます。

エージェントが一致するテンプレートを見つけられなかった場合は、値検索を使用して、自然言語フレーズをデータベース列に保存されている特定の値にマッピングします。これにより、LLM は実際のデータに基づいて、用語が DistrictNameCity を指すのかなど、曖昧さを解消できます。

QueryData エンドポイントは、会話型分析 API のエージェント ツールです。アプリケーションとのプログラムによる統合を実現し、自然言語の質問から SQL クエリを生成できます。会話型アプリケーションでは、会話の履歴とコンテキストを管理するフレームワーク内で QueryData エンドポイントを使用する必要があります。厳格な行レベルのセキュリティを維持しながらエンティティ解決を適用するには、パラメータ化された安全なビュー(PSV)を使用します。詳細については、パラメータ化された安全なビューを使用してアプリケーションデータへのアクセスを保護および制御するをご覧ください。

次のステップ