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

התבנית לייצוא קבצים מ-Spanner ל-Vertex AI Vector Search ב-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: רשימה מופרדת בפסיקים של העמודות הנדרשות לאינדקס של Vector Search ב-Vertex AI. העמודות ID ו-embedding נדרשות ל-Vector Search. אם שמות העמודות לא תואמים למבנה הקלט של אינדקס חיפוש הווקטורים ב-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 on-demand compute. משימת הייצוא פועלת על משאבי מחשוב עצמאיים שלא משפיעים על עומסי העבודה הנוכחיים של Spanner. השימוש באפשרות הזו כרוך בחיובים נוספים ב-Spanner. מידע נוסף זמין במאמר בנושא סקירה כללית של Spanner Data Boost ‏ (https://cloud.google.com/spanner/docs/databoost/databoost-overview). ברירת המחדל: false.
  • spannerPriority: העדיפות של הבקשה לקריאות Spanner. הערכים המותרים הם HIGH,‏ MEDIUM ו-LOW. ערך ברירת המחדל הוא MEDIUM.

הפעלת התבנית

המסוף

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

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

  5. בתפריט הנפתח Dataflow template (תבנית של העברת נתונים), בוחרים באפשרות 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
  • 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-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
  • 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
  • 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

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