Dalam panduan memulai Penelusuran Vektor Gemini Enterprise Agent Platform, pelajari cara membuat indeks dari set data contoh dari situs pakaian e-commerce fiktif. Untuk keperluan panduan memulai ini, embedding telah dibuat. Panduan memulai ini dimaksudkan sebagai cara untuk mulai membuat dan men-deploy indeks dalam waktu kurang dari 30 menit.
Prasyarat
Tutorial ini memerlukan project Google Cloud yang ditautkan dengan akun penagihan. Untuk membuat project baru, lihat Menyiapkan project dan lingkungan pengembangan. Anda perlu membuat project dan menyiapkan akun penagihan.
Memilih lingkungan runtime
Tutorial ini dapat dijalankan di Colab atau Gemini Enterprise Agent Platform Workbench.
- Colab: Buka tutorial ini di Colab
- Gemini Enterprise Agent Platform Workbench: Buka tutorial ini di Gemini Enterprise Agent Platform Workbench. Jika ini pertama kalinya Anda menggunakan Gemini Enterprise Agent Platform Workbench di project Google Cloud , buka bagian Gemini Enterprise Agent Platform Workbench di konsol Google Cloud dan klik Enable untuk mengaktifkan Notebooks API.
Untuk melihat notebook ini di GitHub, lihat GitHub.
Biaya untuk menyelesaikan panduan memulai ini
Untuk menyelesaikan tutorial ini, Anda memerlukan biaya sekitar beberapa dolar AS. Harga layanan Google Cloud yang digunakan dalam tutorial ini tersedia di halaman berikut:
- Penelusuran Vektor Gemini Enterprise Agent Platform
- Cloud Storage
- Gemini Enterprise Agent Platform Workbench
Anda juga dapat menggunakan kalkulator harga untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan.
Penyiapan
Sebelum mulai menggunakan Gemini Enterprise Agent Platform, Anda perlu menyiapkan hal berikut:
- Menginstal Agent Platform SDK untuk Python
- Menetapkan variabel lingkungan
- Melakukan autentikasi (khusus Colab)
- Menetapkan izin IAM
- Aktifkan API
Menginstal Agent Platform SDK untuk Python
Gemini Enterprise Agent Platform dan Cloud Storage API dapat diakses dengan berbagai cara, termasuk REST API dan Agent Platform SDK untuk Python. Dalam tutorial ini, Agent Platform SDK untuk Python digunakan.
!pip install --upgrade --user google-cloud-aiplatform>=1.29.0 google-cloud-storage
Untuk menggunakan paket yang baru diinstal di runtime Jupyter ini, Anda harus memulai ulang runtime, seperti yang ditunjukkan dalam cuplikan kode berikut.
# Restart kernel after installs so that your environment can access the new packages
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
Variabel lingkungan
Tetapkan variabel lingkungan. Jika diminta, ganti your-project-id
dengan project ID Anda, lalu jalankan sel.
# get project ID
PROJECT_ID = ! gcloud config get-value project
PROJECT_ID = PROJECT_ID[0]
LOCATION = "us-central1"
if PROJECT_ID == "(unset)":
print(f"Please set the project ID manually below")
# define project information
if PROJECT_ID == "(unset)":
PROJECT_ID = "[your-project-id]"
# generate a unique id for this session
from datetime import datetime
UID = datetime.now().strftime("%m%d%H%M")
Autentikasi (khusus Colab)
Jika Anda menjalankan notebook ini di Colab, Anda harus menjalankan autentikasi sel berikut. Langkah ini tidak diperlukan jika Anda menggunakan Gemini Enterprise Agent Platform Workbench karena sudah diautentikasi sebelumnya.
import sys
# if it's Colab runtime, authenticate the user with Google Cloud
if 'google.colab' in sys.modules:
from google.colab import auth
auth.authenticate_user()
Menetapkan izin IAM
Anda perlu menambahkan izin akses ke akun layanan default untuk menggunakan layanan tersebut.
- Buka halaman IAM di konsol Google Cloud .
- Cari akun utama untuk akun layanan komputasi default.
Tampilannya akan terlihat seperti:
compute@developer.gserviceaccount.com - Klik tombol edit dan berikan peran berikut ke akun layanan komputasi default: Agent Platform User, Storage Admin, dan Service Usage Admin.
Mengaktifkan API
Jalankan perintah berikut untuk mengaktifkan API untuk Compute Engine, Gemini Enterprise Agent Platform, dan Cloud Storage dengan project Google Cloud ini.
! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com --project {PROJECT_ID}
Menyiapkan data sampel
Dalam tutorial ini, kita menggunakan set data TheLook yang memiliki tabel produk dengan sekitar 5.000 baris data produk sintetis untuk situs pakaian e-commerce fiktif.

Dari tabel ini, kami telah menyiapkan file product-embs.json.

File ini dalam format JSONL dan setiap baris memiliki ID untuk ID produk, nama untuk nama produk, dan embedding untuk embedding nama produk dalam 768 dimensi yang sebelumnya dibuat dengan embedding Gemini Enterprise Agent Platform untuk teks.
Embedding teks merepresentasikan makna nama produk pakaian. Dalam tutorial ini, kita akan menggunakan Penelusuran Vektor untuk menyelesaikan penelusuran semantik item. Kode contoh ini dapat digunakan sebagai dasar untuk sistem rekomendasi cepat lainnya, yang memungkinkan Anda menemukan "produk lain yang mirip dengan produk ini" dengan cepat.
Untuk mempelajari lebih lanjut cara membuat embedding dari data di tabel BigQuery dan menyimpannya dalam file JSON, lihat Memulai Embedding Teks + Penelusuran Vektor Gemini Enterprise Agent Platform.
Menyiapkan data di Cloud Storage
Untuk membangun indeks dengan Gemini Enterprise Agent Platform, tempatkan file embedding di bucket Cloud Storage. Kode berikut menyelesaikan dua tugas:
- Membuat bucket Cloud Storage.
- Menyalin file contoh ke bucket Cloud Storage Anda.
BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}"
! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_ID
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
Untuk menggunakan Penelusuran Vektor 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
Membangun dan men-deploy indeks Penelusuran Vektor
Pelajari cara membuat indeks, membuat endpoint indeks, lalu men-deploy indeks Anda ke endpoint.
Membuat indeks
Sekarang saatnya memuat embedding ke Vector Search.
API tersedia dalam paket aiplatform SDK.
# 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 sebelumnya dari Penelusuran Vektor).
# 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 = 100,
)
Metode MatchingEngineIndex.create_tree_ah_index() membangun indeks.
Proses ini memerlukan waktu kurang dari 10 menit jika set data berukuran kecil, atau sekitar 60 menit atau lebih, bergantung pada ukuran set data. Anda dapat memeriksa status pembuatan indeks di konsol Google Cloud Penelusuran Vektor
Parameter untuk membuat indeks:
contents_delta_uri: URI direktori Cloud Storage tempat Anda menyimpan file JSON embeddingdimensions: ukuran dimensi setiap embedding. Dalam hal ini, nilainya adalah 768 karena Anda menggunakan embedding teks dari text embeddings API.approximate_neighbors_count: jumlah item serupa yang ingin Anda ambil dalam kasus umum
Untuk mempelajari lebih lanjut cara membuat indeks dan parameter yang tersedia, lihat Membuat dan mengelola indeks Anda
Membuat endpoint indeks dan men-deploy indeks
Untuk menggunakan indeks, Anda perlu membuat endpoint indeks. Endpoint indeks berfungsi sebagai instance server yang menerima permintaan kueri untuk indeks Anda.
## create `IndexEndpoint`
my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint.create(
display_name = f"vs-quickstart-index-endpoint-{UID}",
public_endpoint_enabled = True
)
Dengan endpoint indeks, deploy indeks dengan menentukan ID indeks yang di-deploy secara unik.
DEPLOYED_INDEX_ID = f"vs_quickstart_deployed_{UID}"
# deploy the Index to the Index Endpoint
my_index_endpoint.deploy_index(
index = my_index, deployed_index_id = DEPLOYED_INDEX_ID
)
Jika ini adalah pertama kalinya men-deploy indeks ini ke endpoint indeks, diperlukan waktu sekitar 30 menit untuk otomatis membangun dan memulai backend. Untuk melihat status deployment indeks, di bagian Agent Platform pada konsolGoogle Cloud , buka bagian Deploy and Use. Pilih Indexes.
Menjalankan kueri dengan Penelusuran Vektor
Dalam kode berikut, kode ini menemukan embedding untuk nama produk yang ditentukan, dan menemukan nama produk yang serupa dengan Penelusuran Vektor.
Mendapatkan embedding untuk menjalankan kueri
Pertama, muat file JSON embedding untuk membuat dict nama produk dan embedding.
import json
# build dicts for product names and embs
product_names = {}
product_embs = {}
with open('product-embs.json') as f:
for l in f.readlines():
p = json.loads(l)
id = p['id']
product_names[id] = p['name']
product_embs[id] = p['embedding']
Dengan kamus product_embs, Anda dapat menentukan ID produk untuk mendapatkan embedding-nya.
# Get the embedding for ID 6523 "cloudveil women's excursion short"
# You can also try with other IDs such as 12711, 18090, 19536 and 11863
query_emb = product_embs['6523']
Menjalankan kueri
Teruskan embedding ke metode Endpoint.find_neighbors() untuk menemukan nama produk yang serupa.
# run query
response = my_index_endpoint.find_neighbors(
deployed_index_id = DEPLOYED_INDEX_ID,
queries = [query_emb],
num_neighbors = 10
)
# show the results
for idx, neighbor in enumerate(response[0]):
print(f"{neighbor.distance:.2f} {product_names[neighbor.id]}")
Metode find_neighbors() hanya memerlukan waktu milidetik untuk mengambil item yang serupa,
meskipun Anda memiliki miliaran item di indeks, berkat
algoritma ScaNN.
Penelusuran Vektor juga mendukung penskalaan otomatis yang dapat secara otomatis mengubah ukuran jumlah node berdasarkan permintaan workload Anda.
Pembersihan
Jika Anda menggunakan project Cloud Anda sendiri, bukan project sementara di Qwiklabs, pastikan untuk menghapus semua indeks, endpoint indeks, dan bucket Cloud Storage setelah menyelesaikan tutorial ini. Jika tidak, Anda mungkin akan dikenai biaya tak terduga dari resource yang tersisa.
Jika Anda menggunakan Workbench, Anda mungkin juga perlu menghapus notebook dari konsol.
# wait for a confirmation
input("Press Enter to delete Index Endpoint, Index and Cloud Storage bucket:")
# delete Index Endpoint
my_index_endpoint.undeploy_all()
my_index_endpoint.delete(force = True)
# delete Index
my_index.delete()
# delete Cloud Storage bucket
! gcloud storage rm {BUCKET_URI} --recursive
Utilitas
Mungkin perlu waktu beberapa saat untuk membuat atau men-deploy indeks, dan selama waktu tersebut, Anda mungkin kehilangan koneksi dengan runtime Colab. Jika koneksi terputus, Anda dapat memeriksa konsolGoogle Cloud Penelusuran Vektor dan menggunakan yang sudah ada untuk melanjutkan, alih-alih membuat atau men-deploy indeks baru lagi.
Mendapatkan indeks yang ada
Untuk mendapatkan objek indeks yang sudah ada, ganti your-index-id berikut dengan ID indeks dan jalankan sel. Anda bisa mendapatkan ID indeks dengan memeriksa konsol Google Cloud Penelusuran Vektor. Di bagian Agent Platform pada konsol Google Cloud , buka bagian Deploy and Use. Pilih Indexes.
my_index_id = "[your-index-id]"
my_index = aiplatform.MatchingEngineIndex(my_index_id)
Mendapatkan endpoint indeks yang ada
Untuk mendapatkan objek endpoint indeks yang sudah ada, ganti your-index-endpoint-id berikut dengan ID endpoint indeks, lalu jalankan sel.
Anda bisa mendapatkan endpoint indeks dengan memeriksa konsol Google Cloud Penelusuran Vektor.
Di bagian Agent Platform pada konsol Google Cloud , buka
bagian Deploy and Use. Pilih Index Endpoints.
my_index_endpoint_id = "[your-index-endpoint-id]"
my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint(my_index_endpoint_id)