תבנית Spanner לחיפוש וקטורי ב-Vertex AI

התבנית לייצוא קבצים מ-Spanner לחיפוש וקטורים ב-Vertex AI ב-Cloud Storage יוצרת צינור להעברת נתונים באצווה שמייצא נתוני הטבעות וקטוריות מטבלה ב-Spanner ל-Cloud Storage בפורמט JSON. משתמשים בפרמטרים של התבנית כדי לציין את תיקיית Cloud Storage שאליה רוצים לייצא את הטמעות הווקטורים. התיקייה ב-Cloud Storage מכילה את רשימת הקבצים שיוצאו .json, שמייצגים את הטמעות הווקטורים בפורמט שנתמך על ידי אינדקס החיפוש הווקטורי של Vertex AI.

מידע נוסף זמין במאמר בנושא פורמט ומבנה של נתוני קלט.

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

  • מסד הנתונים ב-Spanner חייב להתקיים.
  • צריכה להיות קטגוריה של Cloud Storage שאליה יועברו הנתונים.
  • בנוסף לתפקידים בממשק לניהול הזהויות והרשאות הגישה (IAM) שנדרשים להפעלת משימות Dataflow, אתם צריכים את תפקידי ה-IAM הנדרשים כדי לקרוא את נתוני Spanner ולכתוב לקטגוריית Cloud Storage.

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

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

  • ‫spannerProjectId: מזהה הפרויקט של מכונת Spanner.
  • ‫spannerInstanceId: המזהה של מופע Spanner שממנו רוצים לייצא את הטמעות הווקטורים.
  • ‫spannerDatabaseId: המזהה של מסד הנתונים ב-Spanner שממנו רוצים לייצא את הטמעות הווקטור.
  • ‫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) כדי לקרוא את הנתונים האחרונים. ברירת המחדל היא empty. לדוגמה, 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. עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow.
  2. כניסה לדף Create job from template
  3. בשדה שם המשימה, מזינים שם ייחודי למשימה.
  4. אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא us-central1.

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

  5. בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים בתבנית Spanner to Vertex AI Vector Search files on Cloud Storage (מ-Spanner לקבצים של חיפוש וקטורי ב-Vertex AI ב-Cloud Storage).
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

gcloud

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

gcloud dataflow jobs run JOB_NAME \
    --gcs-location=gs://dataflow-templates/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/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית. אפשר למצוא את הגרסה הזו בתיקיית ההורה המתאימה עם התאריך בדלי – gs://dataflow-templates/
  • ‫REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • ‫SPANNER_PROJECT_ID: מזהה הפרויקט ב-Spanner
  • ‫SPANNER_INSTANCE_ID: מזהה מכונת Spanner
  • ‫SPANNER_DATABASE_ID: מזהה מסד הנתונים של Spanner
  • ‫SPANNER_TABLE: טבלת Spanner
  • ‫SPANNER_COLUMNS_TO_EXPORT: העמודות לייצוא מטבלת Spanner
  • ‫GCS_OUTPUT_FOLDER: תיקיית Cloud Storage שאליה ייצאו הקבצים
  • ‫GCS_OUTPUT_FILE_PREFIX: הקידומת של קובצי הפלט ב-Cloud Storage

API

כדי להפעיל את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת HTTP POST. מידע נוסף על ה-API ועל היקפי ההרשאות שלו זמין במאמר projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates/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: מזהה הפרויקט שבו רוצים להריץ את משימת Google Cloud Dataflow
  • ‫JOB_NAME: שם ייחודי של המשימה לפי בחירתכם
  • ‫VERSION: הגרסה של התבנית שרוצים להשתמש בה

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

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית. אפשר למצוא את הגרסה הזו בתיקיית ההורה המתאימה עם התאריך בדלי – gs://dataflow-templates/
  • ‫LOCATION: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • ‫SPANNER_PROJECT_ID: מזהה הפרויקט ב-Spanner
  • ‫SPANNER_INSTANCE_ID: מזהה מכונת Spanner
  • ‫SPANNER_DATABASE_ID: מזהה מסד הנתונים של Spanner
  • ‫SPANNER_TABLE: טבלת Spanner
  • ‫SPANNER_COLUMNS_TO_EXPORT: העמודות לייצוא מטבלת Spanner
  • ‫GCS_OUTPUT_FOLDER: תיקיית Cloud Storage שאליה ייצאו הקבצים
  • ‫GCS_OUTPUT_FILE_PREFIX: הקידומת של קובצי הפלט ב-Cloud Storage

המאמרים הבאים