Host lokal dapat menjangkau endpoint indeks Vector Search baik melalui internet publik atau secara pribadi melalui arsitektur jaringan hybrid yang menggunakan Private Service Connect melalui Cloud VPN atau Cloud Interconnect. Kedua opsi menawarkan enkripsi SSL/TLS. Namun, opsi pribadi menawarkan performa yang jauh lebih baik dan oleh karena itu direkomendasikan untuk aplikasi penting.
Dalam tutorial ini, Anda menggunakan VPN dengan Ketersediaan Tinggi (HA VPN) untuk mengakses endpoint indeks Vector Search secara pribadi, antara dua jaringan Virtual Private Cloud (VPC) yang dapat berfungsi sebagai dasar untuk konektivitas pribadi multi-cloud dan lokal.
Tutorial ini ditujukan bagi administrator jaringan, data scientist, dan peneliti perusahaan yang sudah memahami Vertex AI, Virtual Private Cloud, konsol Google Cloud , dan Cloud Shell. Pemahaman tentang Vector Search akan membantu, tetapi tidak wajib.
Tujuan
- Buat dua jaringan VPC, seperti yang ditunjukkan dalam diagram sebelumnya:
- Satu (
onprem-vpc
) mewakili jaringan lokal. - Endpoint lainnya (
vertex-networking-vpc
) adalah untuk endpoint indeks Vector Search.
- Satu (
- Deploy gateway VPN dengan ketersediaan tinggi (HA), tunnel Cloud VPN, dan
Cloud Router untuk menghubungkan
vertex-networking-vpc
danonprem-vpc
. - Buat dan deploy indeks Vector Search.
- Buat aturan penerusan Private Service Connect untuk meneruskan kueri ke endpoint indeks Vector Search.
- Konfigurasi rute kustom yang diberitahukan Cloud Router di
vertex-networking-vpc
untuk mengumumkan rute untuk endpoint indeks keonprem-vpc
. - Buat instance VM Compute Engine di
onprem-vpc
untuk merepresentasikan aplikasi klien yang mengirim permintaan ke endpoint indeks Vector Search melalui VPN dengan ketersediaan tinggi (HA).
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Buka Cloud Shell untuk menjalankan perintah yang tercantum dalam tutorial ini. Cloud Shell adalah lingkungan shell interaktif untuk Google Cloud yang dapat Anda gunakan untuk mengelola project dan resource dari browser web.
- Di Cloud Shell, tetapkan project saat ini ke
Google Cloud project ID Anda dan simpan project ID yang sama
ke dalam variabel shell
projectid
: Ganti PROJECT_ID dengan project ID Anda. Jika perlu, Anda dapat menemukan project ID di konsol Google Cloud . Untuk mengetahui informasi selengkapnya, lihat Menemukan project ID.projectid="PROJECT_ID" gcloud config set project ${projectid}
- Jika Anda bukan pemilik project, minta pemilik project untuk memberi Anda peran Project IAM Admin (roles/resourcemanager.projectIamAdmin). Anda harus memiliki peran ini untuk memberikan peran IAM pada langkah berikutnya.
-
Make sure that you have the following role or roles on the project: 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
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Buka IAM - Pilih project.
- Klik Grant access.
-
Di kolom New principals, masukkan ID pengguna Anda. Biasanya berupa alamat email untuk Akun Google.
- Di daftar Select a role, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
Enable the DNS, IAM, Compute Engine, Notebooks, and Vertex AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Membuat jaringan VPC
Di bagian ini, Anda akan membuat dua jaringan VPC: satu untuk membuat indeks Vector Search dan men-deploy-nya ke endpoint, dan yang lainnya untuk akses pribadi ke endpoint tersebut.
Buat jaringan VPC untuk endpoint indeks Vector Search (vertex-networking-vpc
)
Buat jaringan VPC untuk endpoint indeks:
gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
Buat subnet bernama
workbench-subnet
, dengan rentang IPv4 utama172.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
Buat subnet bernama
psc-forwarding-rule-subnet
, dengan rentang IPv4 utama172.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
Buat jaringan VPC untuk akses pribadi ke endpoint (onprem-vpc
)
Buat jaringan VPC untuk menyimulasikan jaringan lokal (
onprem-vpc
):gcloud compute networks create onprem-vpc \ --subnet-mode custom
Di jaringan
onprem-vpc
, buat subnet bernamaonprem-vpc-subnet1
, dengan rentang IPv4 utama172.16.10.0/29
:gcloud compute networks subnets create onprem-vpc-subnet1 \ --network onprem-vpc \ --range 172.16.10.0/29 \ --region us-central1
Pastikan jaringan VPC dikonfigurasi dengan benar
Di konsol Google Cloud , buka tab Networks in current project di halaman VPC networks.
Dalam daftar jaringan VPC, pastikan kedua jaringan telah dibuat:
vertex-networking-vpc
danonprem-vpc
.Klik tab Subnets in current project.
Dalam daftar subnet VPC, pastikan subnet
workbench-subnet
,psc-forwarding-rule-subnet
, danonprem-vpc-subnet1
telah dibuat.
Buat instance VM on-prem-client
Di bagian ini, Anda akan membuat instance VM untuk merepresentasikan aplikasi klien yang mengirim permintaan ke endpoint indeks Vector Search melalui HA VPN.
Di Cloud Shell, buat instance VM
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"
Mengonfigurasi konektivitas hybrid
Di bagian ini, Anda akan membuat dua gateway VPN dengan ketersediaan tinggi (HA) yang terhubung satu sama lain. Salah satunya berada di jaringan VPC
vertex-networking-vpc
. Yang lainnya berada di jaringan VPC onprem-vpc
.
Setiap gateway berisi
Cloud Router dan sepasang tunnel VPN.
Membuat gateway VPN dengan ketersediaan tinggi (HA)
Di Cloud Shell, buat gateway VPN dengan ketersediaan tinggi (HA) untuk jaringan VPC
vertex-networking-vpc
:gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
Buat gateway VPN dengan ketersediaan tinggi (HA) untuk jaringan VPC
onprem-vpc
VPC:gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1
Di konsol Google Cloud , buka tab Cloud VPN Gateways di halaman VPN.
Pastikan kedua gateway (
vertex-networking-vpn-gw1
danonprem-vpn-gw1
) telah dibuat dan masing-masing memiliki dua alamat IP antarmuka.
Buat Cloud Router dan gateway Cloud NAT
Di setiap dua jaringan VPC, Anda membuat dua Cloud Router: satu umum dan satu regional. Di setiap Cloud Router regional, Anda membuat gateway Cloud NAT. Gateway Cloud NAT menyediakan konektivitas keluar untuk instance virtual machine (VM) Compute Engine yang tidak memiliki alamat IP eksternal.
Di Cloud Shell, buat Cloud Router untuk jaringan VPC
vertex-networking-vpc
:gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001
Buat Cloud Router untuk jaringan VPC
onprem-vpc
:gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
Buat Cloud Router regional untuk jaringan VPC
vertex-networking-vpc
:gcloud compute routers create cloud-router-us-central1-vertex-nat \ --network vertex-networking-vpc \ --region us-central1
Konfigurasi gateway Cloud NAT di Cloud Router regional:
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
Buat Cloud Router regional untuk jaringan VPC
onprem-vpc
:gcloud compute routers create cloud-router-us-central1-onprem-nat \ --network onprem-vpc \ --region us-central1
Konfigurasi gateway Cloud NAT di Cloud Router regional:
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
Di konsol Google Cloud , buka halaman Cloud Router.
Di daftar Cloud Router, verifikasi bahwa router berikut telah dibuat:
cloud-router-us-central1-onprem-nat
cloud-router-us-central1-vertex-nat
onprem-vpc-router1
vertex-networking-vpc-router1
Anda mungkin perlu memuat ulang tab browser konsol untuk melihat nilai baru. Google Cloud
Di daftar Cloud Router, klik
cloud-router-us-central1-vertex-nat
.Di halaman Router details, pastikan
cloud-nat-us-central1
gateway Cloud NAT telah dibuat.Klik
panah kembali untuk kembali ke halaman Cloud Router.Dalam daftar router, klik
cloud-router-us-central1-onprem-nat
.Di halaman Router details, pastikan gateway Cloud NAT telah dibuat.
cloud-nat-us-central1-on-prem
Buat tunnel VPN
Di Cloud Shell, di jaringan
vertex-networking-vpc
, buat tunnel VPN bernamavertex-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
Di jaringan
vertex-networking-vpc
, buat tunnel VPN yang disebutvertex-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
Di jaringan
onprem-vpc
, buat tunnel VPN yang disebutonprem-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
Di jaringan
onprem-vpc
, buat tunnel VPN yang disebutonprem-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
Di konsol Google Cloud , buka halaman VPN.
Dalam daftar tunnel VPN, verifikasi bahwa empat tunnel VPN telah dibuat.
Membuat sesi BGP
Cloud Router menggunakan Border Gateway Protocol (BGP) untuk bertukar rute antara
jaringan VPC Anda (dalam hal ini, vertex-networking-vpc
)
dan jaringan lokal Anda (diwakili oleh onprem-vpc
). Di Cloud Router,
Anda mengonfigurasi antarmuka dan peer BGP untuk router lokal Anda.
Konfigurasi antarmuka dan peer BGP bersama-sama membentuk sesi BGP.
Di bagian ini, Anda akan membuat dua sesi BGP untuk vertex-networking-vpc
dan
dua sesi untuk onprem-vpc
.
Setelah Anda mengonfigurasi antarmuka dan peer BGP antara router, router akan otomatis mulai menukar rute.
Membuat sesi BGP untuk vertex-networking-vpc
Di Cloud Shell, di jaringan
vertex-networking-vpc
, buat antarmuka BGP untukvertex-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
Di jaringan
vertex-networking-vpc
, buat peer BGP untukbgp-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
Di jaringan
vertex-networking-vpc
, buat antarmuka BGP untukvertex-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
Di jaringan
vertex-networking-vpc
, buat peer BGP untukbgp-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
Membuat sesi BGP untuk onprem-vpc
Di jaringan
onprem-vpc
, buat antarmuka BGP untukonprem-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
Di jaringan
onprem-vpc
, buat peer BGP untukbgp-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
Di jaringan
onprem-vpc
, buat antarmuka BGP untukonprem-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
Di jaringan
onprem-vpc
, buat peer BGP untukbgp-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
Memvalidasi pembuatan sesi BGP
Di konsol Google Cloud , buka halaman VPN.
Dalam daftar tunnel VPN, pastikan nilai di kolom Status sesi BGP untuk setiap tunnel telah berubah dari Konfigurasi sesi BGP menjadi BGP dibuat. Anda mungkin perlu memuat ulang tab browser konsol untuk melihat nilai baru. Google Cloud
Memvalidasi rute yang dipelajari vertex-networking-vpc
Di Google Cloud konsol, buka halaman VPC networks.
Dalam daftar jaringan VPC, klik
vertex-networking-vpc
.Klik tab Routes.
Pilih us-central1 (Iowa) dalam daftar Region, lalu klik Lihat.
Di kolom Rentang IP tujuan, pastikan rentang IP subnet
onprem-vpc-subnet1
(172.16.10.0/29
) muncul dua kali.
Memvalidasi rute yang dipelajari on-prem-vpc
Klik
panah kembali untuk kembali ke halaman VPC networks.Dalam daftar jaringan VPC, klik
on-prem-vpc
.Klik tab Routes.
Pilih us-central1 (Iowa) dalam daftar Region, lalu klik Lihat.
Di kolom Destination IP range, pastikan rentang IP subnet
workbench-subnet
(172.16.20.0/28
) dan rentang IP subnetpsc-forwarding-rule-subnet
(172.16.30.0/28
) masing-masing muncul dua kali.
Membuat instance Vertex AI Workbench
Di bagian ini, Anda akan membuat akun layanan yang dikelola pengguna, lalu membuat instance Vertex AI Workbench yang menggunakan akun layanan Anda untuk mengakses Google Cloud layanan dan API.
Membuat akun layanan
Dalam tutorial ini, Anda akan membuat akun layanan yang dikelola pengguna dengan mengikuti praktik terbaik Compute Engine dan IAM.
Di Cloud Shell, buat akun layanan bernama
workbench-sa
:gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Tetapkan peran IAM Vertex AI User (
roles/aiplatform.user
) ke akun layanan:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid." \ --role="roles/aiplatform.user"
Tetapkan peran IAM Storage Admin (
roles/storage.admin
) ke akun layanan:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid." \ --role="roles/storage.admin"
Tetapkan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin
) ke akun layanan:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid." \ --role="roles/serviceusage.serviceUsageAdmin"
Buat instance Vertex AI Workbench
Buat instance Vertex AI Workbench,
dengan menentukan akun layanan 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.
Membuat dan men-deploy indeks Vector Search
Menyiapkan lingkungan Anda
Di konsol Google Cloud , buka tab Instances di halaman Vertex AI Workbench.
Di samping nama instance Vertex AI Workbench Anda (
workbench-tutorial
), klik Open JupyterLab.Instance Vertex AI Workbench akan membuka JupyterLab.
Pilih File > New > Notebook.
Dari menu Select Kernel, pilih Python 3 (Local), lalu klik Select.
Saat notebook baru Anda terbuka, ada sel kode default tempat Anda dapat memasukkan kode. Tampilannya seperti
[ ]:
diikuti dengan kolom teks. Kolom teks adalah tempat Anda menempelkan kode.Untuk menginstal Vertex AI SDK untuk Python, tempel kode berikut ke dalam sel dan klik
Jalankan sel yang dipilih dan lanjutkan:!pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
Pada langkah ini dan setiap langkah berikutnya, tambahkan sel kode baru (jika perlu) dengan mengklik
Insert a cell below, tempelkan kode ke dalam sel, lalu klik Run the selected cells and advance.Untuk menggunakan paket yang baru diinstal di runtime Jupyter ini, Anda harus memulai ulang runtime:
# Restart kernel after installs so that your environment can access the new packages import IPython app = IPython.Application.instance() app.kernel.do_shutdown(True)
Tetapkan variabel lingkungan berikut, dengan mengganti PROJECT_ID dengan project ID Anda.
# 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")
Mengaktifkan API
Di notebook Jupyterlab, jalankan perintah berikut untuk mengaktifkan API untuk Compute Engine, Vertex AI, dan Cloud Storage di notebook:
! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
--project {PROJECT_ID}
Siapkan data sampel di bucket Cloud Storage
Dalam tutorial ini, kita menggunakan set data TheLook yang sama dengan yang digunakan dalam panduan memulai Penelusuran Vektor. Lihat halaman dokumentasi panduan memulai untuk mengetahui informasi selengkapnya tentang set data ini.
Di bagian ini, Anda akan membuat bucket Cloud Storage dan menempatkan file embedding set data di dalamnya. Pada langkah selanjutnya, Anda akan menggunakan file ini untuk membuat indeks.
Di notebook Jupyterlab Anda, buat bucket Cloud Storage:
BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}" ! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_ID
Salin file contoh ke bucket Cloud Storage Anda.
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
Untuk menggunakan Vector Search dalam menjalankan kueri, Anda juga perlu menyalin file embedding ke direktori lokal:
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
Buat indeks Vector Search
Di notebook Jupyterlab, muat embedding ke Vector Search:
# init the aiplatform package from google.cloud import aiplatform aiplatform.init(project=PROJECT_ID, location=LOCATION)
Buat MatchingEngineIndex dengan fungsi
create_tree_ah_index
(Matching Engine adalah nama Vector Search sebelumnya):# 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, )
Metode
MatchingEngineIndex.create_tree_ah_index()
membangun indeks. Dalam tutorial ini, tugas ini membutuhkan waktu sekitar 5 hingga 10 menit.Di konsol Google Cloud , buka tab Indeks di halaman Vector Search.
Pastikan ada indeks yang namanya diawali dengan
"vs-quickstart-index-"
dan berisi stempel waktu yang benar.Catat ID indeks. Anda akan memerlukan ID ini saat men-deploy indeks pada langkah berikutnya.
Membuat endpoint indeks
Di Cloud Shell, jalankan perintah berikut, dengan mengganti PROJECT_ID dengan project ID Anda:
projectid=PROJECT_ID gcloud config set project ${projectid} SERVICE_PROJECT=${projectid} REGION=us-central1 VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com DISPLAY_NAME=vector-search
Buat endpoint indeks:
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'"] }}'
Pastikan endpoint indeks telah dibuat:
gcloud ai index-endpoints list --region=us-central1
Outputnya mirip dengan contoh berikut, dengan ID endpoint indeks adalah
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'
Catat ID endpoint indeks Anda. Anda akan memerlukan ID ini saat men-deploy indeks di langkah selanjutnya.
Men-deploy indeks ke endpoint
Di Cloud Shell, jalankan perintah berikut untuk men-deploy indeks ke endpoint:
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
Ganti nilai berikut:
- INDEX_ENDPOINT_ID: ID endpoint indeks untuk endpoint indeks Private Service Connect yang Anda buat
- INDEX: ID untuk indeks yang Anda deploy
Outputnya mirip dengan contoh berikut, dengan ID endpoint indeks adalah 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.
Operasi deployment memerlukan waktu sekitar 10 hingga 15 menit. Saat Anda men-deploy indeks, lampiran layanan akan dibuat.
Pastikan indeks di-deploy ke endpoint indeks
Di konsol Google Cloud , buka tab Index Endpoints di halaman Vector Search.
Verifikasi bahwa endpoint indeks
vector-search
memiliki indeks yang Di-deploy yang juga disebutvector-search
.Jika lingkaran biru berputar muncul di samping nama endpoint indeks, indeks masih dalam proses di-deploy.
Mendapatkan URI lampiran layanan untuk endpoint indeks
Setelah indeks di-deploy sepenuhnya, Anda dapat memperoleh URI lampiran layanan.
Di Cloud Shell, jalankan perintah berikut untuk mendapatkan URI lampiran layanan:
gcloud ai index-endpoints list --region=us-central1 | grep -i serviceAttachment:
Dalam contoh output berikut, URI lampiran layanan adalah
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
Catat URI serviceAttachment
, yang dimulai dengan projects
,
misalnya, projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
.
Anda akan membutuhkannya pada langkah berikutnya, saat membuat aturan penerusan.
Membuat aturan penerusan
Di Cloud Shell, cadangkan alamat IP untuk aturan penerusan yang akan digunakan untuk membuat kueri indeks Vector Search:
gcloud compute addresses create vector-search-forwarding-rule \ --region=us-central1 \ --subnet=psc-forwarding-rule-subnet
Temukan alamat IP yang dicadangkan:
gcloud compute addresses list --filter="name=vector-search-forwarding-rule"
Buat aturan penerusan untuk menghubungkan endpoint ke lampiran layanan, dengan mengganti SERVICE_ATTACHMENT_URI dengan URI
serviceAttachment
Anda.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
Berikut adalah contoh penggunaan perintah ini:
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
Di konsol Google Cloud , buka tab Connected endpoints di halaman Private Service Connect.
Validasi bahwa status
vector-search-forwarding-rule
adalahAccepted
.Catat alamat IP aturan penerusan Private Service Connect. Pada langkah selanjutnya, Anda akan menggunakan endpoint ini untuk menjalin komunikasi dengan indeks Vector Search yang di-deploy.
Membuat kueri indeks yang di-deploy
Setelah membuat aturan penerusan Private Service Connect yang terhubung ke endpoint indeks Vector Search, Anda dapat membuat kueri indeks yang di-deploy dengan mengirimkan kueri dari instance VM on-prem-client
ke aturan penerusan.
Untuk mengizinkan Identity-Aware Proxy (IAP) terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang ingin Anda buat dapat diakses melalui IAP.
- Mengizinkan traffic TCP melalui port 22 dari rentang IP
35.235.240.0/20
. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.
Setelah membuat firewall, Anda menginstal klien gRPC. Pada langkah
berikutnya, Anda akan menggunakan klien gRPC untuk mengirim kueri dari instance VM on-prem-client
.
Membuat aturan firewall dan menginstal gRPC
Di Cloud Shell, jalankan perintah berikut, ganti PROJECT_ID dengan project ID Anda:
projectid=PROJECT_ID gcloud config set project ${projectid}
Buat aturan firewall IAP bernama
ssh-iap-vpc
:gcloud compute firewall-rules create ssh-iap-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Login ke instance VM
on-prem-client
:gcloud compute ssh on-prem-client \ --project=$projectid \ --zone=us-central1-a \ --tunnel-through-iap
Di instance VM
on-prem-client
, instal kliengRPC
: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
Penginstalan memerlukan waktu sekitar 30 menit.
Mendapatkan ID untuk item indeks yang ada
Di konsol Google Cloud , buka tab Instances di halaman Vertex AI Workbench.
Di samping nama instance Vertex AI Workbench, klik Buka JupyterLab.
Instance Vertex AI Workbench akan membuka JupyterLab.
Pilih File > New > Terminal.
Di terminal JupyterLab (bukan Cloud Shell), lihat entri terakhir dalam indeks:
tail -1 product-embs.json
Cari pasangan nilai kunci pertama dalam item, yang berisi nomor ID item, seperti dalam contoh berikut:
"id":"27452"
Catat nomor ID ini. Anda akan memerlukannya untuk menjalankan kueri di bagian berikutnya.
Melakukan kueri Vector Search
Di instance VM on-prem-client
, kueri indeks yang di-deploy:
./grpc_cli call FORWARDING_RULE_IP:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"ITEM_ID"'"
Ganti nilai berikut:
- FORWARDING_RULE_IP: Alamat IP aturan penerusan Private Service Connect yang Anda buat di bagian sebelumnya
- ITEM_ID: nomor ID item yang Anda simpan di bagian sebelumnya
Outputnya mirip dengan hal berikut ini:
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
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Anda dapat menghapus setiap resource di konsol Google Cloud dengan cara berikut:
Batalkan deployment dan hapus indeks Vector Search sebagai berikut:
Di konsol Google Cloud , buka tab Indeks di halaman Vector Search.
Temukan indeks yang namanya dimulai dengan
"vs-quickstart-index-"
dan berisi stempel waktu yang benar.Klik nama indeks.
Di halaman Index info, di samping nama indeks dalam daftar Deployed indexes, klik
Actions, lalu klik Undeploy.Membatalkan deployment indeks memerlukan waktu beberapa menit. Jika lingkaran biru berputar muncul di samping nama indeks, atau jika status indeks tercantum sebagai
Undeploying
, indeks masih dalam proses pembatalan deployment. Anda mungkin perlu memuat ulang tab browser Google Cloud konsol untuk melihat bahwa indeks tidak lagi di-deploy.Klik panah kembali
untuk kembali ke tab Indeks.Di samping nama indeks Anda dalam daftar indeks, klik
Tindakan, lalu klik Hapus untuk menghapus indeks.
Hapus endpoint indeks sebagai berikut:
Di konsol Google Cloud , buka tab Index endpoints di halaman Vector Search.
Di samping nama endpoint di daftar endpoint indeks, klik
Tindakan, lalu klik Hapus untuk menghapus endpoint indeks.
Hapus instance Vertex AI Workbench sebagai berikut:
Di konsol Google Cloud , di bagian Vertex AI, buka tab Instances di halaman Workbench.
Pilih
workbench-tutorial
instance Vertex AI Workbench dan klik Hapus.
Hapus instance VM Compute Engine sebagai berikut:
Di konsol Google Cloud , buka halaman Compute Engine.
Pilih instance VM
on-prem-client
, lalu klik Hapus.
Hapus tunnel VPN sebagai berikut:
Di konsol Google Cloud , buka halaman VPN.
Di halaman VPN, klik tab Cloud VPN Tunnels.
Dalam daftar tunnel VPN, pilih empat tunnel VPN yang Anda buat dalam tutorial ini, lalu klik
Hapus.
Hapus gateway VPN dengan ketersediaan tinggi (HA) sebagai berikut:
Di halaman VPN, klik tab Cloud VPN Gateways.
Dalam daftar gateway VPN, klik
onprem-vpn-gw1
.Di halaman Detail gateway Cloud VPN, klik
Hapus Gateway VPN.Klik
panah kembali jika perlu untuk kembali ke daftar gateway VPN, lalu klikvertex-networking-vpn-gw1
.Di halaman Detail gateway Cloud VPN, klik
Hapus Gateway VPN.
Hapus Cloud Router sebagai berikut:
Buka halaman Cloud Router.
Dalam daftar Cloud Router, pilih empat router yang Anda buat dalam tutorial ini.
Untuk menghapus router, klik
Hapus.Tindakan ini juga akan menghapus dua gateway Cloud NAT yang terhubung ke Cloud Router.
Hapus aturan penerusan
vector-search-forwarding-rule
untuk jaringan VPCvertex-networking-vpc
sebagai berikut:Buka tab Frontend di halaman Load balancing.
Dalam daftar aturan penerusan, klik
vector-search-forwarding-rule
.Di halaman Forwarding rule details, klik
Delete.
Hapus jaringan VPC sebagai berikut:
Buka halaman VPC networks.
Dalam daftar jaringan VPC, klik
onprem-vpc
.Di halaman VPC network details, klik
Delete VPC Network.Menghapus setiap jaringan juga akan menghapus subnetwork, rute, dan aturan firewall-nya.
Kembali ke daftar jaringan VPC, lalu klik
vertex-networking-vpc
.Di halaman VPC network details, klik
Delete VPC Network.
Hapus bucket penyimpanan sebagai berikut:
Di Google Cloud konsol, buka halaman Cloud Storage.
Pilih bucket penyimpanan Anda, lalu klik
Hapus.
Hapus akun layanan
workbench-sa
sebagai berikut:Buka halaman Akun layanan.
Pilih akun layanan
workbench-sa
, lalu klik Hapus.
Langkah berikutnya
- Pelajari opsi jaringan perusahaan untuk mengakses endpoint dan layanan Vertex AI
- Pelajari cara kerja Private Service Connect dan alasan Private Service Connect menawarkan manfaat performa yang signifikan.
- Pelajari cara menggunakan Kontrol Layanan VPC untuk membuat perimeter yang aman guna mengizinkan atau menolak akses ke Vertex AI dan Google API lainnya di endpoint indeks Vector Search melalui internet publik.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.