תבנית סנכרון שינויים בזרמי נתונים של Bigtable ל-Vector Search

התבנית הזו יוצרת צינור סטרימינג כדי להזרים רשומות של שינויים בנתוני Bigtable ולכתוב אותן ל-Vertex AI Vector Search באמצעות Dataflow Portable Runner.

הדרישות לגבי צינורות

  • צריך לוודא שמופע המקור של Bigtable קיים.
  • טבלת המקור ב-Bigtable צריכה להתקיים, וצריך להפעיל בטבלה את סנכרון השינויים בזרמי נתונים.
  • פרופיל האפליקציה של Bigtable חייב להתקיים.
  • נתיב אינדקס החיפוש הווקטורי חייב להתקיים.

פרמטרים של תבניות

פרמטרים נדרשים

  • ‫embeddingColumn: השם המוגדר במלואו של העמודה שבה מאוחסנים ההטמעות. בפורמט cf:col.
  • ‫embeddingByteSize: גודל הבייט של כל רשומה במערך ההטמעות. משתמשים ב-4 ל-Float וב-8 ל-Double. ברירת המחדל היא 4.
  • ‫vectorSearchIndex: האינדקס ב-Vector Search שאליו יועברו השינויים בסטרימינג, בפורמט 'projects/{projectID}/locations/{region}/indexes/{indexID}' (ללא רווחים מובילים או נגררים). לדוגמה, projects/123/locations/us-east1/indexes/456.
  • ‫bigtableChangeStreamAppProfile: מזהה פרופיל האפליקציה של Bigtable. פרופיל האפליקציה צריך להשתמש בניתוב של אשכול יחיד ולאפשר עסקאות של שורה אחת.
  • ‫bigtableReadInstanceId: מזהה מכונת Bigtable של המקור.
  • ‫bigtableReadTableId: מזהה טבלת Bigtable של המקור.

הרצת התבנית

המסוף

  1. עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow.
  2. כניסה לדף Create job from template
  3. בשדה שם המשימה, מזינים שם ייחודי למשימה.
  4. אופציונלי: בתפריט הנפתח Regional endpoint (נקודת קצה אזורית), בוחרים ערך. אזור ברירת המחדל הוא us-central1.

    רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.

  5. בתפריט הנפתח Dataflow template (תבנית של Dataflow), בוחרים בתבנית Bigtable Change Streams to Vector Search (העברת נתוני שינויים ב-Bigtable לחיפוש וקטורי).
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

‫CLI של gcloud

במעטפת או בטרמינל, מריצים את התבנית:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates/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: הגרסה של התבנית שרוצים להשתמש בה

    אפשר להשתמש בערכים הבאים:

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית. אפשר למצוא את הגרסה הזו בתיקיית ההורה המתאימה עם התאריך בדלי – gs://dataflow-templates/
  • ‫REGION_NAME: האזור שבו רוצים לפרוס את משימת Dataflow, לדוגמה: us-central1
  • EMBEDDING_COLUMN: עמודת ההטמעה
  • ‫EMBEDDING_BYTE_SIZE: גודל הבייטים של מערך ההטמעות. הערך יכול להיות 4 או 8.
  • ‫VECTOR_SEARCH_INDEX: הנתיב של אינדקס חיפוש וקטורי
  • ‫BIGTABLE_CHANGE_STREAM_APP_PROFILE: מזהה פרופיל האפליקציה של Bigtable
  • ‫BIGTABLE_READ_INSTANCE_ID: מזהה מכונת Bigtable של המקור
  • ‫BIGTABLE_READ_TABLE_ID: מזהה טבלת Bigtable של המקור

API

כדי להריץ את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת 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/VERSION/flex/Bigtable_Change_Streams_to_Vector_Search",
     "environment": { "maxWorkers": "10" }
  }
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה Google Cloud הפרויקט שבו רוצים להריץ את משימת Dataflow
  • ‫JOB_NAME: שם ייחודי של המשימה לפי בחירתכם
  • ‫VERSION: הגרסה של התבנית שרוצים להשתמש בה

    אפשר להשתמש בערכים הבאים:

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית. אפשר למצוא את הגרסה הזו בתיקיית ההורה המתאימה עם התאריך בדלי – gs://dataflow-templates/
  • ‫LOCATION: האזור שבו רוצים לפרוס את משימת Dataflow, לדוגמה: us-central1
  • EMBEDDING_COLUMN: עמודת ההטמעה
  • ‫EMBEDDING_BYTE_SIZE: גודל הבייטים של מערך ההטמעות. הערך יכול להיות 4 או 8.
  • ‫VECTOR_SEARCH_INDEX: הנתיב של אינדקס חיפוש וקטורי
  • ‫BIGTABLE_CHANGE_STREAM_APP_PROFILE: מזהה פרופיל האפליקציה של Bigtable
  • ‫BIGTABLE_READ_INSTANCE_ID: מזהה מכונת Bigtable של המקור
  • ‫BIGTABLE_READ_TABLE_ID: מזהה טבלת Bigtable של המקור