Gunakan Private Service Connect untuk mengakses indeks Vector Search dari infrastruktur lokal


Host lokal dapat menjangkau endpoint indeks Vector Search baik melalui internet publik maupun secara pribadi melalui arsitektur jaringan hybrid yang menggunakan Private Service Connect (PSC) melalui Cloud VPN atau Cloud Interconnect. Kedua opsi tersebut menawarkan enkripsi SSL/TLS. Namun, opsi pribadi menawarkan performa yang jauh lebih baik, sehingga direkomendasikan untuk aplikasi penting.

Dalam tutorial ini, Anda menggunakan VPN Ketersediaan Tinggi (HA VPN) untuk mengakses endpoint indeks Vector Search secara pribadi, antara dua jaringan Virtual Private Cloud (VPC) yang dapat berfungsi sebagai basis untuk konektivitas pribadi multi-cloud dan lokal.

Tutorial ini ditujukan bagi administrator jaringan perusahaan, ilmuwan data, dan peneliti yang sudah memahami Vertex AI, Virtual Private Cloud, konsol Google Cloud, dan Cloud Shell. Pemahaman tentang Penelusuran Vektor akan membantu, tetapi tidak diperlukan.

Diagram arsitektur penggunaan Private Service Connect untuk mengakses indeks Vector Search dari infrastruktur lokal.

Tujuan

  • Buat dua jaringan VPC, seperti yang ditunjukkan dalam diagram sebelumnya:
    • Satu (onprem-vpc) mewakili jaringan lokal.
    • Satunya lagi (vertex-networking-vpc) adalah untuk endpoint indeks Vector Search.
  • Deploy gateway VPN dengan ketersediaan tinggi (HA), tunnel Cloud VPN, dan Cloud Router untuk menghubungkan vertex-networking-vpc dan onprem-vpc.
  • Bangun dan deploy indeks Vector Search.
  • Buat endpoint Private Service Connect (PSC) untuk meneruskan kueri ke endpoint indeks Vector Search.
  • Konfigurasi iklan rute kustom Cloud Router di vertex-networking-vpc untuk mengumumkan rute untuk endpoint Private Service Connect ke onprem-vpc.
  • Buat instance VM Compute Engine di onprem-vpc untuk mewakili aplikasi klien yang mengirimkan permintaan ke endpoint indeks Vector Search melalui VPN dengan ketersediaan tinggi (HA).

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

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

  1. Di konsol Google Cloud, buka halaman Pemilih project.

    Buka pemilih project

  2. Pilih atau buat project Google Cloud.

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. 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.
  5. Di Cloud Shell, tetapkan project saat ini ke project ID Google Cloud Anda dan simpan project ID yang sama ke dalam variabel shell projectid:
      projectid="PROJECT_ID"
      gcloud config set project ${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 Anda.
  6. 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.
  7. Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut: 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:EMAIL_ADDRESS" --role=ROLE
    • Ganti PROJECT_ID dengan project ID Anda.
    • Ganti EMAIL_ADDRESS dengan alamat email Anda.
    • Ganti ROLE dengan setiap peran individual.
  8. Enable the DNS, IAM, Compute Engine, Notebooks, and Vertex AI APIs:

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

Membuat jaringan VPC

Di bagian ini, Anda akan membuat dua jaringan VPC: satu untuk membuat indeks Penelusuran Vektor dan men-deploy-nya ke endpoint, satunya lagi untuk mengakses pribadi ke endpoint tersebut.

Membuat jaringan VPC untuk endpoint indeks Vector Search (vertex-networking-vpc)

  1. Buat jaringan VPC untuk endpoint indeks:

    gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
    
  2. Buat subnet bernama workbench-subnet, dengan rentang IPv4 utama 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. Buat subnet bernama consumer-endpoint-subnet, dengan rentang IPv4 utama 172.16.30.0/28:

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

Membuat jaringan VPC untuk akses pribadi ke endpoint (onprem-vpc)

  1. Buat jaringan VPC untuk menyimulasikan jaringan lokal (onprem-vpc):

    gcloud compute networks create onprem-vpc \
      --subnet-mode custom
    
  2. Di jaringan onprem-vpc, buat subnet bernama onprem-vpc-subnet1, dengan rentang IPv4 utama 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
    

Memastikan bahwa jaringan VPC dikonfigurasi dengan benar

  1. Di Konsol Google Cloud, buka tab Networks in current project di halaman VPC networks.

    Buka VPC networks

  2. Dalam daftar jaringan VPC, pastikan kedua jaringan telah dibuat: vertex-networking-vpc dan onprem-vpc.

  3. Klik tab Subnets in current project.

  4. Dalam daftar subnet VPC, pastikan bahwa subnet workbench-subnet, consumer-endpoint-subnet, dan onprem-vpc-subnet1 telah dibuat.

Membuat 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 VPN dengan ketersediaan tinggi (HA).

  1. 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=http://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. Satunya lagi berada di jaringan VPC onprem-vpc. Setiap gateway berisi Cloud Router dan sepasang tunnel VPN.

Membuat gateway VPN dengan ketersediaan tinggi (HA)

  1. 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
    
  2. Buat gateway VPN dengan ketersediaan tinggi (HA) untuk jaringan VPC onprem-vpc:

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. Di konsol Google Cloud, buka tab Cloud VPN Gateways di halaman VPN.

    Buka VPN

  4. Pastikan dua gateway (vertex-networking-vpn-gw1 dan onprem-vpn-gw1) telah dibuat dan masing-masing memiliki dua alamat IP antarmuka.

Membuat Cloud Router dan gateway Cloud NAT

Di masing-masing 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.

  1. 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
    
  2. Buat Cloud Router untuk jaringan VPC onprem-vpc:

    gcloud compute routers create onprem-vpc-router1 \
       --region us-central1\
       --network onprem-vpc\
       --asn 65002
    
  3. 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
    
  4. Konfigurasikan 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
    
  5. 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
    
  6. Konfigurasikan 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
    
  7. Di konsol Google Cloud, buka halaman Cloud Router.

    Buka Cloud Router

  8. Dalam daftar Cloud Routers, pastikan 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 Google Cloud untuk melihat nilai baru ini.

  9. Dalam daftar Cloud Router, klik cloud-router-us-central1-vertex-nat.

  10. Di halaman Router details, pastikan cloud-nat-us-central1 gateway Cloud NAT telah dibuat.

  11. Klik panah kembali untuk kembali ke halaman Cloud Routers.

  12. Dalam daftar router, klik cloud-router-us-central1-onprem-nat.

  13. Di halaman Router details, pastikan gateway Cloud NAT cloud-nat-us-central1-on-prem telah dibuat.

Buat tunnel VPN

  1. Di Cloud Shell, pada jaringan vertex-networking-vpc, buat tunnel VPN bernama 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. Di jaringan vertex-networking-vpc, buat tunnel VPN bernama 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. Di jaringan onprem-vpc, buat tunnel VPN bernama 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. Di jaringan onprem-vpc, buat tunnel VPN bernama 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. Di Konsol Google Cloud, buka halaman VPN.

    Buka VPN

  6. Dalam daftar tunnel VPN, pastikan keempat tunnel VPN telah dibuat.

Membuat sesi BGP

Cloud Router menggunakan Border Gateway Protocol (BGP) untuk menukar 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. Antarmuka dan konfigurasi peer BGP secara bersama-sama membentuk sesi BGP. Di bagian ini, Anda akan membuat dua sesi BGP untuk vertex-networking-vpc dan dua untuk onprem-vpc.

Setelah Anda mengonfigurasi antarmuka dan peer BGP antara router, keduanya akan otomatis mulai bertukar rute.

Menetapkan sesi BGP untuk vertex-networking-vpc

  1. Di Cloud Shell, pada jaringan vertex-networking-vpc, buat antarmuka BII untuk 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. Pada jaringan vertex-networking-vpc, buat peer BGP untuk 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. Di jaringan vertex-networking-vpc, buat antarmuka BGP untuk 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. Pada jaringan vertex-networking-vpc, buat peer BGP untuk 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
    

Menetapkan sesi BGP untuk onprem-vpc

  1. Di jaringan onprem-vpc, buat antarmuka BGP untuk 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. Pada jaringan onprem-vpc, buat peer BGP untuk 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. Di jaringan onprem-vpc, buat antarmuka BGP untuk 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. Pada jaringan onprem-vpc, buat peer BGP untuk 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
    

Memvalidasi pembuatan sesi BGP

  1. Di Konsol Google Cloud, buka halaman VPN.

    Buka VPN

  2. Dalam daftar tunnel VPN, pastikan nilai di kolom status sesi BGP untuk setiap tunnel telah berubah dari Konfigurasi sesi BGP menjadi BGP yang ditetapkan. Anda mungkin perlu memuat ulang tab browser Konsol Google Cloud untuk melihat nilai baru.

Validasi rute yang dipelajari vertex-networking-vpc

  1. Di Konsol Google Cloud, buka halaman jaringan VPC.

    Buka VPC networks

  2. Dalam daftar jaringan VPC, klik vertex-networking-vpc.

  3. Klik tab Routes.

  4. Pilih us-central1 (Iowa) di daftar Region lalu klik View.

  5. Di kolom Destination IP range, pastikan rentang IP subnet onprem-vpc-subnet1 (172.16.10.0/29) muncul dua kali.

Validasi rute yang dipelajari on-prem-vpc

  1. Klik panah kembali untuk kembali ke halaman VPC networks.

  2. Dalam daftar jaringan VPC, klik on-prem-vpc.

  3. Klik tab Routes.

  4. Pilih us-central1 (Iowa) di daftar Region lalu klik View.

  5. Di kolom Destination IP range, pastikan rentang IP subnet workbench-subnet (172.16.20.0/28) dan rentang IP subnet consumer-endpoint-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 layanan dan API Google Cloud.

Membuat akun layanan

Dalam tutorial ini, Anda akan membuat akun layanan yang dikelola pengguna dengan mengikuti praktik terbaik Compute Engine dan IAM.

  1. Di Cloud Shell, buat akun layanan bernama workbench-sa:

    gcloud iam service-accounts create workbench-sa \
       --display-name="workbench-sa"
    
  2. Tetapkan peran IAM Vertex AI User (roles/aiplatform.user) ke akun layanan:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/aiplatform.user"
    
  3. Tetapkan peran IAM Storage Admin (roles/storage.admin) ke akun layanan:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/storage.admin"
    
  4. Tetapkan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin) ke akun layanan:

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

Membuat 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.iam.gserviceaccount.com

Membuat dan men-deploy indeks Vector Search

Menyiapkan lingkungan Anda

  1. Di Konsol Google Cloud, buka tab Instances di halaman Vertex AI Workbench.

    Buka Vertex AI Workbench

  2. Di samping nama instance Vertex AI Workbench (workbench-tutorial), klik Open JupyterLab.

    Instance Vertex AI Workbench akan membuka JupyterLab.

  3. Pilih File > New > Notebook.

  4. Dari menu Select Kernel, pilih Python 3 (Local), lalu klik Select.

  5. Saat notebook baru terbuka, akan ada sel kode default tempat Anda dapat memasukkan kode. Tampilannya terlihat seperti [ ]: diikuti dengan kolom teks. Kolom teks adalah tempat Anda menempelkan kode.

    Untuk menginstal Vertex AI SDK untuk Python, tempelkan kode berikut ke dalam sel, lalu klik  Jalankan sel yang dipilih dan lanjutkan:

    !pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
    
  6. Pada langkah ini dan setiap langkah berikutnya, tambahkan sel kode baru (jika perlu) dengan mengklik Insert a cell below, tempel kode ke dalam sel, lalu klik  Jalankan sel yang dipilih dan lanjutkan.

    Untuk menggunakan paket yang baru diinstal dalam runtime Jupyter ini, Anda perlu 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)
    
  7. 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 guna 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}

Menyiapkan data sampel di bucket Cloud Storage

Dalam tutorial ini, kami menggunakan set data TheLook yang sama dengan yang digunakan dalam panduan memulai Vector Search. Lihat halaman dokumentasi panduan memulai untuk mendapatkan informasi lebih lanjut tentang set data ini.

Di bagian ini, Anda akan membuat bucket Cloud Storage dan menempatkan file penyematan set data ke dalamnya. Pada langkah berikutnya, Anda akan menggunakan file ini untuk membangun indeks.

  1. Di notebook Jupyterlab Anda, buat bucket Cloud Storage:

    BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}"
    ! gsutil mb -l $LOCATION -p $PROJECT_ID $BUCKET_URI
    
  2. Salin file contoh ke bucket Cloud Storage Anda.

    ! gsutil cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
    
  3. Agar dapat menggunakan Vector Search untuk menjalankan kueri, Anda juga perlu menyalin file penyematan ke direktori lokal:

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

Membuat indeks Vector Search

  1. Di notebook Jupyterlab Anda, muat embedding ke Vector Search:

    # init the aiplatform package
    from google.cloud import aiplatform
    aiplatform.init(project=PROJECT_ID, location=LOCATION)
    
  2. Buat MatchingEngineIndex dengan fungsi create_tree_ah_index-nya (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() akan membuat indeks. Dalam tutorial ini, tugas ini memakan waktu sekitar 5 hingga 10 menit.

  3. Di konsol Google Cloud, buka tab Indexes di halaman Vector Search.

    Buka Indexes

  4. Pastikan ada indeks yang namanya diawali dengan "vs-quickstart-index-" dan berisi stempel waktu yang benar.

  5. Catat ID indeksnya. Anda akan memerlukan ID ini saat men-deploy indeks pada langkah berikutnya.

Membuat endpoint indeks

  1. 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
    
  2. Buat endpoint indeks:

    curl -H "Content-Type: application/json" \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      http://$VERTEX_ENDPOINT/v1/projects/$SERVICE_PROJECT/locations/$REGION/indexEndpoints \
      -d '{displayName: "'$DISPLAY_NAME'", privateServiceConnectConfig: { enablePrivateServiceConnect: true, projectAllowlist: ["'$SERVICE_PROJECT'"] }}'
    
  3. Pastikan endpoint indeks telah dibuat:

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

    Anda akan melihat output yang mirip dengan contoh berikut, dengan ID endpoint indeks adalah 8151506529447575552:

    Using endpoint [http://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. Catat ID endpoint indeks Anda. Anda akan memerlukan ID ini saat men-deploy indeks pada langkah berikutnya.

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

Anda akan melihat output yang mirip dengan contoh berikut, dengan ID endpoint indeks adalah 8151506529447575552:

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

Saat Anda men-deploy indeks, endpoint Private Service Connect akan dibuat. Operasi deployment memerlukan waktu sekitar 10 hingga 15 menit.

Memverifikasi bahwa indeks di-deploy ke endpoint indeks

  1. Di Konsol Google Cloud, buka tab Index Endpoints di halaman Vector Search.

    Buka Endpoint Indeks

  2. Pastikan endpoint indeks vector-search memiliki indeks yang Di-deploy yang juga disebut vector-search.

    Jika lingkaran biru yang berputar muncul di samping nama endpoint indeks, indeks masih dalam proses deployment.

Mendapatkan URI lampiran layanan untuk endpoint indeks

Setelah indeks di-deploy sepenuhnya, Anda bisa mendapatkan URI lampiran layanan.

Di Cloud Shell, jalankan perintah berikut guna mendapatkan URI lampiran layanan untuk endpoint Private Service Connect:

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 [http://us-central1-aiplatform.googleapis.com/]
 serviceAttachment: projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798

Catat URI serviceAttachment, dimulai dengan projects, misalnya, projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798. Anda akan membutuhkannya di langkah berikutnya, saat membuat endpoint konsumen.

Membuat endpoint konsumen Private Service Connect

  1. Di Cloud Shell, cadangkan alamat IP endpoint konsumen yang akan digunakan untuk membuat kueri indeks Vector Search:

    gcloud compute addresses create vector-search-endpoint1 \
      --region=us-central1 \
      --subnet=consumer-endpoint-subnet
    
  2. Temukan alamat IP yang dicadangkan:

    gcloud compute addresses list --filter="name=vector-search-endpoint1"
    
  3. 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-endpoint1 \
      --region=us-central1 \
      --network=vertex-networking-vpc \
      --address=vector-search-endpoint1 \
      --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    Berikut ini adalah contoh penggunaan untuk perintah ini:

    gcloud compute forwarding-rules create vector-search-endpoint1 \
      --region=us-central1 \
      --network=vertex-networking-vpc \
      --address=vector-search-endpoint1 \
      --target-service-attachment=projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
    
  4. Di konsol Google Cloud, buka tab Connected endpoint di halaman Private Service Connect.

    Buka endpoint yang terhubung

  5. Validasi bahwa status endpoint konsumen adalah Accepted.

  6. Catat alamat IP endpoint konsumen Private Service Connect. Di langkah berikutnya, Anda akan menggunakan endpoint ini untuk membangun komunikasi dengan indeks Vector Search yang di-deploy.

Mengkueri indeks yang di-deploy

Setelah membuat endpoint konsumen 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 endpoint konsumen.

Agar Identity-Aware Proxy (IAP) dapat terhubung ke instance VM, buat aturan firewall yang:

  • Berlaku untuk semua instance VM yang ingin Anda sediakan akses 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 akan menginstal klien gRPC. Pada langkah selanjutnya, Anda akan menggunakan klien gRPC untuk mengirim kueri dari instance VM on-prem-client.

Membuat aturan firewall dan menginstal gRPC

  1. Di Cloud Shell, jalankan perintah berikut, dengan mengganti PROJECT_ID dengan project ID Anda:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. 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
    
  3. Login ke instance VM on-prem-client:

    gcloud compute ssh on-prem-client \
      --project=$projectid \
      --zone=us-central1-a \
      --tunnel-through-iap
    
  4. Pada instance VM on-prem-client, instal klien gRPC:

    sudo apt-get install git -y
    git clone http://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 sudah ada

  1. Di Konsol Google Cloud, buka tab Instances di halaman Vertex AI Workbench.

    Buka Vertex AI Workbench

  2. Di samping nama instance Vertex AI Workbench, klik Buka JupyterLab.

    Instance Vertex AI Workbench akan membuka JupyterLab.

  3. Pilih File > New > Terminal.

  4. Di terminal JupyterLab (bukan Cloud Shell), lihat entri terakhir dalam indeks:

    tail -1 product-embs.json
    
  5. Cari pasangan nilai kunci pertama di item, yang berisi nomor ID item, seperti pada contoh berikut:

    "id":"27452"
    

    Catat nomor ID ini. Anda akan menggunakannya di bagian berikutnya.

Melakukan kueri Vector Search

Dalam instance VM on-prem-client, buat kueri indeks yang di-deploy:

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

Ganti nilai berikut:

  • CONSUMER_ENDPOINT_IP: Alamat IP endpoint konsumen Private Service Connect yang Anda buat di bagian sebelumnya
  • ITEM_ID: nomor ID item yang Anda simpan di bagian sebelumnya

Output akan terlihat seperti contoh berikut:

   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 dikenakan 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-nya.

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 resource individual di konsol Google Cloud sebagai berikut:

  1. Batalkan deployment dan hapus indeks Vector Search sebagai berikut:

    1. Di konsol Google Cloud, buka tab Indexes di halaman Vector Search.

      Buka Indexes

    2. Temukan indeks yang namanya diawali dengan "vs-quickstart-index-" dan berisi stempel waktu yang benar.

    3. Klik nama indeks.

    4. Di halaman Info indeks, di samping nama indeks dalam daftar Indeks yang di-deploy, klik Tindakan, lalu klik Batalkan deployment.

      Proses pembatalan deployment indeks memerlukan waktu beberapa menit. Jika lingkaran biru yang berputar muncul di samping nama indeks, atau jika status indeks dicantumkan sebagai Undeploying, indeks masih dalam proses pembatalan deployment. Anda mungkin perlu memuat ulang tab browser konsol Google Cloud untuk melihat bahwa indeks tidak lagi di-deploy.

    5. Klik panah kembali untuk kembali ke tab Indexes.

    6. Di samping nama indeks dalam daftar indeks, klik Tindakan, lalu klik Hapus untuk menghapus indeks.

  2. Hapus endpoint indeks sebagai berikut:

    1. Di Konsol Google Cloud, buka tab Index endpoint di halaman Vector Search.

      Buka Endpoint indeks

    2. Di samping nama endpoint dalam daftar endpoint indeks, klik Tindakan, lalu klik Hapus untuk menghapus endpoint indeks.

  3. Hapus instance Vertex AI Workbench sebagai berikut:

    1. Di konsol Google Cloud, di bagian Vertex AI, buka tab Instances di halaman Workbench.

      Buka Vertex AI Workbench

    2. Pilih instance Vertex AI Workbench workbench-tutorial, lalu klik Delete.

  4. Hapus instance VM Compute Engine sebagai berikut:

    1. Di konsol Google Cloud, buka halaman Compute Engine.

      Buka Compute Engine

    2. Pilih instance VM on-prem-client, lalu klik Delete.

  5. Hapus tunnel VPN sebagai berikut:

    1. Di Konsol Google Cloud, buka halaman VPN.

      Buka VPN

    2. Di halaman VPN, klik tab Cloud VPN Tunnels.

    3. Dalam daftar tunnel VPN, pilih empat tunnel VPN yang Anda buat dalam tutorial ini, lalu klik Delete.

  6. Hapus gateway VPN dengan ketersediaan tinggi (HA) sebagai berikut:

    1. Di halaman VPN, klik tab Cloud VPN Gateways.

      Buka Gateway VPN Cloud

    2. Di daftar gateway VPN, klik onprem-vpn-gw1.

    3. Di halaman Cloud VPN gateway details, klik Delete VPN Gateway.

    4. Klik panah kembali jika diperlukan untuk kembali ke daftar gateway VPN, lalu klik vertex-networking-vpn-gw1.

    5. Di halaman Cloud VPN gateway details, klik Delete VPN Gateway.

  7. Hapus Cloud Router sebagai berikut:

    1. Buka halaman Cloud Router.

      Buka Cloud Router

    2. Dalam daftar Cloud Router, pilih empat router yang Anda buat dalam tutorial ini.

    3. Untuk menghapus router, klik Hapus.

      Tindakan ini juga akan menghapus dua gateway Cloud NAT yang terhubung ke Cloud Router.

  8. Hapus aturan penerusan vector-search-endpoint1 untuk jaringan VPC vertex-networking-vpc sebagai berikut:

    1. Buka tab Frontends di halaman Load balancing.

      Buka Frontend

    2. Di daftar aturan penerusan, klik vector-search-endpoint1.

    3. Di halaman Detail aturan penerusan, klik Hapus.

  9. Hapus jaringan VPC sebagai berikut:

    1. Buka halaman VPC networks.

      Buka VPC networks

    2. Dalam daftar jaringan VPC, klik onprem-vpc.

    3. Di halaman VPC network details, klik Delete VPC Network.

      Jika setiap jaringan dihapus, subnetwork, rute, dan aturan firewall-nya juga akan dihapus.

    4. Kembali ke daftar jaringan VPC, lalu klik vertex-networking-vpc.

    5. Di halaman VPC network details, klik Delete VPC Network.

  10. Hapus bucket penyimpanan sebagai berikut:

    1. Di konsol Google Cloud, buka halaman Cloud Storage.

      Buka Cloud Storage

    2. Pilih bucket penyimpanan Anda, lalu klik Hapus.

  11. Hapus akun layanan workbench-sa sebagai berikut:

    1. Buka halaman Service accounts.

      Buka halaman Service accounts

    2. Pilih akun layanan workbench-sa, lalu klik Delete.

Langkah selanjutnya