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

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"
      }
    }
  ]
}

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

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

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

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

次のステップ