AlloyDB for PostgreSQL(プレビュー)のデータに接続する

AlloyDB インスタンスを Gemini Enterprise に接続することで、リアルタイムにデータへアクセスできるようになります。

AlloyDB からのインポートと比較して、接続には次の利点があります。

  • データのインポート、インデックス登録、複製を行う必要がなくなります。
  • データの更新速度が最大限に高まります。
  • インデックス作成とストレージの追加費用がかかりません。
  • 構造化データを同じ形式のレコードに平坦化する必要がありません。

インポートと比較した場合の接続のデメリットとしては、次の点が挙げられます。

  • このアプローチでは構造化クエリのみがサポートされており、セマンティック クエリや準セマンティック クエリはサポートされません。
  • データをインポートする場合と比べると、設定がやや複雑です。

制限事項

AlloyDB への接続には次の制限があります。

  • Gemini Enterprise では、テーブルや列などデータベース オブジェクト単位でのアクセス制御は可能ですが、ユーザー単位のアクセス制御はできません。つまり、Gemini Enterprise アプリにアクセスできるすべてのユーザーが同じデータを表示できます。
  • AlloyDB のデータストアの作成は、 Google Cloud コンソールからではなく API 経由で行う必要があります。

始める前に

AlloyDB への接続機能はプレビュー版で提供されており、ご利用には許可リストへの登録が必要です。ご利用をご希望の場合は、次のフォームで登録してください。 Gemini Enterprise の使用と AlloyDB のデータへの接続に関するオプトイン / オプトアウト

登録が済み、有効化の確認が届いたら、このページの手順に沿って操作してください。

AlloyDB AI 自然言語を設定する

このコネクタは AlloyDB の AlloyDB AI 自然言語機能に依存しており、自然言語で書かれたクエリを SQL クエリに変換します。

接続する前に、AlloyDB ドキュメントの自然言語の質問に回答する SQL クエリの生成手順に沿って、データベースに AlloyDB AI の自然言語を設定してください。

AlloyDB AI 自然言語機能にテンプレートを追加すること(自然言語の質問と、それに対応する SQL クエリをセットにしたキュレーション済みの例)は、精度向上に特に有効です。テンプレートを追加する際は、次のことをおすすめします。

  • 結果の不確定性を避けるために ORDER BY を使用する。例: SELECT customers.id FROM customers ORDER BY customers.id;

Gemini Enterprise と AlloyDB 間の認証を設定する

Gemini Enterprise は、専用のサービス アカウントと AlloyDB インスタンスのデータベース ユーザーを使用して AlloyDB にアクセスします。このアプローチでは、すべての Gemini Enterprise ユーザーが同じデータを表示でき、ユーザーごとのアクセス制御は行われません。

サービス アカウントは、AlloyDB インスタンスへの接続と操作に使用されます。これを有効にするには、データベース インスタンスが存在する Google Cloud プロジェクトの Identity and Access Management(IAM)設定を構成する必要があります。

次の手順で認証を設定します。

  1. AlloyDB インスタンスをホストするプロジェクトの IAM 構成ページに移動します。
  2. 次のプリンシパルに Cloud AlloyDB データベース ユーザー ロールを付与します。service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com

    PROJECT_NUMBER は、Gemini Enterprise を使用する Google Cloud プロジェクト番号に置き換えます。

  3. AlloyDB インスタンスで、Gemini Enterprise が SQL クエリの実行に使用する DB ユーザーを作成します。

    このユーザーには、Gemini Enterprise からアクセスできるテーブル、ビュー、列に対してのみ、読み取り専用権限を付与することが非常に重要です。そうすることで、次のことが保証されます。

    • Gemini Enterprise からのクエリでデータの変更や削除が行われることがない。Gemini Enterprise は、データベースからデータを読み取ることのみを目的に設計されており、変更は意図されていません。ただし、AI が意図せず書き込みクエリを生成する可能性を完全に排除できるわけではありません。

    • Gemini Enterprise のユーザーは、見るべきデータのみを閲覧できる。

      例:

      CREATE ROLE USER_NAME WITH LOGIN PASSWORD 'PASSWORD';
      GRANT SELECT ON TABLE "public"."TABLE_NAME_1" TO USER_NAME;
      GRANT SELECT ON TABLE "public"."TABLE_NAME_2" TO USER_NAME;
      

      Gemini Enterprise を AlloyDB にリンクする際、alloydbConnectionConfig の [User] フィールドと [Password] フィールドにユーザー名とパスワードを指定します。

Gemini Enterprise を AlloyDB にリンクする

AlloyDB インスタンスに接続する手順は次のとおりです。

  1. API を使って AlloyDB への接続の詳細情報を指定し、Gemini Enterprise にデータストアを作成します。その接続情報には federatedSearchConfig.alloyDbConfig も含まれます。

    次の例をご覧ください。

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -H "X-Goog-User-Project: PROJECT_ID" \
      "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" -d '{
      "displayName": "DATA_STORE_NAME",
      "federatedSearchConfig": {
        "alloyDbConfig": {
          "alloydbConnectionConfig": {
            "instance": "INSTANCE_PATH",
            "database": "DATABASE_NAME",
            "user": "DATABASE_USER_NAME",
            "password": "DATABASE_USER_PASSWORD",
            "authMode": "AUTH_MODE_SERVICE_ACCOUNT"
          },
          "alloydb_ai_nl_config": { "nlConfigId": "NL_CONFIG_ID" }
        }
      },
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    次のように置き換えます。

    • PROJECT_ID: Gemini Enterprise を使用するプロジェクトの ID。
    • LOCATION: データストアのロケーション。これは、Gemini Enterprise インスタンスと同じロケーションにする必要があります。

    • DATA_STORE_ID: 作成するデータストアの ID。この ID に使用できるのは、小文字、数字、アンダースコア、ハイフンのみです。

    • DATA_STORE_NAME: 作成するデータストアの表示名。

    • INSTANCE_PATH: AlloyDB インスタンスのパス(projects/.../locations/.../clusters/.../instances/... の形式)。

    • DATABASE_NAME: AlloyDB データベースの ID。

    • DATABASE_USER_NAME: AlloyDB データベース ユーザーの ID。

    • DATABASE_USER_PASSWORD: AlloyDB データベース ユーザーのパスワード。

    • NL_CONFIG_ID: AlloyDB AI 自然言語構成の ID。

  2. アプリを作成するの手順に沿って、データストアを既存の Gemini Enterprise アプリに接続するか、新しいアプリを作成してコネクタを選択します。

  3. アプリが設定された後に検索結果がどのように表示されるかをプレビューする方法については、検索結果のプレビューの説明をご参照ください。