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)の設定を構成する必要があります。
認証を設定するには、次の操作を行います。
- AlloyDB インスタンスをホストするプロジェクトの IAM 構成ページに移動します。
次のプリンシパルに Cloud AlloyDB データベース ユーザー ロールを付与します。
service-PROJECT_NUMBER@gcp-sa-discoveryengine.
PROJECT_NUMBER
は、Gemini Enterprise を使用する Google Cloud プロジェクト番号に置き換えます。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 インスタンスに接続する手順は次のとおりです。
federatedSearchConfig.alloyDbConfig
などの AlloyDB 接続の詳細を使用して、API で Gemini Enterprise にデータストアを作成します。次の例では、以下を実行します。
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。
アプリを作成するの手順に沿って、データストアを既存の Gemini Enterprise アプリに接続するか、新しいアプリを作成してコネクタを選択します。
アプリが設定された後に検索結果がどのように表示されるかをプレビューするには、検索結果をプレビューするをご覧ください。