שימוש ב-Private Service Connect כדי לגשת לאינדקס של Vector Search משרת מקומי

מארחים מקומיים יכולים להגיע לנקודת קצה של אינדקס חיפוש וקטורי דרך האינטרנט הציבורי או באופן פרטי דרך ארכיטקטורת רשת היברידית שמשתמשת ב-Private Service Connect דרך Cloud VPN או Cloud Interconnect. שתי האפשרויות מציעות הצפנת SSL/TLS. עם זאת, האפשרות הפרטית מציעה ביצועים טובים בהרבה, ולכן מומלצת לאפליקציות קריטיות.

במדריך הזה משתמשים ב-HA VPN (רשת וירטואלית פרטית בזמינות גבוהה) כדי לגשת באופן פרטי לנקודת קצה של אינדקס חיפוש וקטורי, בין שתי רשתות ענן וירטואלי פרטי (VPC) שיכולות לשמש כבסיס לקישוריות פרטית בין סביבות מרובות עננים (multi-cloud) ובין סביבות מקומיות.

המדריך הזה מיועד לאדמינים של רשתות ארגוניות, למדעני נתונים ולחוקרים שמכירים את Gemini Enterprise Agent Platform, את ענן וירטואלי פרטי (VPC), את Google Cloud המסוף ואת Cloud Shell. היכרות עם חיפוש וקטורי יכולה לעזור, אבל היא לא חובה.

תרשים ארכיטקטוני של שימוש ב-Private Service Connect כדי לגשת לאינדקס החיפוש הווקטורי מתוך רשת מקומית.

מטרות

  • יוצרים שתי רשתות VPC, כמו שמוצג בתרשים הקודם:
    • הערך 1 (onprem-vpc) מייצג רשת מקומית.
    • השני (vertex-networking-vpc) הוא נקודת הקצה של אינדקס חיפוש וקטורי.
  • פריסת שערי HA VPN, מנהרות Cloud VPN ו-Cloud Routers כדי לחבר בין vertex-networking-vpc ל-onprem-vpc.
  • יוצרים ופורסים אינדקס חיפוש וקטורי.
  • יוצרים כלל העברה ב-Private Service Connect כדי להעביר שאילתות לנקודת הקצה של אינדקס החיפוש הווקטורי.
  • מגדירים מסלול מותאם אישית שמתפרסם ב-Cloud Router ב-vertex-networking-vpc כדי להודיע על מסלולים לנקודת הקצה של האינדקס ל-onprem-vpc.
  • יוצרים מכונה וירטואלית ב-Compute Engine ב-onprem-vpc כדי לייצג אפליקציית לקוח ששולחת בקשות לנקודת הקצה של אינדקס חיפוש הווקטורים דרך HA VPN.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

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

לפני שמתחילים

  1. נכנסים לדף לבחירת הפרויקט במסוף Google Cloud .

    כניסה לדף לבחירת הפרויקט

  2. בוחרים או יוצרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
  3. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  4. פותחים את Cloud Shell כדי להריץ את הפקודות שמפורטות במדריך הזה. ‫Cloud Shell היא סביבת מעטפת אינטראקטיבית של Google Cloud שמאפשרת לכם לנהל את הפרויקטים והמשאבים שלכם מדפדפן האינטרנט.
  5. ב-Cloud Shell, מגדירים את הפרויקט הנוכחי למזהה הפרויקט Google Cloud ומאחסנים את אותו מזהה פרויקט במשתנה shell‏ projectid:
    ‫
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    מחליפים את PROJECT_ID במזהה הפרויקט. במקרה הצורך, אפשר לאתר את מזהה הפרויקט במסוף Google Cloud . מידע נוסף זמין במאמר איך מאתרים את מזהה הפרויקט.
  6. אם אתם לא הבעלים של הפרויקט, אתם צריכים לבקש מבעלי הפרויקט להקצות לכם את התפקיד Project IAM Admin (אדמין IAM של הפרויקט) (roles/resourcemanager.projectIamAdmin). כדי להקצות תפקידי IAM בשלב הבא, צריך להיות לכם התפקיד הזה.
  7. מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM: roles/aiplatform.user, roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/iap.admin, roles/iap.tunnelResourceAccessor, roles/notebooks.admin, roles/servicemanagement.quotaAdmin, roles/servicedirectory.editor, roles/storage.admin, roles/aiplatform.admin, roles/aiplatform.user, roles/resourcemanager.projectIamAdmin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

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

    • ‫PROJECT_ID: מזהה הפרויקט.
    • ‫USER_IDENTIFIER: המזהה של חשבון המשתמש . לדוגמה, myemail@example.com.
    • ‫ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.
  8. מפעילים את ממשקי ה-API של DNS,‏ IAM,‏ Compute Engine,‏ Notebooks ו-Agent Platform, אם חלק מהם לא מופעלים:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable dns.googleapis.com iam.googleapis.com compute.googleapis.com notebooks.googleapis.com aiplatform.googleapis.com

יצירת רשתות VPC

בקטע הזה יוצרים שתי רשתות VPC: אחת ליצירת אינדקס חיפוש וקטורי ולפריסה שלו בנקודת קצה, והשנייה לגישה פרטית לנקודת הקצה הזו.

יצירת רשת VPC לנקודת הקצה של אינדקס החיפוש הווקטורי (vertex-networking-vpc)

  1. יוצרים את רשת ה-VPC לנקודת הקצה של האינדקס:

    gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
    
  2. יוצרים תת-רשת בשם workbench-subnet, עם טווח IPv4 ראשי של: 172.16.20.0/28:

    gcloud compute networks subnets create workbench-subnet \
      --project=$projectid --range=172.16.20.0/28 \
      --network=vertex-networking-vpc \
      --region=us-central1 \
      --enable-private-ip-google-access
    
  3. יוצרים תת-רשת בשם psc-forwarding-rule-subnet, עם טווח IPv4 ראשי של 172.16.30.0/28:

    gcloud compute networks subnets create psc-forwarding-rule-subnet \
      --project=$projectid \
      --range=172.16.30.0/28 \
      --network=vertex-networking-vpc \
      --region=us-central1 \
      --enable-private-ip-google-access
    

יצירת רשת VPC לגישה פרטית לנקודת הקצה (onprem-vpc)

  1. יוצרים את רשת ה-VPC כדי לדמות את הרשת המקומית (onprem-vpc):

    gcloud compute networks create onprem-vpc \
      --subnet-mode custom
    
  2. ברשת onprem-vpc, יוצרים תת-רשת בשם onprem-vpc-subnet1 עם טווח IPv4 ראשי של 172.16.10.0/29:

    gcloud compute networks subnets create onprem-vpc-subnet1 \
      --network onprem-vpc \
      --range 172.16.10.0/29 \
      --region us-central1
    

איך מוודאים שהגדרות רשתות ה-VPC נכונות

  1. במסוף Google Cloud , עוברים לכרטיסייה Networks in current project בדף VPC networks.

    מעבר לרשתות VPC

  2. ברשימת רשתות ה-VPC, מוודאים ששתי הרשתות נוצרו: vertex-networking-vpc ו-onprem-vpc.

  3. לוחצים על הכרטיסייה Subnets in current project (רשתות משנה בפרויקט הנוכחי).

  4. ברשימת תת-הרשתות של ה-VPC, מוודאים שתת-הרשתות workbench-subnet, psc-forwarding-rule-subnet ו-onprem-vpc-subnet1 נוצרו.

יצירת מכונת VM‏ on-prem-client

בקטע הזה יוצרים מכונת VM שמייצגת אפליקציית לקוח ששולחת בקשות לנקודת הקצה של אינדקס החיפוש הווקטורי דרך HA VPN.

  1. ב-Cloud Shell, יוצרים את on-prem-client המכונה הווירטואלית:

    gcloud compute instances create on-prem-client \
      --zone=us-central1-a \
      --image-family=debian-11 \
      --image-project=debian-cloud \
      --subnet=onprem-vpc-subnet1 \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --no-address \
      --shielded-secure-boot \
      --metadata startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install tcpdump dnsutils -y"
    
    

הגדרת קישוריות היברידית

בקטע הזה יוצרים שני שערי HA VPN שמחוברים זה לזה. אחד נמצא ברשת ה-VPC‏ vertex-networking-vpc. השני נמצא ברשת onprem-vpc VPC. כל שער מכיל Cloud Router וצמד מנהרות VPN.

יצירת שערי HA VPN

  1. יוצרים ב-Cloud Shell שער HA VPN לרשת vertex-networking-vpc VPC:

    gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \
       --network vertex-networking-vpc \
       --region us-central1
    
  2. יוצרים את שער HA VPN לרשת ה-VPC‏ onprem-vpc:

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. במסוף Google Cloud , עוברים לכרטיסייה Cloud VPN Gateways בדף VPN.

    מעבר אל VPN

  4. מוודאים ששני השערים (vertex-networking-vpn-gw1 ו-onprem-vpn-gw1) נוצרו ושלכל אחד מהם יש שתי כתובות IP של ממשקים.

יצירה של Cloud Routers ושערי Cloud NAT

בכל אחת משתי רשתות ה-VPC, יוצרים שני נתבי Cloud Router: אחד כללי ואחד אזורי. בכל אחד מ-Cloud Routers האזוריים, יוצרים שער Cloud NAT. שערי Cloud NAT מספקים קישוריות יוצאת למכונות וירטואליות (VM) של Compute Engine שאין להן כתובות IP חיצוניות.

  1. יוצרים Cloud Router ברשת ה-VPC‏ vertex-networking-vpc ב-Cloud Shell:

    gcloud compute routers create vertex-networking-vpc-router1 \
       --region us-central1\
       --network vertex-networking-vpc \
       --asn 65001
    
  2. יוצרים Cloud Router לרשת ה-VPC‏ onprem-vpc:

    gcloud compute routers create onprem-vpc-router1 \
       --region us-central1\
       --network onprem-vpc\
       --asn 65002
    
  3. יוצרים Cloud Router אזורי לרשת ה-VPC‏ vertex-networking-vpc:

    gcloud compute routers create cloud-router-us-central1-vertex-nat \
      --network vertex-networking-vpc \
      --region us-central1
    
  4. מגדירים שער Cloud NAT ב-Cloud Router האזורי:

    gcloud compute routers nats create cloud-nat-us-central1 \
      --router=cloud-router-us-central1-vertex-nat \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges \
      --region us-central1
    
  5. יוצרים Cloud Router אזורי לרשת ה-VPC‏ onprem-vpc:

    gcloud compute routers create cloud-router-us-central1-onprem-nat \
      --network onprem-vpc \
      --region us-central1
    
  6. מגדירים שער Cloud NAT ב-Cloud Router האזורי:

    gcloud compute routers nats create cloud-nat-us-central1-on-prem \
      --router=cloud-router-us-central1-onprem-nat \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges \
      --region us-central1
    
  7. נכנסים לדף Cloud Routers במסוף Google Cloud .

    מעבר אל Cloud Routers

  8. ברשימה Cloud Routers, מוודאים שהנתבים הבאים נוצרו:

    • cloud-router-us-central1-onprem-nat
    • cloud-router-us-central1-vertex-nat
    • onprem-vpc-router1
    • vertex-networking-vpc-router1

    יכול להיות שתצטרכו לרענן את הכרטיסייה בדפדפן של Google Cloud המסוף כדי לראות את הערכים החדשים.

  9. ברשימת נתבי Cloud, לוחצים על cloud-router-us-central1-vertex-nat.

  10. בדף פרטי הנתב, מוודאים ששער cloud-nat-us-central1 Cloud NAT נוצר.

  11. לוחצים על החץ חזרה כדי לחזור לדף Cloud Routers.

  12. ברשימת הנתבים, לוחצים על cloud-router-us-central1-onprem-nat.

  13. בדף Router details (פרטי הנתב), מוודאים שנוצר שער cloud-nat-us-central1-on-premCloud NAT.

יצירת מנהרות VPN

  1. ב-Cloud Shell, ברשת vertex-networking-vpc, יוצרים מנהרת VPN בשם vertex-networking-vpc-tunnel0:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \
      --peer-gcp-gateway onprem-vpn-gw1 \
      --region us-central1 \
      --ike-version 2 \
      --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
      --router vertex-networking-vpc-router1 \
      --vpn-gateway vertex-networking-vpn-gw1 \
      --interface 0
    
  2. ברשת vertex-networking-vpc, יוצרים מנהרת VPN בשם vertex-networking-vpc-tunnel1:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \
      --peer-gcp-gateway onprem-vpn-gw1 \
      --region us-central1 \
      --ike-version 2 \
      --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
      --router vertex-networking-vpc-router1 \
      --vpn-gateway vertex-networking-vpn-gw1 \
      --interface 1
    
  3. ברשת onprem-vpc, יוצרים מנהרת VPN בשם onprem-vpc-tunnel0:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \
      --peer-gcp-gateway vertex-networking-vpn-gw1 \
      --region us-central1\
      --ike-version 2 \
      --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
      --router onprem-vpc-router1 \
      --vpn-gateway onprem-vpn-gw1 \
      --interface 0
    
  4. ברשת onprem-vpc, יוצרים מנהרת VPN בשם onprem-vpc-tunnel1:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \
      --peer-gcp-gateway vertex-networking-vpn-gw1 \
      --region us-central1\
      --ike-version 2 \
      --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
      --router onprem-vpc-router1 \
      --vpn-gateway onprem-vpn-gw1 \
      --interface 1
    
  5. נכנסים לדף VPN במסוף Google Cloud .

    מעבר אל VPN

  6. ברשימת מנהרות ה-VPN, מוודאים שנוצרו ארבע מנהרות VPN.

יצירת סשנים של BGP

‫Cloud Router משתמש בפרוטוקול Border Gateway Protocol ‏ (BGP) כדי להחליף מסלולים בין רשת ה-VPC (במקרה הזה, vertex-networking-vpc) לבין הרשת המקומית (שמיוצגת על ידי onprem-vpc). ב-Cloud Router, מגדירים ממשק ורשת שכנה של BGP לנתב המקומי. הממשק והגדרת עמית BGP יוצרים יחד סשן BGP. בקטע הזה יוצרים שני סשנים של BGP עבור vertex-networking-vpc ושני סשנים עבור onprem-vpc.

אחרי שמגדירים את הממשקים ואת עמיתי ה-BGP בין הנתבים, הם מתחילים להחליף מסלולים באופן אוטומטי.

יצירת סשנים של BGP עבור vertex-networking-vpc

  1. ב-Cloud Shell, ברשת vertex-networking-vpc, יוצרים ממשק BGP ל-vertex-networking-vpc-tunnel0:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
      --interface-name if-tunnel0-to-onprem \
      --ip-address 169.254.0.1 \
      --mask-length 30 \
      --vpn-tunnel vertex-networking-vpc-tunnel0 \
      --region us-central1
    
  2. ברשת vertex-networking-vpc, יוצרים קישור בין רשתות שכנות באמצעות BGP למנהרה bgp-onprem-tunnel0:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
      --peer-name bgp-onprem-tunnel0 \
      --interface if-tunnel0-to-onprem \
      --peer-ip-address 169.254.0.2 \
      --peer-asn 65002 \
      --region us-central1
    
  3. ברשת vertex-networking-vpc, יוצרים ממשק BGP ל-vertex-networking-vpc-tunnel1:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
      --interface-name if-tunnel1-to-onprem \
      --ip-address 169.254.1.1 \
      --mask-length 30 \
      --vpn-tunnel vertex-networking-vpc-tunnel1 \
      --region us-central1
    
  4. ברשת vertex-networking-vpc, יוצרים קישור בין רשתות שכנות באמצעות BGP למנהרה bgp-onprem-tunnel1:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
      --peer-name bgp-onprem-tunnel1 \
      --interface if-tunnel1-to-onprem \
      --peer-ip-address 169.254.1.2 \
      --peer-asn 65002 \
      --region us-central1
    

יצירת סשנים של BGP עבור onprem-vpc

  1. ברשת onprem-vpc, יוצרים ממשק BGP ל-onprem-vpc-tunnel0:

    gcloud compute routers add-interface onprem-vpc-router1 \
      --interface-name if-tunnel0-to-vertex-networking-vpc \
      --ip-address 169.254.0.2 \
      --mask-length 30 \
      --vpn-tunnel onprem-vpc-tunnel0 \
      --region us-central1
    
  2. ברשת onprem-vpc, יוצרים קישור בין רשתות שכנות באמצעות BGP למנהרה bgp-vertex-networking-vpc-tunnel0:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
      --peer-name bgp-vertex-networking-vpc-tunnel0 \
      --interface if-tunnel0-to-vertex-networking-vpc \
      --peer-ip-address 169.254.0.1 \
      --peer-asn 65001 \
      --region us-central1
    
  3. ברשת onprem-vpc, יוצרים ממשק BGP ל-onprem-vpc-tunnel1:

    gcloud compute routers add-interface   onprem-vpc-router1  \
      --interface-name if-tunnel1-to-vertex-networking-vpc \
      --ip-address 169.254.1.2 \
      --mask-length 30 \
      --vpn-tunnel onprem-vpc-tunnel1 \
      --region us-central1
    
  4. ברשת onprem-vpc, יוצרים קישור בין רשתות שכנות באמצעות BGP למנהרה bgp-vertex-networking-vpc-tunnel1:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
      --peer-name bgp-vertex-networking-vpc-tunnel1 \
      --interface if-tunnel1-to-vertex-networking-vpc \
      --peer-ip-address 169.254.1.1 \
      --peer-asn 65001 \
      --region us-central1
    

אימות של יצירת סשן BGP

  1. נכנסים לדף VPN במסוף Google Cloud .

    מעבר אל VPN

  2. ברשימת מנהרות ה-VPN, מוודאים שהערך בעמודה BGP session status עבור כל אחת מהמנהרות השתנה מ-Configure BGP session ל-BGP established. יכול להיות שתצטרכו לרענן את כרטיסיית הדפדפן של מסוף Google Cloud כדי לראות את הערכים החדשים.

אימות של המסלולים שנלמדו vertex-networking-vpc

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. ברשימת רשתות ה-VPC, לוחצים על vertex-networking-vpc.

  3. לוחצים על הכרטיסייה מסלולים.

  4. בוחרים באפשרות us-central1 (Iowa) ברשימה Region ולוחצים על View.

  5. בעמודה Destination IP range (טווח כתובות ה-IP של היעד), מוודאים שonprem-vpc-subnet1טווח כתובות ה-IP של תת-הרשת (172.16.10.0/29) מופיע פעמיים.

אימות של המסלולים שנלמדו on-prem-vpc

  1. לוחצים על החץ 'חזרה' כדי לחזור לדף רשתות VPC.

  2. ברשימת רשתות ה-VPC, לוחצים על on-prem-vpc.

  3. לוחצים על הכרטיסייה מסלולים.

  4. בוחרים באפשרות us-central1 (Iowa) ברשימה Region ולוחצים על View.

  5. בעמודה Destination IP range (טווח כתובות ה-IP של היעד), מוודאים שכל אחד מטווח כתובות ה-IP של תת-הרשת workbench-subnet (172.16.20.0/28) וטווח כתובות ה-IP של תת-הרשת psc-forwarding-rule-subnet (172.16.30.0/28) מופיע פעמיים.

יצירת מופע של Agent Platform Workbench

בקטע הזה יוצרים חשבון שירות שמנוהל על ידי משתמש, ואז יוצרים מופע של Agent Platform Workbench שמשתמש בחשבון השירות כדי לגשת לשירותים ול-APIs שלGoogle Cloud .

יצירה של חשבון שירות

במדריך הזה יוצרים חשבון שירות שמנוהל על ידי המשתמשים בהתאם לשיטות המומלצות של Compute Engine ו-IAM.

  1. ב-Cloud Shell, יוצרים חשבון שירות בשם workbench-sa:

    gcloud iam service-accounts create workbench-sa \
       --display-name="workbench-sa"
    
  2. מקצים לחשבון השירות את התפקיד משתמש ב-Agent Platform (roles/aiplatform.user) ב-IAM:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/aiplatform.user"
    
  3. מקצים לחשבון השירות את התפקיד אדמין אחסון (roles/storage.admin) ב-IAM:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/storage.admin"
    
  4. מקצים לחשבון השירות את תפקיד ה-IAM‏ Service Usage Admin (אדמין השימוש בשירות) (roles/serviceusage.serviceUsageAdmin):

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/serviceusage.serviceUsageAdmin"
    

יצירת מופע של Agent Platform Workbench

יוצרים מכונת Agent Platform Workbench ומציינים את workbench-sa חשבון השירות:

gcloud workbench instances create workbench-tutorial \
  --vm-image-project=deeplearning-platform-release \
  --vm-image-family=common-cpu-notebooks \
  --machine-type=n1-standard-4 \
  --location=us-central1-a \
  --subnet-region=us-central1 \
  --shielded-secure-boot=SHIELDED_SECURE_BOOT \
  --subnet=workbench-subnet \
  --disable-public-ip \
  --service-account-email=workbench-sa@$projectid.iam.gserviceaccount.com

יצירה ופריסה של אינדקס חיפוש וקטורי

הכנת הסביבה

  1. במסוף Google Cloud , עוברים לכרטיסייה Instances בדף Agent Platform Workbench.

    כניסה לדף Agent Platform Workbench

  2. לצד השם של מופע Agent Platform Workbench‏ (workbench-tutorial), לוחצים על Open JupyterLab.

    המופע של Agent Platform Workbench ייפתח ב-JupyterLab.

  3. בוחרים באפשרות קובץ > חדש > מחברת.

  4. בתפריט Select Kernel (בחירת ליבה), בוחרים באפשרות Python 3 (Local) (פייתון 3 (מקומי)) ולוחצים על Select (בחירה).

  5. כשפותחים את ה-Notebook החדש, יש תא קוד שמוגדר כברירת מחדל שאפשר להזין בו קוד. הוא נראה כמו [ ]: ואחריו שדה טקסט. בשדה הטקסט מדביקים את הקוד.

    כדי להתקין את Agent Platform SDK for Python, מדביקים את הקוד הבא בתא ולוחצים על  Run the selected cells and advance (הפעלת התאים שנבחרו ומעבר לתא הבא):

    !pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
    
  6. בשלב הזה ובכל אחד מהשלבים הבאים, מוסיפים תא קוד חדש (אם צריך) על ידי לחיצה על הוספה של תא מתחת, מדביקים את הקוד בתא ואז לוחצים על  הפעלת התאים שנבחרו ומעבר.

    כדי להשתמש בחבילות החדשות שהותקנו בסביבת זמן הריצה הזו של Jupyter, צריך להפעיל מחדש את סביבת זמן הריצה:

    # Restart kernel after installs so that your environment can access the new packages
    import IPython
    
    app = IPython.Application.instance()
    app.kernel.do_shutdown(True)
    
  7. מגדירים את משתני הסביבה הבאים ומחליפים את PROJECT_ID במזהה הפרויקט.

    # set project ID and location
    PROJECT_ID = "PROJECT_ID"
    LOCATION = "us-central1"
    
    # generate a unique id for this session
    from datetime import datetime
    UID = datetime.now().strftime("%m%d%H%M")
    

הפעלת ממשקי ה-API

במחברת Jupyterlab, מריצים את הפקודה הבאה כדי להפעיל ממשקי API ל-Compute Engine, ל-Gemini Enterprise Agent Platform ול-Cloud Storage במחברת:

! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
  --project {PROJECT_ID}

הכנת נתוני הדוגמה בקטגוריה של Cloud Storage

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

בקטע הזה יוצרים קטגוריה של Cloud Storage וממקמים בה את קובץ ההטמעה של מערך הנתונים. בשלב מאוחר יותר, משתמשים בקובץ הזה כדי ליצור אינדקס.

  1. בנוטבוק של Jupyterlab, יוצרים קטגוריה של Cloud Storage:

    BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}"
    ! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_ID
    
  2. מעתיקים את קובץ הדוגמה לקטגוריה של Cloud Storage.

    ! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
    
  3. כדי להשתמש בחיפוש וקטורי להרצת שאילתות, צריך גם להעתיק את קובץ ההטמעה לספרייה מקומית:

    ! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
    

יצירת אינדקס החיפוש בחיפוש וקטורי

  1. במחברת Jupyterlab, טוענים את ההטבעות לחיפוש וקטורי:

    # init the aiplatform package
    from google.cloud import aiplatform
    aiplatform.init(project=PROJECT_ID, location=LOCATION)
    
  2. יוצרים MatchingEngineIndex באמצעות הפונקציה create_tree_ah_index (השם הקודם של חיפוש וקטורי הוא Matching Engine):

    # create Index
    my_index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
      display_name = f"vs-quickstart-index-{UID}",
      contents_delta_uri = BUCKET_URI,
      dimensions = 768,
      approximate_neighbors_count = 10,
    )
    

    השיטה MatchingEngineIndex.create_tree_ah_index() יוצרת אינדקס. במדריך הזה, המשימה הזו נמשכת כ-5 עד 10 דקות.

  3. במסוף Google Cloud , עוברים לכרטיסייה Indexes בדף חיפוש וקטורי.

    כניסה לדף Indexes

  4. מוודאים שיש אינדקס שהשם שלו מתחיל ב-"vs-quickstart-index-" ומכיל את חותמת הזמן הנכונה.

  5. רושמים את מזהה האינדקס. תצטרכו את המזהה הזה בשלב מאוחר יותר כשפורסים את האינדקס.

יצירת נקודת הקצה של האינדקס

  1. ב-Cloud Shell, מריצים את הפקודות הבאות ומחליפים את PROJECT_ID במזהה הפרויקט:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    SERVICE_PROJECT=${projectid}
    REGION=us-central1
    VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com
    DISPLAY_NAME=vector-search
    
  2. יוצרים את נקודת הקצה של האינדקס:

    curl -H "Content-Type: application/json" \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      https://$VERTEX_ENDPOINT/v1/projects/$SERVICE_PROJECT/locations/$REGION/indexEndpoints \
      -d '{displayName: "'$DISPLAY_NAME'", privateServiceConnectConfig: { enablePrivateServiceConnect: true, projectAllowlist: ["'$SERVICE_PROJECT'"] }}'
    
  3. מוודאים שנקודת הקצה של האינדקס נוצרה:

    gcloud ai index-endpoints list --region=us-central1
    

    הפלט דומה לדוגמה הבאה, שבה מזהה נקודת הקצה של האינדקס הוא 8151506529447575552:

    Using endpoint [https://us-central1-aiplatform.googleapis.com/]
    ---
    createTime: '2023-10-10T23:55:20.526145Z'
    displayName: vector-search
    encryptionSpec: {}
    etag: AMEw9yN2qytNiwT73uwYpz_7N_b2-O8D1AuNoDb5QjFmkU4ye5Gzk2oQlMZBR1XeoQ11
    name: projects/725264228516/locations/us-central1/indexEndpoints/8151506529447575552
    privateServiceConnectConfig:
      enablePrivateServiceConnect: true
      projectAllowlist:
      - vertex-genai-400103
      - vertex-genai-400103
    updateTime: '2023-10-10T23:55:21.951394Z'
    
  4. רושמים את מזהה נקודת הקצה של האינדקס. תצטרכו את המזהה הזה בשלב מאוחר יותר כשפריסתם את האינדקס.

פריסת האינדקס בנקודת הקצה

ב-Cloud Shell, מריצים את הפקודה הבאה כדי לפרוס את האינדקס לנקודת הקצה:

gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
  --deployed-index-id=vector_one \
  --display-name=vector-search \
  --index=INDEX \
  --project=$projectid \
  --region=us-central1

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

  • ‫INDEX_ENDPOINT_ID: מזהה נקודת הקצה של האינדקס עבור נקודת הקצה של האינדקס מסוג Private Service Connect שיצרתם
  • ‫INDEX: המזהה של האינדקס שפורס

הפלט אמור להיראות כמו בדוגמה הבאה, שבה מזהה נקודת הקצה של האינדקס הוא 8151506529447575552:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
The deploy index operation [projects/725264228516/locations/us-central1/indexEndpoints/8151506529447575552/operations/6271807495283408896] was submitted successfully.

פעולת הפריסה נמשכת כ-10 עד 15 דקות. כשפורסים את האינדקס, נוצר צירוף שירות.

בדיקה שהאינדקס נפרס לנקודת הקצה של האינדקס

  1. במסוף Google Cloud , עוברים לכרטיסייה Index Endpoints בדף חיפוש וקטורי.

    לדף Index Endpoints

  2. מוודאים שלנקודת הקצה של האינדקס vector-search יש אינדקס שפריסתו הושלמה, שנקרא גם vector-search.

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

קבלת ה-URI של קובץ השירות לנקודת הקצה של האינדקס

אחרי שהאינדקס נפרס באופן מלא, אפשר לקבל את ה-URI של קובץ השירות.

ב-Cloud Shell, מריצים את הפקודה הבאה כדי לקבל את ה-URI של קובץ השירות:

gcloud ai index-endpoints list --region=us-central1 | grep -i  serviceAttachment:

בדוגמה הבאה של הפלט, ה-URI של קובץ השירות הוא projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798.

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
 serviceAttachment: projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798

רושמים את ה-URI של serviceAttachment, שמתחיל ב-projects, לדוגמה, projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798. תצטרכו אותו בשלב הבא, כשתיצרו כלל העברה.

יצירת כלל העברה

  1. ב-Cloud Shell, שומרים כתובת IP לכלל ההעברה כדי להשתמש בה לשאילתות באינדקס החיפוש של חיפוש וקטורי:

    gcloud compute addresses create vector-search-forwarding-rule \
      --region=us-central1 \
      --subnet=psc-forwarding-rule-subnet
    
  2. מאתרים את כתובת ה-IP השמורה:

    gcloud compute addresses list --filter="name=vector-search-forwarding-rule"
    
  3. יוצרים כלל העברה כדי לחבר את נקודת הקצה ל-Service Attachment, ומחליפים את SERVICE_ATTACHMENT_URI במזהה המשאבים האחיד (URI) של serviceAttachment.

    gcloud compute forwarding-rules create vector-search-forwarding-rule \
      --region=us-central1 \
      --network=vertex-networking-vpc \
      --address=vector-search-forwarding-rule \
      --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    הנה דוגמה לשימוש בפקודה הזו:

    gcloud compute forwarding-rules create vector-search-forwarding-rule \
      --region=us-central1 \
      --network=vertex-networking-vpc \
      --address=vector-search-forwarding-rule \
      --target-service-attachment=projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
    
  4. במסוף Google Cloud , עוברים לכרטיסייה Connected endpoints בדף Private Service Connect.

    מעבר אל Connected endpoints

  5. מוודאים שהסטטוס של vector-search-forwarding-rule הוא Accepted.

  6. חשוב לשים לב לכתובת ה-IP של כלל ההעברה של Private Service Connect. בשלב מאוחר יותר, תשתמשו בנקודת הקצה הזו כדי ליצור תקשורת עם אינדקס חיפוש הווקטורים שנפרס.

שליחת שאילתה לאינדקס שנפרס

אחרי שיצרתם כלל העברה של Private Service Connect שמחובר לנקודת הקצה של אינדקס חיפוש הווקטורים, אתם יכולים לשלוח שאילתות לאינדקס הפרוס מהמכונה הווירטואלית on-prem-client לכלל ההעברה.

כדי לאפשר לשרת proxy לאימות זהויות (IAP) להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:

  • רלוונטי לכל מכונות ה-VM שרוצים להפוך לנגישות דרך IAP.
  • מאפשר תעבורת TCP דרך יציאה 22 מטווח כתובות ה-IP‏ 35.235.240.0/20. הטווח הזה כולל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.

אחרי שיוצרים את חומת האש, מתקינים את לקוח ה-gRPC. בשלב מאוחר יותר, תשתמשו בלקוח gRPC כדי לשלוח שאילתות מהמכונה הווירטואלית on-prem-client.

יצירת הכלל בחומת האש והתקנת gRPC

  1. ב-Cloud Shell, מריצים את הפקודות הבאות ומחליפים את PROJECT_ID במזהה הפרויקט:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. יוצרים כלל לחומת האש של IAP בשם ssh-iap-vpc:

    gcloud compute firewall-rules create ssh-iap-vpc \
      --network onprem-vpc \
      --allow tcp:22 \
      --source-ranges=35.235.240.0/20
    
  3. מתחברים למכונת ה-on-prem-clientVM:

    gcloud compute ssh on-prem-client \
      --project=$projectid \
      --zone=us-central1-a \
      --tunnel-through-iap
    
  4. במכונה הווירטואלית on-prem-client, מתקינים את לקוח gRPC:

    sudo apt-get install git -y
    git clone https://github.com/grpc/grpc.git
    sudo apt-get install build-essential autoconf libtool pkg-config -y
    sudo apt-get install cmake -y
    cd grpc/
    git submodule update --init
    mkdir -p cmake/build
    cd cmake/build
    cmake -DgRPC_BUILD_TESTS=ON ../..
    make grpc_cli
    

    ההתקנה נמשכת כ-30 דקות.

קבלת מזהה של פריט קיים באינדקס

  1. במסוף Google Cloud , עוברים לכרטיסייה Instances בדף Agent Platform Workbench.

    כניסה לדף Agent Platform Workbench

  2. לצד השם של מופע Agent Platform Workbench, לוחצים על Open JupyterLab.

    המופע של Agent Platform Workbench ייפתח ב-JupyterLab.

  3. בוחרים באפשרות קובץ > חדש > מסוף.

  4. בטרמינל של JupyterLab (לא ב-Cloud Shell), מציגים את הרשומה האחרונה באינדקס:

    tail -1 product-embs.json
    
  5. מחפשים את צמד המפתח/ערך הראשון בפריט, שמכיל את מספר המזהה של הפריט, כמו בדוגמה הבאה:

    "id":"27452"
    

    חשוב לרשום את מספר התעודה המזהה. תצטרכו אותו כדי להריץ שאילתה בקטע הבא.

ביצוע שאילתת חיפוש וקטורי

במכונת ה-VM‏ on-prem-client, שולחים שאילתה לאינדקס שפרסתם:

./grpc_cli call  FORWARDING_RULE_IP:10000  google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"ITEM_ID"'"

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

  • ‫FORWARDING_RULE_IP: כתובת ה-IP של כלל ההעברה של Private Service Connect שיצרתם בקטע הקודם
  • ‫ITEM_ID: מספר מזהה הפריט ששמרתם בקטע הקודם

הפלט אמור להיראות כך:

   user@on-prem-client:~/grpc/cmake/build$ ./grpc_cli call  172.16.30.2:10000  google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"20020916"'"
   connecting to 172.16.30.2:10000
   neighbor {
     id: "16136217"
     distance: 0.99999558925628662
   }
   neighbor {
     id: "2196405"
     distance: 0.82817935943603516
   }
   neighbor {
     id: "3796353"
     distance: 0.82687419652938843
   }
   neighbor {
     id: "815154"
     distance: 0.8179466724395752
   }
   neighbor {
     id: "16262338"
     distance: 0.816785454750061
   }
   neighbor {
     id: "31290454"
     distance: 0.81560027599334717
   }
   neighbor {
     id: "4012943"
     distance: 0.80958610773086548
   }
   neighbor {
     id: "39738359"
     distance: 0.8020891547203064
   }
   neighbor {
     id: "7691697"
     distance: 0.80035769939422607
   }
   neighbor {
     id: "6398888"
     distance: 0.79880392551422119
   }
   Rpc succeeded with OK status

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.

כדי להימנע מחיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם במדריך הזה, אתם יכולים למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.

כדי למחוק את המשאבים הבודדים במסוף Google Cloud :

  1. כדי לבטל את הפריסה ולמחוק את האינדקס ב-Vector Search:

    1. במסוף Google Cloud , עוברים לכרטיסייה Indexes בדף חיפוש וקטורי.

      כניסה לדף Indexes

    2. מאתרים את האינדקס שהשם שלו מתחיל ב-"vs-quickstart-index-" ומכיל את חותמת הזמן הנכונה.

    3. לוחצים על שם האינדקס.

    4. בדף Index info (פרטי האינדקס), ליד שם האינדקס ברשימה Deployed indexes (אינדקסים שנפרסו), לוחצים על Actions (פעולות) ואז על Undeploy (ביטול הפריסה).

      ביטול הפריסה של האינדקס נמשך כמה דקות. אם מופיע עיגול כחול מסתובב לצד שם האינדקס, או אם סטטוס האינדקס הוא Undeploying, האינדקס עדיין בתהליך של ביטול הפריסה. יכול להיות שתצטרכו לרענן את הכרטיסייה בדפדפן של Google Cloud המסוף כדי לראות שהאינדקס כבר לא בפריסה.

    5. לוחצים על החץ 'חזרה' כדי לחזור לכרטיסייה Indexes.

    6. לצד השם של האינדקס ברשימת האינדקסים, לוחצים על פעולות ואז על מחיקה כדי למחוק את האינדקס.

  2. כדי למחוק את נקודת הקצה של האינדקס:

    1. במסוף Google Cloud , עוברים לכרטיסייה Index endpoints בדף חיפוש וקטורי.

      לדף Index endpoints

    2. לצד שם נקודת הקצה של האינדקס ברשימת נקודות הקצה של האינדקס, לוחצים על פעולות ואז על מחיקה כדי למחוק את נקודת הקצה של האינדקס.

  3. כדי למחוק את המופע של Agent Platform Workbench:

    1. במסוף Google Cloud , בקטע Gemini Enterprise Agent Platform, עוברים לכרטיסייה Instances בדף Workbench.

      כניסה לדף Agent Platform Workbench

    2. בוחרים את המופע של workbench-tutorial Agent Platform Workbench ולוחצים על Delete (מחיקה).

  4. כדי למחוק את המכונה הווירטואלית של Compute Engine:

    1. במסוף Google Cloud , נכנסים לדף Compute Engine.

      מעבר אל Compute Engine

    2. בוחרים את מכונת ה-VM on-prem-client ולוחצים על מחיקה.

  5. מוחקים את מנהרות ה-VPN באופן הבא:

    1. נכנסים לדף VPN במסוף Google Cloud .

      מעבר אל VPN

    2. בדף VPN, לוחצים על הכרטיסייה Cloud VPN Tunnels (מנהרות Cloud VPN).

    3. ברשימת מנהרות ה-VPN, בוחרים את ארבע מנהרות ה-VPN שיצרתם במדריך הזה ולוחצים על Delete.

  6. כדי למחוק את שערי ה-HA VPN:

    1. בדף VPN, לוחצים על הכרטיסייה Cloud VPN Gateways.

      מעבר אל Cloud VPN Gateways

    2. ברשימת שערי ה-VPN, לוחצים על onprem-vpn-gw1.

    3. בדף Cloud VPN gateway details (פרטי שער Cloud VPN), לוחצים על Delete VPN Gateway (מחיקת שער VPN).

    4. אם צריך, לוחצים על החץ 'חזרה' כדי לחזור לרשימת שערים של VPN, ואז לוחצים על vertex-networking-vpn-gw1.

    5. בדף Cloud VPN gateway details (פרטי שער Cloud VPN), לוחצים על Delete VPN Gateway (מחיקת שער VPN).

  7. כדי למחוק את Cloud Routers:

    1. עוברים לדף Cloud Routers.

      מעבר אל Cloud Routers

    2. ברשימת נתבי Cloud, בוחרים את ארבעת הנתבים שיצרתם במדריך הזה.

    3. כדי למחוק את הנתבים, לוחצים על מחיקה.

      הפעולה הזו תמחק גם את שני שערי Cloud NAT שמחוברים ל-Cloud Routers.

  8. כדי למחוק את כלל ההעברה vector-search-forwarding-rule של vertex-networking-vpcרשת ה-VPC, פועלים לפי השלבים הבאים:

    1. עוברים לכרטיסייה חזיתות בדף איזון עומסים.

      כניסה לדף Frontends

    2. ברשימת כללי ההעברה, לוחצים על vector-search-forwarding-rule.

    3. בדף פרטי כלל ההעברה, לוחצים על מחיקה.

  9. כדי למחוק את רשתות ה-VPC:

    1. עוברים לדף VPC networks.

      מעבר לרשתות VPC

    2. ברשימת רשתות ה-VPC, לוחצים על onprem-vpc.

    3. בדף VPC network details (פרטי רשת VPC), לוחצים על Delete VPC Network (מחיקת רשת VPC).

      אם תמחקו רשת, יימחקו גם רשתות המשנה, המסלולים וכללי חומת האש שלה.

    4. חוזרים לרשימת רשתות ה-VPC ולוחצים על vertex-networking-vpc.

    5. בדף VPC network details (פרטי רשת VPC), לוחצים על Delete VPC Network (מחיקת רשת VPC).

  10. כדי למחוק את קטגוריית האחסון:

    1. פותחים את הדף Cloud Storage במסוף Google Cloud .

      כניסה ל-Cloud Storage

    2. בוחרים את קטגוריית האחסון ולוחצים על מחיקה.

  11. כדי למחוק את חשבון השירות workbench-sa:

    1. עוברים לדף Service accounts.

      כניסה לדף Service accounts

    2. בוחרים את חשבון השירות workbench-sa ולוחצים על מחיקה.

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