Spanner to Vertex AI Vector Search テンプレート

Spanner to Vertex AI Vector Search files on Cloud Storage テンプレートを使用して、Spanner テーブルから Cloud Storage に JSON 形式でベクトル エンベディング データをエクスポートするバッチ パイプラインを作成します。ベクトル エンベディングのエクスポート先となる Cloud Storage フォルダをテンプレートのパラメータで指定します。Cloud Storage フォルダには、エクスポートされた .json ファイルのリストが含まれています。このファイルでは、ベクトル エンベディングを Vertex AI Vector Search インデックスでサポートされている形式で表しています。

詳細については、入力データの形式と構造をご覧ください。

パイプラインの要件

  • Spanner データベースが存在していること。
  • データ出力用の Cloud Storage バケットが存在すること。
  • Dataflow ジョブの実行に必要な Identity and Access Management(IAM)ロールに加えて、Spanner のデータの読み取りと Cloud Storage バケットへの書き込みに必要な IAM ロールがあること。

テンプレートのパラメータ

必須パラメータ

  • spannerProjectId: Spanner インスタンスのプロジェクト ID。
  • spannerInstanceId: ベクトル エンベディングのエクスポート元である Spanner インスタンスの ID。
  • spannerDatabaseId: ベクトル エンベディングのエクスポート元である Spanner データベースの ID。
  • spannerTable: 読み取り元の Spanner テーブル。
  • spannerColumnsToExport : Vertex AI ベクトル検索インデックスに必要な列のカンマ区切りリスト。ベクトル検索では、ID 列と embedding 列が必要です。列名が Vertex AI ベクトル検索インデックスの入力構造と一致しない場合は、エイリアスを使用して列マッピングを作成します。列名が Vertex AI で想定される形式と一致しない場合は、from:to という表記を使用します。たとえば、id と my_embedding という名前の列がある場合は、id, my_embedding:embedding を指定します。
  • gcsOutputFolder: 出力ファイルを書き込む Cloud Storage フォルダ。このパスはスラッシュで終わる必要があります(例: gs://your-bucket/folder1/)。
  • gcsOutputFilePrefix : 出力ファイルを書き込むファイル名の接頭辞(例: vector-embeddings)。

オプション パラメータ

  • spannerHost: テンプレート内で呼び出す Spanner のエンドポイント。デフォルト値は https://batch-spanner.googleapis.com です(例: https://batch-spanner.googleapis.com)。
  • spannerVersionTime: 設定されている場合、データベースのバージョンを取得する時刻を指定します。値は RFC-3339 日付形式の Unix エポックタイムの文字列です。例: 1990-12-31T23:59:60Z。タイムスタンプは過去の日付にする必要があります。また、タイムスタンプ ステイルネスの最大値(https://cloud.google.com/spanner/docs/timestamp-bounds#maximum_timestamp_staleness)が適用されます。設定されていない場合、最新のデータの読み取りに強力なバウンド(https://cloud.google.com/spanner/docs/timestamp-bounds#strong)が使用されます。デフォルトは空です(例: 1990-12-31T23:59:60Z)。
  • spannerDataBoostEnabled: true に設定すると、テンプレートは Spanner オンデマンド コンピューティングを使用します。エクスポート ジョブは、現在の Spanner ワークロードに影響しない独立したコンピューティング リソースで実行されます。このオプションを使用すると、Spanner で追加料金が発生します。詳細については、Spanner Data Boost の概要(https://cloud.google.com/spanner/docs/databoost/databoost-overview)をご覧ください。デフォルトは false です。
  • spannerPriority: Spanner 呼び出しのリクエストの優先度。指定できる値は、HIGH、MEDIUM、LOW です。デフォルト値は MEDIUM です。

テンプレートを実行する

コンソール

  1. Dataflow の [テンプレートからジョブを作成] ページに移動します。
  2. [テンプレートからジョブを作成] に移動
  3. [ジョブ名] フィールドに、固有のジョブ名を入力します。
  4. (省略可)[リージョン エンドポイント] で、プルダウン メニューから値を選択します。デフォルトのリージョンは us-central1 です。

    Dataflow ジョブを実行できるリージョンのリストについては、Dataflow のロケーションをご覧ください。

  5. [Dataflow テンプレート] プルダウン メニューから、[ the Spanner to Vertex AI Vector Search files on Cloud Storage template] を選択します。
  6. 表示されたパラメータ フィールドに、パラメータ値を入力します。
  7. [ジョブを実行] をクリックします。

gcloud

シェルまたはターミナルで、テンプレートを実行します。

gcloud dataflow jobs run JOB_NAME \
    --gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Spanner_vectors_to_Cloud_Storage \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       spannerProjectId=SPANNER_PROJECT_ID,\
       spannerInstanceId=SPANNER_INSTANCE_ID,\
       spannerDatabaseId=SPANNER_DATABASE_ID,\
       spannerTable=SPANNER_TABLE,\
       spannerColumnsToExport=SPANNER_COLUMNS_TO_EXPORT,\
       gcsOutputFolder=GCS_OUTPUT_FOLDER,\
       gcsOutputFilePrefix=GCS_OUTPUT_FILE_PREFIX,\

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

  • JOB_NAME: 一意の任意のジョブ名
  • VERSION: 使用するテンプレートのバージョン

    使用できる値は次のとおりです。

    • latest: 最新バージョンのテンプレートを使用します。このテンプレートは、バケット内で日付のない親フォルダ(gs://dataflow-templates-REGION_NAME/latest/)にあります。
    • バージョン名(例: 2023-09-12-00_RC00)。特定のバージョンのテンプレートを使用します。このテンプレートは、バケット内で対応する日付の親フォルダ(gs://dataflow-templates-REGION_NAME/)にあります。
  • REGION_NAME: Dataflow ジョブをデプロイするリージョン(例: us-central1
  • SPANNER_PROJECT_ID: Spanner プロジェクト ID
  • SPANNER_INSTANCE_ID: Spanner インスタンス ID
  • SPANNER_DATABASE_ID: Spanner データベース ID
  • SPANNER_TABLE: Spanner テーブル
  • SPANNER_COLUMNS_TO_EXPORT: Spanner テーブルからエクスポートする列
  • GCS_OUTPUT_FOLDER: ファイルの出力先の Cloud Storage フォルダ
  • GCS_OUTPUT_FILE_PREFIX: Cloud Storage の出力ファイルの接頭辞

API

REST API を使用してテンプレートを実行するには、HTTP POST リクエストを送信します。API とその認証スコープの詳細については、projects.templates.launch をご覧ください。

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Cloud_Spanner_vectors_to_Cloud_Storage
{
   "jobName": "JOB_NAME",
   "parameters": {
     "spannerProjectId": "SPANNER_PROJECT_ID",
     "spannerInstanceId": "SPANNER_INSTANCE_ID",
     "spannerDatabaseId": "SPANNER_DATABASE_ID",
     "spannerTable": "SPANNER_TABLE",
     "spannerColumnsToExport": "SPANNER_COLUMNS_TO_EXPORT",
     "gcsOutputFolder": "GCS_OUTPUT_FOLDER",
     "gcsOutputFilePrefix": "GCS_OUTPUT_FILE_PREFIX",
   },
   "environment": { "maxWorkers": "10" }
}

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

  • PROJECT_ID: Dataflow ジョブを実行する Google Cloud プロジェクトの ID
  • JOB_NAME: 一意の任意のジョブ名
  • VERSION: 使用するテンプレートのバージョン

    使用できる値は次のとおりです。

    • latest: 最新バージョンのテンプレートを使用します。このテンプレートは、バケット内で日付のない親フォルダ(gs://dataflow-templates-REGION_NAME/latest/)にあります。
    • バージョン名(例: 2023-09-12-00_RC00)。特定のバージョンのテンプレートを使用します。このテンプレートは、バケット内で対応する日付の親フォルダ(gs://dataflow-templates-REGION_NAME/)にあります。
  • LOCATION: Dataflow ジョブをデプロイするリージョン(例: us-central1
  • SPANNER_PROJECT_ID: Spanner プロジェクト ID
  • SPANNER_INSTANCE_ID: Spanner インスタンス ID
  • SPANNER_DATABASE_ID: Spanner データベース ID
  • SPANNER_TABLE: Spanner テーブル
  • SPANNER_COLUMNS_TO_EXPORT: Spanner テーブルからエクスポートする列
  • GCS_OUTPUT_FOLDER: ファイルの出力先の Cloud Storage フォルダ
  • GCS_OUTPUT_FILE_PREFIX: Cloud Storage の出力ファイルの接頭辞

次のステップ