1. מבוא
השיטה של קידוד לפי תחושה שינתה את המהירות והדרך שבה אנחנו מפתחים ממשקי קצה, אבל הרבה פעמים היא נתקלת בבעיה כשהיא מגיעה למסד הנתונים. בדרך כלל, מפתחים צריכים להחליף הקשרים, לכתוב סכימות SQL מורכבות, לנהל מאגרי חיבורים ולהגדיר ידנית תוספים למסד הנתונים.
ב-Codelab הזה תתנסו בתהליך עבודה חלק ואינטראקטיבי לפיתוח מסד נתונים. באמצעות Model Context Protocol (MCP) וסביבת פיתוח משולבת (IDE) מבוססת-סוכן, תוכלו להתייחס לעורך שלכם כאל מהנדס נתונים מנוסה – ולעבור מרעיון פשוט לאפליקציית מסד נתונים מחוברת, מותאמת ומבוססת-AI תוך דקות, בלי לצאת מסביבת העבודה.
מה תפַתחו
בשיעור Codelab הזה נסביר איך ליצור ולפרוס מדריך גסטרונומי מבוסס-AI – אפליקציית Next.js מודרנית שמגובה על ידי AlloyDB. האפליקציה תתמוך ב:
- ייבוא דינמי של קטלוגים: ייבוא אוטומטי של נתוני מסעדות מקובצי CSV גולמיים וארגון שלהם.
- חיפוש מבוסס מילות מפתח: שליחת שאילתות למסד הנתונים באופן דינמי באמצעות חיפוש טקסט מלא.
- חיפוש סמנטי מבוסס-AI: מציאת מסעדות על ידי תיאור האווירה (למשל, "מקום נעים לדייט" או "משהו מהיר לאכול בשעות הלילה המאוחרות") באמצעות הטמעות של Agent Platform.

מה תלמדו
- הקצאת מכונת Google Cloud AlloyDB עם כתובת IP ציבורית והגדרות של רשת VPC.
- חיבור ישיר של Antigravity IDE ל-AlloyDB באמצעות Model Context Protocol (MCP) Toolbox.
- חיבור קצה קדמי של Next.js למסד נתונים פעיל באמצעות משתני סביבה וחיבורי SSL מאובטחים.
- הפעלת שילוב של פלטפורמת סוכנים בתוך מסד הנתונים כדי ליצור הטמעות וקטוריות באמצעות text-embedding-004.
- ביצוע חיפוש דמיון וקטורי באמצעות אופרטור המרחק הקוסינוסי (<=>).
- אופטימיזציה של ביצועי מסד הנתונים לשימוש בסביבת ייצור באמצעות יצירת אינדקס HNSW וחלוקת טבלאות – פועל כמו מנהל מסד נתונים וירטואלי.
מה תצטרכו
כדי להשלים את ה-codelab הזה, תצטרכו:
- Antigravity מותקן במחשב המקומי.
- Google Cloud CLI (gcloud) ו-Git מותקנים ומאומתים במחשב המקומי.
- פרויקט ב-Google Cloud עם חיוב מופעל.
- דפדפן אינטרנט (מומלץ להשתמש ב-Chrome).
שיעור ה-Codelab הזה מיועד למפתחים בכל הרמות, כולל מתחילים.
2. לפני שמתחילים
בקטע הזה מוסבר איך לבצע את ההגדרה הראשונית שנדרשת בפרויקט ב-Google Cloud לפני שמתחילים לבנות את מדריך המסעדות של ברלין שמבוסס על AI.
יצירת פרויקט
- ב-Google Cloud Console, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
- הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
התקנת דרישות מוקדמות מקומיות
מוודאים שהכלים הבאים מותקנים במחשב המקומי:
- Antigravity 2.0: מתקינים את התוסף Antigravity
- Git: מורידים ומתקינים את Git.
- Google Cloud CLI: הורדה והתקנה של gcloud
הגדרת Antigravity 2.0
בפעם הראשונה שמפעילים את Antigravity 2.0, תתבקשו להזין את מזהה הפרויקט ב-Google Cloud מהשלב הקודם.
מזינים את מזהה הפרויקט כדי לאתחל את סביבת העבודה:

הגדרה ופתיחה של Antigravity IDE
נתקין את Antigravity IDE במחשב המקומי שלנו ונפתח אותו כדי שנוכל לבצע את פקודות הטרמינל
- בממשק של Antigravity 2.0, מאתרים את האפשרות Install Antigravity IDE (התקנת סביבת פיתוח משולבת של Antigravity) בפינה השמאלית העליונה ולוחצים עליה.

- כשמופיעה ההנחיה להורדה ולהתקנה, פועלים לפי אשף ההתקנה באמצעות הגדרות ברירת המחדל.
- בסיום ההתקנה, מפעילים את Antigravity IDE.
משכפלים את המאגר ומאמתים את הזהות ב-Google Cloud
תפעילו את כל ההוראות של שורת הפקודה ישירות בסביבת הפיתוח המשולבת.
- פותחים את Antigravity IDE במחשב המקומי
- פותחים את הטרמינל של Antigravity ומשכפלים את מאגר הפרויקט:
git clone https://github.com/mtoscano84/vibe-coding-postgres-mcp.git
- פותחים את תיקיית הפרויקט:
- עוברים אל 'קובץ' > 'פתיחת תיקייה' (או 'פתיחה...').
- עוברים לתיקייה החדשה ששוכפלה vibe-coding-postgres-mcp ובוחרים בה.
- אחרי שתיקיית הפרויקט נפתחת, מפעילים מסוף משולב חדש ב-Antigravity IDE. מגדירים את משתנה הסביבה PROJECT_ID ומגדירים את gcloud CLI כך שישתמש בו (מחליפים את [YOUR_PROJECT_ID] במזהה הפרויקט בפועל ב-GCP):
export PROJECT_ID=[YOUR_PROJECT_ID]
gcloud config set project $PROJECT_ID
- מתחברים ל-Google Cloud CLI:
gcloud auth login
- מתחברים אל Application Default Credentials (ADC): (הפעולה הזו יוצרת את קובץ פרטי הכניסה המקומי שנדרש לחיבורי מסד הנתונים של ה-AI ושל MCP בהמשך המעבדה)
gcloud auth application-default login
- מאמתים את החשבון הפעיל:
gcloud auth list
הפעלת ממשקי API נדרשים
מריצים את הפקודה הבאה בטרמינל של Antigravity כדי להפעיל את שירותי Google Cloud הנדרשים:
gcloud services enable alloydb.googleapis.com \
compute.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com
3. יצירת מכונת AlloyDB
בקטע הזה, תריצו סקריפט אוטומטי במסוף Antigravity כדי להקצות את האשכול והמופע של AlloyDB ב-Google Cloud
במסוף המשולב הפעיל של Antigravity IDE (שכבר נמצא בספריית הפרויקט vibe-coding-postgres-mcp), מריצים את סקריפט ההקצאה של AlloyDB:
source database/deploy_alloydb.sh --region us-central1 --public-ip
הערה: תהליך ההקצאה נמשך כ-10 עד 15 דקות.
סקריפט ההקצאה::
- יוצרים רשת VPC בשם default (אם היא לא קיימת בפרויקט).
- מגדירים גישה לשירותים פרטיים ל-AlloyDB.
- פורסים אשכול AlloyDB ומכונה ראשית עם כתובת IP פרטית וכתובת IP ציבורית.
- נותנים לסוכן השירות של AlloyDB את ההרשאות הנדרשות בפלטפורמת הסוכנים.
הפלט אמור להיראות כך:
----------------------------------------
Deployment Process Completed
Cluster: alloydb-aip-01 (STANDARD)
Instance: alloydb-aip-01-pr
Region: us-central1
Private IP: XX.XX.XX.XX
Public IP: XX.XX.XX.XX
Initial Password: XXXXXXXXXX (if new cluster)
----------------------------------------
חשוב להעתיק ולשמור את הפרטים הבאים:
- כתובת IP פרטית של AlloyDB: משמשת את אפליקציית Cloud Run כדי להתחבר בצורה מאובטחת בתוך ה-VPC.
- AlloyDB Public IP: משמש את Antigravity IDE המקומי לחיבור ישיר.
- סיסמת מסד הנתונים: הסיסמה שנוצרה אוטומטית למשתמש postgres.
4. פריסת הקצה הקדמי
בקטע הזה נסביר איך לפרוס את חזית ה-Next.js הבסיסית (מצב 0) ב-Google Cloud Run באמצעות טרמינל משולב של Antigravity IDE. הגרסה הראשונית הזו משתמשת בנתוני הדמיה ועדיין לא מתחברת למסד הנתונים.
קודם מריצים את הפקודות הבאות ישירות בטרמינל של Antigravity כדי להעניק את תפקידי ה-IAM הנדרשים לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine:
PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value project) --format="value(projectNumber)")
# Grant Storage Object Viewer (to read source code)
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/storage.objectViewer"
# Grant Log Writer (to write build logs)
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.logWriter"
# Grant Artifact Registry Writer (to push container images)
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/artifactregistry.writer"
מתיקיית השורש vibe-coding-postgres-mcp בטרמינל Antigravity, מריצים את הפקודה הבאה כדי לקמפל ולפרוס את אפליקציית Next.js ברשת ה-VPC:
gcloud run deploy berlin-gastronomy-guide \
--source frontend/ \
--network=default \
--subnet=default \
--allow-unauthenticated \
--region=us-central1
בסיום הפריסה, כתובת ה-URL של השירות תוצג.
Building using Dockerfile and deploying container to Cloud Run service [berlin-gastronomy-guide] in project [vibe-coding-postgres-mcp] region [us-central1]
Building and deploying...
Validating configuration...done
Uploading sources...done
Building Container... Logs are available at [ https://console.cloud.google.com/cloud-build/builds;region=us-central1/46a6e834-d5e9-4dfd-885e-d39e2790f72d?project=734791203988 ]....done
Setting IAM Policy...done
Creating Revision...done
Routing traffic...done
Done.
Service [berlin-gastronomy-guide] revision [berlin-gastronomy-guide-00002-n6k] has been deployed and is serving 100 percent of traffic.
Service URL: https://berlin-gastronomy-guide-[YOUR_PROJECT_NUMBER].us-central1.run.app
מעתיקים את כתובת ה-URL ופותחים אותה בדפדפן.
מוודאים שדף האינטרנט של מדריך המסעדות של ברלין מבוסס-AI מציג את כרטיסי המסעדות המדומים.

5. חיבור Antigravity ל-Google Cloud
כדי לאפשר לסוכן ה-AI בסביבת הפיתוח המשולבת (Antigravity) שפועל באופן מקומי ליצור אינטראקציה עם מסד הנתונים, נשתמש בשרת ה-MCP הרשמי של Google Cloud AlloyDB.
מכיוון שהפעלנו כתובת IP ציבורית במכונת AlloyDB במהלך ההקצאה, סביבת הפיתוח המשולבת המקומית יכולה להתחבר אליה ישירות דרך האינטרנט. החיבור מאובטח באמצעות SSL ואימות סיסמה, ושרת ה-MCP משתמש בפרטי הכניסה המקומיים שלכם ל-Google Cloud כדי לאשר את החיבור.
הגדרת שרת ה-MCP ב-Antigravity
- ב-Antigravity IDE, לוחצים על סמל האפשרויות הנוספות (3 נקודות) בפינה השמאלית העליונה של חלון הצ'אט.
- בוחרים באפשרות 'שרתי MCP' ולוחצים על 'שרתי MCP מנוהלים' (או על 'הצגת הגדרות גולמיות' / 'עריכת קובץ התצורה').
- מוסיפים את בלוק ה-JSON הבא בתוך האובייקט mcpServers. חשוב להחליף את [YOUR_PROJECT_ID] ואת [YOUR_ALLOYDB_PASSWORD] במזהה הפרויקט בפועל ובסיסמה של מסד הנתונים ששמרתם משלב הקצאת המשאבים ב-AlloyDB:
"alloydb-postgres": {
"command": "npx",
"args": [
"-y",
"@toolbox-sdk/server@latest",
"--prebuilt",
"alloydb-postgres",
"--stdio"
],
"env": {
"ALLOYDB_POSTGRES_PROJECT": "[YOUR_PROJECT_ID]",
"ALLOYDB_POSTGRES_REGION": "us-central1",
"ALLOYDB_POSTGRES_CLUSTER": "alloydb-aip-01",
"ALLOYDB_POSTGRES_INSTANCE": "alloydb-aip-01-pr",
"ALLOYDB_POSTGRES_DATABASE": "postgres",
"ALLOYDB_POSTGRES_USER": "postgres",
"ALLOYDB_POSTGRES_PASSWORD": "[YOUR_ALLOYDB_PASSWORD]"
}
}
- שמירת קובץ ההגדרות
- סביבת הפיתוח המשולבת תפעיל אוטומטית את שרת ה-MCP. בחלון MCP אמורה להופיע נקודה ירוקה לצד alloydb-postgres, שמציינת שהחיבור בוצע בהצלחה.
פתיחת המאגר ב-Antigravity 2.0
בהמשך שיעור ה-Lab הזה, נכתוב ונבנה את האפליקציה באמצעות Antigravity 2.0.
- חוזרים אל Antigravity 2.0 ופותחים את תיקיית הפרויקט ששיכפלתם.
- לוחצים על 'שיחה חדשה' > 'פרויקט חדש' > 'הוספת תיקייה'.
- עוברים לתיקייה החדשה vibe-coding-postgres-mcp שנוצרה כשיבוט ובוחרים בה.
- עכשיו תראו את ממשק הסוכן בתוך Antigravity 2.0, שמפנה ישירות אל סביבת העבודה המשוכפלת שלכם, ומוכן לתכנות.

6. Vibe Coding: Database Ingestion
עכשיו, אחרי שחיברתם את Antigravity למופע AlloyDB דרך שרת ה-MCP, אתם יכולים להתחיל לכתוב קוד עם תחושת ה-vibe.
בשלב הזה, תתנו לסוכן ה-AI הוראה לקרוא קובץ CSV מקומי שמכיל את קטלוג המסעדות בברלין ולטעון אותו למסד הנתונים שלכם ב-AlloyDB.
המשימה
תשתמשו ב-Agent Chat ב-Antigravity. ה-Agent יקרא את הקובץ באופן אוטונומי, ינתח את סוגי הנתונים, יתחבר למסד הנתונים, ייצור את הטבלה ויכניס את הרשומות.
אחר כך מעתיקים את ההנחיה הבאה, מדביקים אותה בשיחה ומקישים על Enter:
Read the headers of database/seed_data_berlin.csv. Connect to the database via the MCP tool, create a table named restaurants with the correct data types, and load all the records from the CSV file into it.
התבוננות בסוכן בזמן שהוא מבצע את המשימה:
- הכלי יקרא קודם את הכותרות של קובץ ה-CSV וכמה שורות לדוגמה כדי לקבוע את הסכימה המתאימה.
- הוא יפעיל את כלי ה-MCP של AlloyDB כדי ליצור את הטבלה restaurants.
- המערכת תבצע הוספה באצווה של 100 רשומות של מסעדות מקובץ ה-CSV למסד הנתונים.
אימות
אחרי שהנציג יעדכן אתכם שהוא סיים, תוכלו לוודא שהנתונים נטענו:
בצ'אט עם הסוכן, שואלים את הסוכן:
Show me the first 5 records from the restaurants table.
הנציג יבצע שאילתה במסד הנתונים ויציג את 5 המסעדות הראשונות (למשל Pub Lia's Kitchen ו-Cafe Clärchens), כדי לאשר שהטמעת מסד הנתונים הצליחה.
7. Vibe Coding: Connect Frontend to Database
בקטע הזה, תגדירו את חזית האתר של Next.js כך שתתחבר למסד הנתונים הפעיל של AlloyDB. תתנו לסוכן הוראה להחליף את נתוני הדמה בשאילתת מסד נתונים פעילה וליישם חיפוש מילות מפתח.
המשימה
תבקשו מהסוכן לכתוב את קוד החיבור ולעדכן את דף הבית. מכיוון שהתחייבנו לכלל SSL של מסד הנתונים ב- .agents/AGENTS.md, הסוכן יגדיר אוטומטית את מאגר החיבורים לשימוש ב-SSL לחיבורים בענן, בלי שתצטרכו לציין זאת בהנחיה!
בצ'אט עם Antigravity Agent, מעתיקים ומדביקים את ההנחיה הבאה ולוחצים על Enter (צריך להחליף את [YOUR_PASSWORD] בסיסמה של מסד הנתונים בפועל):
Connect our Next.js frontend to the restaurants table in the database using the pg library. Use a connection pool configured with environment variables: DB_HOST, DB_USER (postgres), DB_PASS (password is '[YOUR_PASSWORD]'), and DB_NAME (postgres). Replace the mock data in page.tsx with a live query, and implement keyword search on the name, category, and description
התבוננות בסוכן בזמן שהוא מבצע את המשימה:
- הפקודה תתקין את חבילת pg ואת סוגי ה-TypeScript שלה (@types/pg).
- הכלי ייצור קובץ חיבור למסד נתונים (או פעולת שרת של Next.js) ויגדיר את מאגר החיבורים.
- הכלי יקרא את הכללים בקובץ AGENTS.md ויוסיף באופן אוטומטי את הגדרת ה-SSL למארחים לא מקומיים.
- הוא ישכתב את הקובץ page.tsx כדי לשלוח שאילתה למסד הנתונים ולסנן את התוצאות על סמך שאילתת החיפוש.
אימות
כדי לבדוק את השינויים, צריך לפרוס מחדש את ממשק הקצה ב-Cloud Run. מכיוון שאנחנו משתמשים בתהליך 'Cloud-Only', כך הקוד החדש נשלח.
פותחים את המסוף המשולב ב-Antigravity IDE (מוודאים שאתם בספריית הבסיס).
מריצים את פקודת הפריסה ומעבירים את כתובת ה-IP הפרטית והסיסמה של AlloyDB כמשתני סביבה (מחליפים את הערכים הזמניים לשמירת מקום בערכים בפועל):
gcloud run deploy berlin-gastronomy-guide \
--source frontend/ \
--network=default \
--subnet=default \
--set-env-vars="DB_HOST=[YOUR_ALLOYDB_PRIVATE_IP],DB_USER=postgres,DB_PASS=[YOUR_PASSWORD],DB_NAME=postgres" \
--allow-unauthenticated \
--region=us-central1
אחרי שהפריסה מסתיימת, פותחים את כתובת ה-URL של השירות בדפדפן.
אפשר לחפש את "Burgermeister" או "Kebab". המסעדות האמיתיות אמורות להיטען מהמסד הנתונים.
שימו לב שעכשיו מוצגות בכרטיסי המסעדות התמונות האמיתיות שלהן מ-GCS (כי רשומות מסד הנתונים מכילות את כתובות ה-URL הציבוריות של GCS שהעלינו קודם!).
8. Vibe Coding: הפעלת חיפוש סמנטי
בקטע הזה תשדרגו את האפליקציה כדי לתמוך בחיפוש וקטורי סמנטי מבוסס-AI. במקום להתאים רק מילות מפתח מדויקות, המשתמשים יוכלו לחפש על ידי תיאור האווירה או החוויה שהם מחפשים (למשל, "מקום לארוחה רומנטית" או "משהו לאכול אחרי בילוי במועדון").
המשימה
תתנו לסוכן הוראה להפעיל חיפוש סמנטי בטבלת המסעדות. הסוכן ישתמש במיומנות המותאמת אישית add-vector-search-alloydb במאגר כדי לטפל אוטומטית בתוספים למסד הנתונים, ברישום המודל של פלטפורמת הסוכנים, ביצירת הטמעות ובעדכוני שאילתות.
בצ'אט עם Antigravity Agent, מעתיקים ומדביקים את ההנחיה הבאה ומקישים על Enter:
Upgrade our database to support Semantic Vector Search on the restaurants table based on the description column. Then, update our frontend search query to use vector similarity search.
התבוננות בסוכן בזמן שהוא מבצע את המשימה:
- הוא יתחבר ל-AlloyDB ויפעיל את התוספים vector (pgvector) ו-google_ml_integration.
- הוא ירשום את מודל ההטמעה של Agent Platform (text-embedding-004) בתוך מסד הנתונים.
- פעולה זו תוסיף עמודת הטמעה חדשה לטבלת המסעדות.
- הכלי יריץ שאילתה במסד הנתונים כדי ליצור הטמעות לכל 100 תיאורי המסעדות.
- הוא יעדכן את קוד הקצה הקדמי כדי ליצור הטמעה לשאילתת החיפוש של המשתמש ולבצע חיפוש של דמיון וקטורי באמצעות אופרטור המרחק הקוסינוסי (<=>).
אימות
פורסים מחדש את הקוד המעודכן ב-Cloud Run.
במסוף המשולב של Antigravity IDE, מריצים את פקודת הפריסה (מחליפים את הערכים הזמניים לשמירת מקום בערכים בפועל):
gcloud run deploy berlin-gastronomy-guide \
--source frontend/ \
--network=default \
--subnet=default \
--set-env-vars="DB_HOST=[YOUR_ALLOYDB_PRIVATE_IP],DB_USER=postgres,DB_PASS=[YOUR_PASSWORD],DB_NAME=postgres" \
--allow-unauthenticated \
--region=us-central1
אחרי שהפריסה מסתיימת, פותחים את כתובת ה-URL של השירות בדפדפן.
כדי לבדוק את החיפוש הסמנטי, מזינים תיאור בשפה טבעית, למשל:
- "a romantic dinner spot"
- "quick bite after clubbing"
שימו לב שהיא מחזירה מסעדות רלוונטיות מאוד (כמו Cafe Clärchens או Burgermeister) גם אם המילים המדויקות 'רומנטי' או 'מועדון' לא מופיעות בשם או בתיאור שלהן.
9. Vibe Coding: Database Optimization
ככל שהאפליקציה גדלה, צריך לבצע אופטימיזציה של מסד הנתונים כדי לטפל בכמויות גדולות של נתונים (100,000 שורות ומעלה) ובתנועת חיפוש גבוהה בו-זמנית. בשלב האחרון, תתייחסו לסוכן כאדמין וירטואלי של מסד נתונים (DBA) כדי לנתח ולבצע אופטימיזציה של סכימת מסד הנתונים.
המשימה
תבקשו מהסוכן לפעול כאדריכל ראשי של מסד נתונים, לנתח את הסכימה הנוכחית ולהמליץ על אופטימיזציות. אחרי שתבדקו ותאשרו את ההמלצות, הסוכן ישתמש במיומנות המותאמת אישית optimize-database-alloydb כדי ליישם אותן באופן אוטומטי.
Act as a Principal Database Architect. Our semantic search is working, but we need to optimize the database for production scale. Analyze our current schema. What are the top 2 database-schema optimizations you recommend we implement right now? Explain them to me and wait for my approval before modifying the database.
הסוכן ינתח את מסד הנתונים ויגיב עם שתי המלצות:
- אינדקס HNSW: אינדקס של שכן קרוב משוער (ANN) בעמודת ההטמעה, כדי להריץ במהירות רבה שאילתות של דמיון וקטורי.
- חלוקה למחיצות בטבלה: חלוקה למחיצות בטבלת המסעדות (למשל, חלוקה למחיצות לפי שכונה) כדי לשפר את ביצועי השאילתות ואת יכולת הניהול.
קוראים את ההסברים. כשהכול יהיה מוכן, תצטרכו להשיב לנציג בצ'אט:
Approved, please apply these optimizations.
התבוננות בסוכן בזמן שהוא מבצע את המשימה:
- הפונקציה תיצור את אינדקס HNSW בעמודת ההטמעה.
- הפעולה הזו תיצור מחיצות בטבלת המסעדות לפי שכונה, ותיצור טבלאות מחיצות צאצא לכל שכונה, ותעביר את הנתונים הקיימים.
אימות
מבקשים מהסוכן לוודא שהאופטימיזציות הוחלו בהצלחה. בצ'אט עם הנציג, שואלים:
Show me the list of partitions for the restaurants table and the indexes on it.
הסוכן יבצע שאילתה בקטלוג של מסד הנתונים ויציג את מבנה המחיצות החדש (למשל, restaurants_mitte, restaurants_kreuzberg) ואת אינדקס ה-HNSW, כדי לוודא שמסד הנתונים שלכם עכשיו מותאם באופן מלא לייצור.
10. אתגר: הוספת ביקורות ודירוג
עכשיו תורך לבחון את כישורי הקידוד שלך ב-Vibe! באתגר הזה, תרחיבו את מדריך המסעדות של ברלין כדי לתמוך בביקורות של לקוחות ובדירוגי כוכבים.
המשימה
במקום להשתמש בהנחיה מוכנה להעתקה והדבקה, כתבו הנחיה משלכם בצ'אט עם סוכן Antigravity כדי להטמיע את התכונות הבאות:
- סכימת מסד נתונים: יצירת טבלת
reviewsחדשה שמקושרת לטבלתrestaurants. הוא צריך לאחסן דירוג (מספר שלם מ-1 עד 5) ותגובה קצרה. - יצירת נתונים: יצירת 3-4 ביקורות ריאליסטיות של לקוחות לכל אחת מ-100 המסעדות במסד הנתונים.
- הטמעה בחלק הקדמי של האתר: מעדכנים את החלק הקדמי של האתר ב-Next.js כדי לחשב ולהציג את דירוג הכוכבים הממוצע (למשל,
⭐⭐⭐⭐☆) בכל כרטיס של מסעדה. - סינון: מוסיפים מסנן נפתח בחלק העליון של הדף כדי לסנן מסעדות לפי הדירוג שלהן (למשל, 'הצגת הכול', '4 כוכבים ומעלה', '3 כוכבים ומעלה').
אימות
אחרי שהסוכן משלים את המשימה, פורסים מחדש את האפליקציה ב-Cloud Run (מחליפים את ה-placeholder בערכים בפועל) מהטרמינל המשולב של Antigravity IDE:
gcloud run deploy berlin-gastronomy-guide \
--source frontend/ \
--network=default \
--subnet=default \
--set-env-vars="DB_HOST=[YOUR_ALLOYDB_PRIVATE_IP],DB_USER=postgres,DB_PASS=[YOUR_PASSWORD],DB_NAME=postgres" \
--allow-unauthenticated \
--region=us-central1
אחרי שהפריסה מסתיימת, מרעננים את הדפדפן ומוודאים שדירוג הכוכבים מופיע בכרטיסים.
.
11. תוצאות
אחרי השלמת השלבים, יצרתם ואופטמתם בהצלחה אפליקציית AI מהדור הבא שמגובה במסד נתונים באמצעות Vibe Coding. בקטע הזה נפרט את היכולות הארכיטקטוניות העיקריות שהטמעתם:
שילוב של מסד נתונים אג'נטי (פרוטוקול הקשר של המודל)
בדרך כלל, כתיבת קוד למסד נתונים היא תהליך ידני של מעבר בין סביבת הפיתוח המשולבת (IDE), התיעוד ולקוחות מסד הנתונים.
בשיעור ה-Lab הזה השתמשתם ב-Model Context Protocol (MCP) Toolbox כדי לגשר על הפער הזה. הסוכן קיבל גישה ישירה לכלי בדיקת סכימת מסד הנתונים ולכלי להפעלת SQL, ולכן הוא הצליח:
- בודקים את נתוני ה-CSV הגולמיים ומתכננים את סכימת מסד הנתונים.
- ליצור ולהפעיל את ה-DDL כדי ליצור טבלאות.
- מחברים את מאגר החיבורים באפליקציית Next.js.
הסרטון הזה מראה איך MCP הופך את פיתוח מסדי הנתונים לחוויה מהירה ואינטראקטיבית, תוך שמירה על שליטה מלאה של המפתח בסביבת הפיתוח המשולבת (IDE).
AI בתוך מסד נתונים (פלטפורמת סוכנים וחיפוש סמנטי)
האפליקציה שלכם ממנפת את השילוב המקורי של AlloyDB עם פלטפורמת הסוכנים של Google Cloud כדי ליצור הטמעות וקטוריות ישירות בתוך מסד הנתונים באמצעות SQL:
- יצירת הטמעות אונליין: במקום לשלוף נתונים לשירות Python חיצוני, AlloyDB קורא למודל text-embedding-004 בתוך מסד הנתונים באמצעות פונקציות SQL.
- חיפוש סמנטי של וקטורים: באמצעות התוסף pgvector ואופרטור המרחק הקוסינוסי (<=>), הסוכן יכול להתאים את ה"אווירה" של השפה הטבעית של המשתמש (למשל, "ארוחה רומנטית") לייצוג הווקטורי הקרוב ביותר בקטלוג המסעדות, ולהחזיר תוצאות רלוונטיות מבחינה סמנטית במילישניות.
אופטימיזציה של מסד נתונים ברמת ייצור (HNSW וחלוקה למחיצות)
כדי לוודא שהאפליקציה יכולה להתרחב ל-100,000 שורות ומעלה ולעמוד בעומס תנועה גבוה, פעלת כ-DBA וירטואלי כדי להחיל שני שיפורים מתקדמים במסד הנתונים:
- אינדקס HNSW (Hierarchical Navigable Small World): יצרתם אינדקס HNSW בעמודת הווקטור. בניגוד לאינדקסים שטוחים, HNSW בונה גרף רב-שכבתי שמאפשר חיפושים מהירים מאוד של השכן הקרוב המשוער (ANN) עם שיעור היזכרות גבוה.
- חלוקת טבלה למחיצות (Partitioning) באמצעות הצהרה: חילקתם את טבלת המסעדות למחיצות לפי שכונה. כך אפשר לוודא ששאילתות שמטרגטות אזור ספציפי יסרקו רק את המחיצה הרלוונטית ולא את כל הטבלה, וכך יצמצמו באופן משמעותי את קלט/פלט הדיסק ואת זמן האחזור של השאילתות.
מפתחי אפליקציות נמנעים בדרך כלל מהגדרות מסובכות של מסדי נתונים, ממתמטיקה של וקטורים ומאסטרטגיות מורכבות של יצירת אינדקסים, כי הם דורשים מומחיות מיוחדת בניהול מסדי נתונים. אנחנו מצמצמים את הפער הזה באמצעות שיטת Vibe Coding עם סביבת פיתוח משולבת (IDE) מבוססת-סוכן. עכשיו אנחנו יכולים לתכנן, ליצור ולבצע אופטימיזציה של אפליקציות מסד נתונים ברמת ייצור באמצעות שפה טבעית. כך אנחנו מקצרים משמעותית את מחזור הפיתוח ויכולים להתמקד במה שהכי חשוב: יצירת חוויות משתמש מדהימות.
12. הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם במעבדה הזו:
- במסוף Google Cloud, עוברים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete (מחיקה).
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
13. מזל טוב
יצרתם והטמעתם בהצלחה אפליקציה מבוססת-נתונים שמבוססת על AI באמצעות Vibe Coding.
בשיעור ה-Lab הזה:
- הקצאת מסד נתונים של AlloyDB עם גישה לכתובות IP פרטיות וציבוריות.
- חיברתם את Antigravity IDE ישירות למסד הנתונים באמצעות Model Context Protocol (MCP) Toolbox.
- השתמשתי בשפה טבעית כדי להטמיע קטלוג CSV, לקשר בין קצה קדמי של Next.js למסד הנתונים ולפרוס אותו ב-Cloud Run.
- הפעלת שילוב של פלטפורמת סוכנים בתוך מסד הנתונים כדי ליצור הטמעות וקטוריות ולבצע חיפוש סמנטי.
- פעל כ-DBA וירטואלי כדי לבצע אופטימיזציה של מסד הנתונים שלך עבור קנה מידה של ייצור באמצעות אינדקס HNSW וחלוקת טבלאות.
כל זה נעשה באמצעות שיחה טבעית עם סוכן ה-AI, בלי לכתוב אפילו שורה אחת של SQL באופן ידני או לפתוח לקוחות חיצוניים של מסדי נתונים.
מידע נוסף זמין במסמכי העזרה של המוצרים: