מארחים מקומיים יכולים להגיע לנקודת קצה של אינדקס חיפוש וקטורי דרך האינטרנט הציבורי או באופן פרטי דרך ארכיטקטורת רשת היברידית שמשתמשת ב-Private Service Connect דרך Cloud VPN או Cloud Interconnect. שתי האפשרויות מציעות הצפנת SSL/TLS. עם זאת, האפשרות הפרטית מציעה ביצועים טובים בהרבה, ולכן מומלצת לאפליקציות קריטיות.
במדריך הזה משתמשים ב-HA VPN (רשת וירטואלית פרטית בזמינות גבוהה) כדי לגשת באופן פרטי לנקודת קצה של אינדקס חיפוש וקטורי, בין שתי רשתות ענן וירטואלי פרטי (VPC) שיכולות לשמש כבסיס לקישוריות פרטית בין סביבות מרובות עננים (multi-cloud) ובין סביבות מקומיות.
המדריך הזה מיועד לאדמינים של רשתות ארגוניות, למדעני נתונים ולחוקרים שמכירים את Gemini Enterprise Agent Platform, את ענן וירטואלי פרטי (VPC), את Google Cloud המסוף ואת Cloud Shell. היכרות עם חיפוש וקטורי יכולה לעזור, אבל היא לא חובה.

מטרות
- יוצרים שתי רשתות VPC, כמו שמוצג בתרשים הקודם:
- הערך 1 (
onprem-vpc) מייצג רשת מקומית. - השני (
vertex-networking-vpc) הוא נקודת הקצה של אינדקס חיפוש וקטורי.
- הערך 1 (
- פריסת שערי 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, והשימוש בהם כרוך בתשלום:
- Cloud NAT
- Cloud Storage
- Cloud VPN
- Compute Engine
- Gemini Enterprise Agent Platform
- Virtual Private Cloud
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
-
נכנסים לדף לבחירת הפרויקט במסוף Google Cloud .
-
בוחרים או יוצרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
- פותחים את Cloud Shell כדי להריץ את הפקודות שמפורטות במדריך הזה. Cloud Shell היא סביבת מעטפת אינטראקטיבית של Google Cloud שמאפשרת לכם לנהל את הפרויקטים והמשאבים שלכם מדפדפן האינטרנט.
- ב-Cloud Shell, מגדירים את הפרויקט הנוכחי למזהה הפרויקט Google Cloud ומאחסנים את אותו מזהה פרויקט במשתנה shell
projectid: מחליפים את PROJECT_ID במזהה הפרויקט. במקרה הצורך, אפשר לאתר את מזהה הפרויקט במסוף Google Cloud . מידע נוסף זמין במאמר איך מאתרים את מזהה הפרויקט.projectid="PROJECT_ID" gcloud config set project ${projectid} - אם אתם לא הבעלים של הפרויקט, אתם צריכים לבקש מבעלי הפרויקט להקצות לכם את התפקיד Project IAM Admin (אדמין IAM של הפרויקט) (roles/resourcemanager.projectIamAdmin). כדי להקצות תפקידי IAM בשלב הבא, צריך להיות לכם התפקיד הזה.
-
מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-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.projectIamAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
USER_IDENTIFIER: המזהה של חשבון המשתמש . לדוגמה,myemail@example.com. -
ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.
-
מפעילים את ממשקי ה-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)
יוצרים את רשת ה-VPC לנקודת הקצה של האינדקס:
gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode customיוצרים תת-רשת בשם
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יוצרים תת-רשת בשם
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)
יוצרים את רשת ה-VPC כדי לדמות את הרשת המקומית (
onprem-vpc):gcloud compute networks create onprem-vpc \ --subnet-mode customברשת
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 נכונות
במסוף Google Cloud , עוברים לכרטיסייה Networks in current project בדף VPC networks.
ברשימת רשתות ה-VPC, מוודאים ששתי הרשתות נוצרו:
vertex-networking-vpcו-onprem-vpc.לוחצים על הכרטיסייה Subnets in current project (רשתות משנה בפרויקט הנוכחי).
ברשימת תת-הרשתות של ה-VPC, מוודאים שתת-הרשתות
workbench-subnet,psc-forwarding-rule-subnetו-onprem-vpc-subnet1נוצרו.
יצירת מכונת VM on-prem-client
בקטע הזה יוצרים מכונת VM שמייצגת אפליקציית לקוח ששולחת בקשות לנקודת הקצה של אינדקס החיפוש הווקטורי דרך HA VPN.
ב-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
יוצרים ב-Cloud Shell שער HA VPN לרשת
vertex-networking-vpcVPC:gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1יוצרים את שער HA VPN לרשת ה-VPC
onprem-vpc:gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1במסוף Google Cloud , עוברים לכרטיסייה Cloud VPN Gateways בדף VPN.
מוודאים ששני השערים (
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 חיצוניות.
יוצרים 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יוצרים Cloud Router לרשת ה-VPC
onprem-vpc:gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002יוצרים Cloud Router אזורי לרשת ה-VPC
vertex-networking-vpc:gcloud compute routers create cloud-router-us-central1-vertex-nat \ --network vertex-networking-vpc \ --region us-central1מגדירים שער 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יוצרים Cloud Router אזורי לרשת ה-VPC
onprem-vpc:gcloud compute routers create cloud-router-us-central1-onprem-nat \ --network onprem-vpc \ --region us-central1מגדירים שער 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נכנסים לדף Cloud Routers במסוף Google Cloud .
ברשימה Cloud Routers, מוודאים שהנתבים הבאים נוצרו:
cloud-router-us-central1-onprem-natcloud-router-us-central1-vertex-natonprem-vpc-router1vertex-networking-vpc-router1
יכול להיות שתצטרכו לרענן את הכרטיסייה בדפדפן של Google Cloud המסוף כדי לראות את הערכים החדשים.
ברשימת נתבי Cloud, לוחצים על
cloud-router-us-central1-vertex-nat.בדף פרטי הנתב, מוודאים ששער
cloud-nat-us-central1Cloud NAT נוצר.לוחצים על החץ חזרה כדי לחזור לדף Cloud Routers.
ברשימת הנתבים, לוחצים על
cloud-router-us-central1-onprem-nat.בדף Router details (פרטי הנתב), מוודאים שנוצר שער
cloud-nat-us-central1-on-premCloud NAT.
יצירת מנהרות VPN
ב-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ברשת
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ברשת
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ברשת
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נכנסים לדף VPN במסוף Google Cloud .
ברשימת מנהרות ה-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
ב-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ברשת
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ברשת
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ברשת
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
ברשת
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ברשת
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ברשת
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ברשת
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
נכנסים לדף VPN במסוף Google Cloud .
ברשימת מנהרות ה-VPN, מוודאים שהערך בעמודה BGP session status עבור כל אחת מהמנהרות השתנה מ-Configure BGP session ל-BGP established. יכול להיות שתצטרכו לרענן את כרטיסיית הדפדפן של מסוף Google Cloud כדי לראות את הערכים החדשים.
אימות של המסלולים שנלמדו vertex-networking-vpc
נכנסים לדף VPC networks במסוף Google Cloud .
ברשימת רשתות ה-VPC, לוחצים על
vertex-networking-vpc.לוחצים על הכרטיסייה מסלולים.
בוחרים באפשרות us-central1 (Iowa) ברשימה Region ולוחצים על View.
בעמודה Destination IP range (טווח כתובות ה-IP של היעד), מוודאים ש
onprem-vpc-subnet1טווח כתובות ה-IP של תת-הרשת (172.16.10.0/29) מופיע פעמיים.
אימות של המסלולים שנלמדו on-prem-vpc
לוחצים על החץ 'חזרה' כדי לחזור לדף רשתות VPC.
ברשימת רשתות ה-VPC, לוחצים על
on-prem-vpc.לוחצים על הכרטיסייה מסלולים.
בוחרים באפשרות us-central1 (Iowa) ברשימה Region ולוחצים על View.
בעמודה 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.
ב-Cloud Shell, יוצרים חשבון שירות בשם
workbench-sa:gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"מקצים לחשבון השירות את התפקיד משתמש ב-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"מקצים לחשבון השירות את התפקיד אדמין אחסון (
roles/storage.admin) ב-IAM:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/storage.admin"מקצים לחשבון השירות את תפקיד ה-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
יצירה ופריסה של אינדקס חיפוש וקטורי
הכנת הסביבה
במסוף Google Cloud , עוברים לכרטיסייה Instances בדף Agent Platform Workbench.
לצד השם של מופע Agent Platform Workbench (
workbench-tutorial), לוחצים על Open JupyterLab.המופע של Agent Platform Workbench ייפתח ב-JupyterLab.
בוחרים באפשרות קובץ > חדש > מחברת.
בתפריט Select Kernel (בחירת ליבה), בוחרים באפשרות Python 3 (Local) (פייתון 3 (מקומי)) ולוחצים על Select (בחירה).
כשפותחים את ה-Notebook החדש, יש תא קוד שמוגדר כברירת מחדל שאפשר להזין בו קוד. הוא נראה כמו
[ ]:ואחריו שדה טקסט. בשדה הטקסט מדביקים את הקוד.כדי להתקין את Agent Platform SDK for Python, מדביקים את הקוד הבא בתא ולוחצים על Run the selected cells and advance (הפעלת התאים שנבחרו ומעבר לתא הבא):
!pip install --upgrade --user google-cloud-aiplatform google-cloud-storageבשלב הזה ובכל אחד מהשלבים הבאים, מוסיפים תא קוד חדש (אם צריך) על ידי לחיצה על הוספה של תא מתחת, מדביקים את הקוד בתא ואז לוחצים על הפעלת התאים שנבחרו ומעבר.
כדי להשתמש בחבילות החדשות שהותקנו בסביבת זמן הריצה הזו של 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)מגדירים את משתני הסביבה הבאים ומחליפים את 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 וממקמים בה את קובץ ההטמעה של מערך הנתונים. בשלב מאוחר יותר, משתמשים בקובץ הזה כדי ליצור אינדקס.
בנוטבוק של Jupyterlab, יוצרים קטגוריה של Cloud Storage:
BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}" ! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_IDמעתיקים את קובץ הדוגמה לקטגוריה של Cloud Storage.
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URIכדי להשתמש בחיפוש וקטורי להרצת שאילתות, צריך גם להעתיק את קובץ ההטמעה לספרייה מקומית:
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
יצירת אינדקס החיפוש בחיפוש וקטורי
במחברת Jupyterlab, טוענים את ההטבעות לחיפוש וקטורי:
# init the aiplatform package from google.cloud import aiplatform aiplatform.init(project=PROJECT_ID, location=LOCATION)יוצרים 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 דקות.במסוף Google Cloud , עוברים לכרטיסייה Indexes בדף חיפוש וקטורי.
מוודאים שיש אינדקס שהשם שלו מתחיל ב-
"vs-quickstart-index-"ומכיל את חותמת הזמן הנכונה.רושמים את מזהה האינדקס. תצטרכו את המזהה הזה בשלב מאוחר יותר כשפורסים את האינדקס.
יצירת נקודת הקצה של האינדקס
ב-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יוצרים את נקודת הקצה של האינדקס:
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'"] }}'מוודאים שנקודת הקצה של האינדקס נוצרה:
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'רושמים את מזהה נקודת הקצה של האינדקס. תצטרכו את המזהה הזה בשלב מאוחר יותר כשפריסתם את האינדקס.
פריסת האינדקס בנקודת הקצה
ב-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 דקות. כשפורסים את האינדקס, נוצר צירוף שירות.
בדיקה שהאינדקס נפרס לנקודת הקצה של האינדקס
במסוף Google Cloud , עוברים לכרטיסייה Index Endpoints בדף חיפוש וקטורי.
מוודאים שלנקודת הקצה של האינדקס
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.
תצטרכו אותו בשלב הבא, כשתיצרו כלל העברה.
יצירת כלל העברה
ב-Cloud Shell, שומרים כתובת IP לכלל ההעברה כדי להשתמש בה לשאילתות באינדקס החיפוש של חיפוש וקטורי:
gcloud compute addresses create vector-search-forwarding-rule \ --region=us-central1 \ --subnet=psc-forwarding-rule-subnetמאתרים את כתובת ה-IP השמורה:
gcloud compute addresses list --filter="name=vector-search-forwarding-rule"יוצרים כלל העברה כדי לחבר את נקודת הקצה ל-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במסוף Google Cloud , עוברים לכרטיסייה Connected endpoints בדף Private Service Connect.
מוודאים שהסטטוס של
vector-search-forwarding-ruleהואAccepted.חשוב לשים לב לכתובת ה-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
ב-Cloud Shell, מריצים את הפקודות הבאות ומחליפים את PROJECT_ID במזהה הפרויקט:
projectid=PROJECT_ID gcloud config set project ${projectid}יוצרים כלל לחומת האש של 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מתחברים למכונת ה-
on-prem-clientVM:gcloud compute ssh on-prem-client \ --project=$projectid \ --zone=us-central1-a \ --tunnel-through-iapבמכונה הווירטואלית
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 דקות.
קבלת מזהה של פריט קיים באינדקס
במסוף Google Cloud , עוברים לכרטיסייה Instances בדף Agent Platform Workbench.
לצד השם של מופע Agent Platform Workbench, לוחצים על Open JupyterLab.
המופע של Agent Platform Workbench ייפתח ב-JupyterLab.
בוחרים באפשרות קובץ > חדש > מסוף.
בטרמינל של JupyterLab (לא ב-Cloud Shell), מציגים את הרשומה האחרונה באינדקס:
tail -1 product-embs.jsonמחפשים את צמד המפתח/ערך הראשון בפריט, שמכיל את מספר המזהה של הפריט, כמו בדוגמה הבאה:
"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 :
כדי לבטל את הפריסה ולמחוק את האינדקס ב-Vector Search:
במסוף Google Cloud , עוברים לכרטיסייה Indexes בדף חיפוש וקטורי.
מאתרים את האינדקס שהשם שלו מתחיל ב-
"vs-quickstart-index-"ומכיל את חותמת הזמן הנכונה.לוחצים על שם האינדקס.
בדף Index info (פרטי האינדקס), ליד שם האינדקס ברשימה Deployed indexes (אינדקסים שנפרסו), לוחצים על Actions (פעולות) ואז על Undeploy (ביטול הפריסה).
ביטול הפריסה של האינדקס נמשך כמה דקות. אם מופיע עיגול כחול מסתובב לצד שם האינדקס, או אם סטטוס האינדקס הוא
Undeploying, האינדקס עדיין בתהליך של ביטול הפריסה. יכול להיות שתצטרכו לרענן את הכרטיסייה בדפדפן של Google Cloud המסוף כדי לראות שהאינדקס כבר לא בפריסה.לוחצים על החץ 'חזרה' כדי לחזור לכרטיסייה Indexes.
לצד השם של האינדקס ברשימת האינדקסים, לוחצים על פעולות ואז על מחיקה כדי למחוק את האינדקס.
כדי למחוק את נקודת הקצה של האינדקס:
במסוף Google Cloud , עוברים לכרטיסייה Index endpoints בדף חיפוש וקטורי.
לצד שם נקודת הקצה של האינדקס ברשימת נקודות הקצה של האינדקס, לוחצים על פעולות ואז על מחיקה כדי למחוק את נקודת הקצה של האינדקס.
כדי למחוק את המופע של Agent Platform Workbench:
במסוף Google Cloud , בקטע Gemini Enterprise Agent Platform, עוברים לכרטיסייה Instances בדף Workbench.
בוחרים את המופע של
workbench-tutorialAgent Platform Workbench ולוחצים על Delete (מחיקה).
כדי למחוק את המכונה הווירטואלית של Compute Engine:
במסוף Google Cloud , נכנסים לדף Compute Engine.
בוחרים את מכונת ה-VM
on-prem-clientולוחצים על מחיקה.
מוחקים את מנהרות ה-VPN באופן הבא:
נכנסים לדף VPN במסוף Google Cloud .
בדף VPN, לוחצים על הכרטיסייה Cloud VPN Tunnels (מנהרות Cloud VPN).
ברשימת מנהרות ה-VPN, בוחרים את ארבע מנהרות ה-VPN שיצרתם במדריך הזה ולוחצים על Delete.
כדי למחוק את שערי ה-HA VPN:
בדף VPN, לוחצים על הכרטיסייה Cloud VPN Gateways.
ברשימת שערי ה-VPN, לוחצים על
onprem-vpn-gw1.בדף Cloud VPN gateway details (פרטי שער Cloud VPN), לוחצים על Delete VPN Gateway (מחיקת שער VPN).
אם צריך, לוחצים על החץ 'חזרה' כדי לחזור לרשימת שערים של VPN, ואז לוחצים על
vertex-networking-vpn-gw1.בדף Cloud VPN gateway details (פרטי שער Cloud VPN), לוחצים על Delete VPN Gateway (מחיקת שער VPN).
כדי למחוק את Cloud Routers:
עוברים לדף Cloud Routers.
ברשימת נתבי Cloud, בוחרים את ארבעת הנתבים שיצרתם במדריך הזה.
כדי למחוק את הנתבים, לוחצים על מחיקה.
הפעולה הזו תמחק גם את שני שערי Cloud NAT שמחוברים ל-Cloud Routers.
כדי למחוק את כלל ההעברה
vector-search-forwarding-ruleשלvertex-networking-vpcרשת ה-VPC, פועלים לפי השלבים הבאים:עוברים לכרטיסייה חזיתות בדף איזון עומסים.
ברשימת כללי ההעברה, לוחצים על
vector-search-forwarding-rule.בדף פרטי כלל ההעברה, לוחצים על מחיקה.
כדי למחוק את רשתות ה-VPC:
עוברים לדף VPC networks.
ברשימת רשתות ה-VPC, לוחצים על
onprem-vpc.בדף VPC network details (פרטי רשת VPC), לוחצים על Delete VPC Network (מחיקת רשת VPC).
אם תמחקו רשת, יימחקו גם רשתות המשנה, המסלולים וכללי חומת האש שלה.
חוזרים לרשימת רשתות ה-VPC ולוחצים על
vertex-networking-vpc.בדף VPC network details (פרטי רשת VPC), לוחצים על Delete VPC Network (מחיקת רשת VPC).
כדי למחוק את קטגוריית האחסון:
פותחים את הדף Cloud Storage במסוף Google Cloud .
בוחרים את קטגוריית האחסון ולוחצים על מחיקה.
כדי למחוק את חשבון השירות
workbench-sa:עוברים לדף Service accounts.
בוחרים את חשבון השירות
workbench-saולוחצים על מחיקה.
המאמרים הבאים
- מידע על אפשרויות רשת לארגונים לגישה לנקודות קצה ולשירותים של Gemini Enterprise Agent Platform
- איך Private Service Connect עובד ולמה הוא מציע יתרונות משמעותיים בביצועים.
- כך משתמשים ב-VPC Service Controls כדי ליצור גבולות גזרה מאובטחים כדי לאפשר או לחסום גישה ל-Gemini Enterprise Agent Platform ול-Google APIs אחרים בנקודת הקצה של אינדקס חיפוש וקטורי דרך האינטרנט הציבורי.
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.