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 Vector Search インデックスに必要な列のカンマ区切りリスト。Vector Search では id 列と embedding 列が必要です。列名が Vertex AI Vector Search インデックスの入力構造と一致しない場合は、エイリアスを使用して列マッピングを作成します。列名が Vertex AI で想定される形式と一致しない場合は、from:to という表記を使用します。たとえば、idmy_embedding という名前の列がある場合は、id, my_embedding:embedding を指定します。
gcsOutputFolder 出力ファイルを書き込む Cloud Storage フォルダ。このパスはスラッシュで終わる必要があります。例: gs://your-bucket/folder1/
gcsOutputFilePrefix 出力ファイルを書き込むファイル名の接頭辞。例: vector-embeddings
spannerHost 省略可: テンプレートで呼び出す Spanner エンドポイント。デフォルト値は https://batch-spanner.googleapis.com です。
spannerVersionTime 省略可: 設定する場合、データベースのバージョンを取得する時刻を指定します。値は RFC-3339 日付形式の Unix エポックタイムの文字列です。たとえば、1990-12-31T23:59:60Z となります。タイムスタンプは過去の日付にする必要があります。また、タイムスタンプ ステイルネスの最大値が適用されます。設定しないと、最新のデータの読み取りで強力なバウンドが使用されます。デフォルトは空です。
spannerDataBoostEnabled 省略可: true に設定すると、テンプレートでは Spanner のオンデマンド コンピューティングが使用されます。エクスポート ジョブは、現在の Spanner ワークロードに影響しない独立したコンピューティング リソースで実行されます。このオプションを使用すると、Spanner で追加料金が発生します。詳細については、Spanner Data Boost の概要をご覧ください。デフォルト: false
spannerPriority 省略可: Spanner 呼び出しのリクエストの優先度。指定できる値は HIGHMEDIUMLOW です。デフォルト値は 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 の出力ファイルの接頭辞

次のステップ