Bigtable 變更串流到 Vector Search 範本

這個範本會建立串流管道,串流 Bigtable 資料變更記錄,並使用 Dataflow Runner V2 將這些記錄寫入 Vertex AI Vector Search。

管道相關規定

  • Bigtable 來源執行個體必須存在。
  • Bigtable 來源資料表必須存在,且該資料表必須啟用變更串流。
  • Bigtable 應用程式設定檔必須存在。
  • Vector Search 索引路徑必須存在。

範本參數

參數 說明
embeddingColumn 儲存嵌入內容的完整欄名稱。格式為 cf:col。
embeddingByteSize 嵌入陣列中每個項目的位元組大小。使用 4 代表浮點數,8 代表雙精度浮點數。預設值為 4
vectorSearchIndex 要串流變更的向量搜尋索引,格式為「projects/{projectID}/locations/{region}/indexes/{indexID}」(開頭或結尾不得有空格)。例如: projects/123/locations/us-east1/indexes/456
bigtableChangeStreamAppProfile 用於區分 Bigtable 中工作負載的應用程式設定檔。
bigtableReadInstanceId 包含資料表的 Bigtable 執行個體 ID。
bigtableReadTableId 要讀取的 Bigtable 資料表。
bigtableMetadataTableTableId (選用) 建立的中繼資料表 ID。如未設定,Bigtable 會產生 ID。
crowdingTagColumn 選用:儲存群眾外包標記的完整欄名,格式為 cf:col
allowRestrictsMappings 選用:以半形逗號分隔的完整資料欄名稱清單,用做 allow 限制,以及這些資料欄的別名。每個資料欄名稱的格式都必須為 cf:col->alias
denyRestrictsMappings 選用:以半形逗號分隔的完整資料欄名稱清單,用做 deny 限制,以及這些資料欄的別名。每個資料欄名稱的格式都必須為 cf:col->alias
intNumericRestrictsMappings 選用:以半形逗號分隔的完整資料欄名稱,這些資料欄會做為整數 numeric_restricts 使用,加上別名。每個資料欄名稱的格式都必須為 cf:col->alias
floatNumericRestrictsMappings 選用:以半形逗號分隔的完整資料欄名稱,這些資料欄會做為浮點數 (4 個位元組) 使用 numeric_restricts,以及這些資料欄的別名。每個資料欄名稱的格式都必須為 cf:col->alias
doubleNumericRestrictsMappings 選用:以逗號分隔的完整資料欄名稱,這些資料欄會做為雙精度浮點數 (8 個位元組) 使用,加上這些資料欄的別名。numeric_restricts每個資料欄名稱的格式都必須為 cf:col->alias
upsertMaxBatchSize 選用:將批次 upsert 至 Vector Search 索引前,要緩衝處理的 upsert 數量上限。當有 upsertBatchSize 筆記錄準備就緒時,系統就會傳送批次。範例:10
upsertMaxBufferDuration 選用:將一批 upsert 送至 Vector Search 前的延遲時間上限。當有 upsertBatchSize 筆記錄準備就緒時,系統就會傳送批次。允許的格式為:以秒為單位的 Ns (例如 5s)、以分鐘為單位的 Nm (例如 12m),以及以小時為單位的 Nh (例如 2h)。預設值:10s
deleteMaxBatchSize 選用:從 Vector Search 索引刪除批次前,要緩衝的刪除作業數量上限。當有以下情況時,系統會傳送批次: deleteBatchSize 記錄已備妥。 例如:10
deleteMaxBufferDuration 選用:將一批刪除作業傳送至 Vector Search 前的最大延遲時間。當有 deleteBatchSize 筆記錄準備就緒時,系統就會傳送批次。允許的格式為:Ns 代表秒 (例如 5s)、Nm 代表分鐘 (例如 12m),以及 Nh 代表小時 (例如 2h)。預設值:10s
dlqDirectory 選填:儲存任何未處理記錄的路徑,以及處理失敗的原因。預設值是 Dataflow 工作暫時位置下的目錄。預設值適用於大多數情況。
bigtableChangeStreamMetadataInstanceId 選用:用於變更串流連接器中繼資料表的 Bigtable 執行個體。預設為空白。
bigtableChangeStreamMetadataTableTableId 選用:要使用的 Bigtable 變更串流連接器中繼資料表 ID。如果未提供,系統會在管道流程中自動建立 Bigtable 變更串流連接器中繼資料表。預設為空白。
bigtableChangeStreamCharset 選用:讀取值和資料欄限定符時,Bigtable 變更串流會提供字元集名稱。預設值為 UTF-8。
bigtableChangeStreamStartTimestamp 選用:用於讀取變更串流的開始 DateTime (含) (https://tools.ietf.org/html/rfc3339)。例如: 2022-05-05T07:59:59Z。預設為管道啟動時的時間戳記。
bigtableChangeStreamIgnoreColumnFamilies 選用:以半形逗號分隔的資料欄系列名稱清單,列出不會擷取的變更。預設為空白。
bigtableChangeStreamIgnoreColumns 選用:以半形逗號分隔的資料欄名稱清單,這些資料欄的變更不會遭到擷取。預設為空白。
bigtableChangeStreamName 選填:用戶端管道的專屬名稱。這個參數可讓您從先前管道停止運作的點繼續處理。預設為自動產生的名稱。如要瞭解使用的值,請參閱 Dataflow 工作記錄。
bigtableChangeStreamResume

選用:如果設為 true,新的管道會從先前同名管道停止處理的點繼續處理。如果過去從未執行過該名稱的管道,新的管道就無法啟動。使用 bigtableChangeStreamName 參數指定管道線。

如果設為 false,系統會啟動新的管道。如果過去已針對指定來源執行名稱相同的管道,新的管道就無法啟動。bigtableChangeStreamName

預設值為 false。

bigtableReadProjectId 選用:用於讀取 Bigtable 資料的專案。這項參數的預設值是執行 Dataflow 管道的專案。

執行範本

控制台

  1. 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。
  2. 前往「依據範本建立工作」
  3. 在「工作名稱」欄位中,輸入專屬工作名稱。
  4. 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為 us-central1

    如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。

  5. 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the Bigtable Change Streams to Vector Search template。
  6. 在提供的參數欄位中輸入參數值。
  7. 按一下「Run Job」(執行工作)

gcloud CLI

在殼層或終端機中執行範本:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Bigtable_Change_Streams_to_Vector_Search \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       embeddingColumn=EMBEDDING_COLUMN,\
       embeddingByteSize=EMBEDDING_BYTE_SIZE,\
       vectorSearchIndex=VECTOR_SEARCH_INDEX,\
       bigtableChangeStreamAppProfile=BIGTABLE_CHANGE_STREAM_APP_PROFILE,\
       bigtableReadInstanceId=BIGTABLE_READ_INSTANCE_ID,\
       bigtableReadTableId=BIGTABLE_READ_TABLE_ID,\

更改下列內容:

  • JOB_NAME: 您選擇的不重複工作名稱
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • REGION_NAME: 您要部署 Dataflow 工作的地區,例如 us-central1
  • EMBEDDING_COLUMN:Embedding 資料欄
  • EMBEDDING_BYTE_SIZE:嵌入陣列的位元組大小。可以是 4 或 8。
  • VECTOR_SEARCH_INDEX:Vector Search 索引路徑
  • BIGTABLE_CHANGE_STREAM_APP_PROFILE:Bigtable 應用程式設定檔 ID
  • BIGTABLE_READ_INSTANCE_ID:來源 Bigtable 執行個體 ID
  • BIGTABLE_READ_TABLE_ID:來源 Bigtable 資料表 ID

API

如要使用 REST API 執行範本,請傳送 HTTP POST 要求。如要進一步瞭解 API 和授權範圍,請參閱 projects.templates.launch

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "embeddingColumn": "EMBEDDING_COLUMN",
       "embeddingByteSize": "EMBEDDING_BYTE_SIZE",
       "vectorSearchIndex": "VECTOR_SEARCH_INDEX",
       "bigtableChangeStreamAppProfile": "BIGTABLE_CHANGE_STREAM_APP_PROFILE",
       "bigtableReadInstanceId": "BIGTABLE_READ_INSTANCE_ID",
       "bigtableReadTableId": "BIGTABLE_READ_TABLE_ID",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Bigtable_Change_Streams_to_Vector_Search",
     "environment": { "maxWorkers": "10" }
  }
}

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • LOCATION: 您要部署 Dataflow 工作的地區,例如 us-central1
  • EMBEDDING_COLUMN:Embedding 資料欄
  • EMBEDDING_BYTE_SIZE:嵌入陣列的位元組大小。可以是 4 或 8。
  • VECTOR_SEARCH_INDEX:Vector Search 索引路徑
  • BIGTABLE_CHANGE_STREAM_APP_PROFILE:Bigtable 應用程式設定檔 ID
  • BIGTABLE_READ_INSTANCE_ID:來源 Bigtable 執行個體 ID
  • BIGTABLE_READ_TABLE_ID:來源 Bigtable 資料表 ID