1. Pengantar
Ringkasan
Vertex AI Search and Conversation (sebelumnya dikenal sebagai Generative AI App Builder) memungkinkan developer memanfaatkan kecanggihan model dasar, keahlian penelusuran, dan teknologi AI percakapan Google untuk membuat aplikasi AI generatif tingkat perusahaan. Codelab ini berfokus pada penggunaan Vertex AI Search, tempat Anda dapat membangun aplikasi penelusuran berkualitas Google berdasarkan data Anda sendiri dan menyematkan kotak penelusuran di halaman web atau aplikasi.
Cloud Run adalah platform komputasi terkelola yang memungkinkan Anda menjalankan container secara langsung di atas infrastruktur Google yang skalabel. Anda dapat men-deploy kode yang ditulis dalam bahasa pemrograman apa pun di Cloud Run (yang mampu dimasukkan ke dalam container) dengan menggunakan opsi deployment berbasis sumber.
Dalam codelab ini, Anda akan membuat layanan Cloud Run menggunakan deployment berbasis sumber guna mengambil hasil penelusuran untuk konten tidak terstruktur dalam file PDF di bucket Cloud Storage. Anda dapat mempelajari lebih lanjut cara menyerap konten tidak terstruktur di sini.
Yang akan Anda pelajari
- Cara membuat aplikasi Vertex AI Search untuk data tidak terstruktur sebagai PDF yang diserap dari bucket Cloud Storage
- Cara membuat endpoint HTTP menggunakan deployment berbasis sumber di Cloud Run
- Cara membuat akun layanan dengan mengikuti prinsip hak istimewa terendah untuk layanan Cloud Run yang akan digunakan untuk membuat kueri aplikasi Vertex AI Search
- Cara memanggil layanan Cloud Run untuk mengkueri aplikasi Vertex AI Search
2. Penyiapan dan Persyaratan
Prasyarat
- Anda sudah login ke Konsol Cloud.
- Anda sebelumnya telah men-deploy layanan Cloud Run. Misalnya, Anda dapat mengikuti men-deploy layanan web dari panduan memulai kode sumber untuk memulai.
Mengaktifkan Cloud Shell
- Dari Cloud Console, klik Aktifkan Cloud Shell .
Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan.
Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.
Mesin virtual ini dimuat dengan semua alat pengembangan yang diperlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan dengan browser.
Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah diautentikasi dan project sudah ditetapkan ke project ID Anda.
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list
Output perintah
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Jika tidak, Anda dapat menyetelnya dengan perintah ini:
gcloud config set project <PROJECT_ID>
Output perintah
Updated property [core/project].
3. Mengaktifkan API
Sebelum dapat mulai menggunakan Vertex AI Search, ada beberapa API yang perlu Anda aktifkan.
Pertama, codelab ini memerlukan penggunaan Vertex AI Search and Conversation, BigQuery, dan Cloud Storage API. Anda dapat mengaktifkan API tersebut di sini.
Kedua, ikuti langkah-langkah berikut untuk mengaktifkan Vertex AI Search and Conversation API:
- Di konsol Google Cloud, buka Konsol Vertex AI Search and Conversation.
- Baca dan setujui Persyaratan Layanan, lalu klik Lanjutkan dan aktifkan API.
4. Membuat aplikasi penelusuran untuk data tidak terstruktur dari Cloud Storage
- Di Konsol Google Cloud, buka Search & Halaman percakapan. Klik Aplikasi baru.
- Di panel Select app type, pilih Search.
- Pastikan Fitur perusahaan diaktifkan untuk menerima jawaban yang diekstrak kata demi kata dari dokumen Anda.
- Pastikan opsi Fitur LLM lanjutan diaktifkan untuk menerima ringkasan penelusuran.
- Di kolom Nama aplikasi, masukkan nama aplikasi Anda. ID aplikasi Anda muncul di bawah nama aplikasi.
- Pilih global (Global) sebagai lokasi untuk aplikasi Anda, lalu klik Continue.
- Di panel Penyimpanan data, klik Buat penyimpanan data baru.
- Di panel Select a data source, pilih Cloud Storage.
- Di panel Import data from GCS, pastikan Folder dipilih.
- Di kolom gs://, masukkan nilai berikut:
cloud-samples-data/gen-app-builder/search/stanford-cs-224
Bucket Cloud Storage ini berisi file PDF dari folder Cloud Storage yang tersedia secara publik untuk tujuan pengujian. - Pilih Dokumen tidak terstruktur, lalu klik Lanjutkan.
- Di panel Configure your data store, pilih global (Global) sebagai lokasi untuk penyimpanan data Anda.
- Masukkan nama untuk penyimpanan data Anda. Anda akan menggunakan nama ini nanti dalam codelab ini saat men-deploy layanan Cloud Run. Klik Create.
- Di panel Penyimpanan data, pilih penyimpanan data baru Anda, lalu klik Buat.
- Di halaman Data penyimpanan data Anda, klik tab Aktivitas untuk melihat status penyerapan data Anda. Impor selesai ditampilkan di kolom Status saat proses impor selesai.
- Klik tab Dokumen untuk melihat jumlah dokumen yang diimpor.
- Di menu navigasi, klik Pratinjau untuk menguji aplikasi penelusuran.
- Di kotak penelusuran, masukkan
final lab due date
, lalu tekan Enter untuk melihat hasil Anda.
5. Membuat layanan Cloud Run
Di bagian ini, Anda akan membuat layanan Cloud Run yang menerima string kueri untuk istilah penelusuran Anda. Layanan ini akan menggunakan library klien python untuk Discovery Engine API. Untuk runtime lain yang didukung, Anda dapat melihat daftarnya di sini.
Membuat kode sumber untuk fungsi
Pertama, buat direktori dan {i>cd<i} ke direktori tersebut.
mkdir docs-search-service-python && cd $_
Lalu, buat file requirements.txt
dengan konten berikut:
blinker==1.6.3 cachetools==5.3.1 certifi==2023.7.22 charset-normalizer==3.3.0 click==8.1.7 Flask==3.0.0 google-api-core==2.12.0 google-auth==2.23.3 google-cloud-discoveryengine==0.11.2 googleapis-common-protos==1.61.0 grpcio==1.59.0 grpcio-status==1.59.0 idna==3.4 importlib-metadata==6.8.0 itsdangerous==2.1.2 Jinja2==3.1.2 MarkupSafe==2.1.3 numpy==1.26.1 proto-plus==1.22.3 protobuf==4.24.4 pyasn1==0.5.0 pyasn1-modules==0.3.0 requests==2.31.0 rsa==4.9 urllib3==2.0.7 Werkzeug==3.0.1 zipp==3.17.0
Selanjutnya, buat file sumber main.py
dengan konten berikut:
from typing import List import json import os from flask import Flask from flask import request app = Flask(__name__) from google.api_core.client_options import ClientOptions from google.cloud import discoveryengine_v1 as discoveryengine project_id = os.environ.get('PROJECT_ID') location = "global" # Values: "global", "us", "eu" data_store_id = os.environ.get('SEARCH_ENGINE_ID') print(project_id) print(data_store_id) @app.route("/") def search_storage(): search_query = request.args.get("searchQuery") result = search_sample(project_id, location, data_store_id, search_query) return result def search_sample( project_id: str, location: str, data_store_id: str, search_query: str, ) -> str: # For more information, refer to: # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store client_options = ( ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com") if location != "global" else None ) # Create a client client = discoveryengine.SearchServiceClient(client_options=client_options) # The full resource name of the search engine serving config # e.g. projects/{project_id}/locations/{location}/dataStores/{data_store_id}/servingConfigs/{serving_config_id} serving_config = client.serving_config_path( project=project_id, location=location, data_store=data_store_id, serving_config="default_config", ) # Optional: Configuration options for search # Refer to the `ContentSearchSpec` reference for all supported fields: # https://cloud.google.com/python/docs/reference/discoveryengine/latest/google.cloud.discoveryengine_v1.types.SearchRequest.ContentSearchSpec content_search_spec = discoveryengine.SearchRequest.ContentSearchSpec( # For information about snippets, refer to: # https://cloud.google.com/generative-ai-app-builder/docs/snippets snippet_spec=discoveryengine.SearchRequest.ContentSearchSpec.SnippetSpec( return_snippet=True ), # For information about search summaries, refer to: # https://cloud.google.com/generative-ai-app-builder/docs/get-search-summaries summary_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec( summary_result_count=5, include_citations=True, ignore_adversarial_query=True, ignore_non_summary_seeking_query=True, ), ) # Refer to the `SearchRequest` reference for all supported fields: # https://cloud.google.com/python/docs/reference/discoveryengine/latest/google.cloud.discoveryengine_v1.types.SearchRequest request = discoveryengine.SearchRequest( serving_config=serving_config, query=search_query, page_size=10, content_search_spec=content_search_spec, query_expansion_spec=discoveryengine.SearchRequest.QueryExpansionSpec( condition=discoveryengine.SearchRequest.QueryExpansionSpec.Condition.AUTO, ), spell_correction_spec=discoveryengine.SearchRequest.SpellCorrectionSpec( mode=discoveryengine.SearchRequest.SpellCorrectionSpec.Mode.AUTO ), ) response = client.search(request) return response.summary.summary_text if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
Menyiapkan variabel lingkungan
Dalam kode ini, Anda akan membuat beberapa variabel lingkungan untuk meningkatkan keterbacaan perintah gcloud
yang digunakan dalam codelab ini.
PROJECT_ID=$(gcloud config get-value project) SERVICE_NAME="search-storage-pdfs-python" SERVICE_REGION="us-central1" # update with your data store name SEARCH_ENGINE_ID=<your-data-store-name>
Membuat Akun Layanan
Codelab ini menunjukkan cara membuat akun layanan untuk layanan Cloud Run yang akan digunakan untuk mengakses Vertex AI Search API.
SERVICE_ACCOUNT="cloud-run-vertex-ai-search" SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts create $SERVICE_ACCOUNT \ --display-name="Cloud Run Vertex AI Search service account" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \ --role='roles/discoveryengine.editor'
Men-deploy layanan Cloud Run
Sekarang, Anda dapat menggunakan deployment berbasis sumber untuk memasukkan layanan Cloud Run ke dalam container secara otomatis.
gcloud run deploy $SERVICE_NAME \ --region=$SERVICE_REGION \ --source=. \ --service-account $SERVICE_ACCOUNT \ --update-env-vars SEARCH_ENGINE_ID=$SEARCH_ENGINE_ID,PROJECT_ID=$PROJECT_ID \ --no-allow-unauthenticated
lalu Anda dapat menyimpan URL Cloud Run sebagai variabel lingkungan untuk digunakan nanti.
ENDPOINT_URL="$(gcloud run services describe $SERVICE_NAME --region=$SERVICE_REGION --format='value(status.url)')"
6. Memanggil layanan Cloud Run
Sekarang Anda dapat memanggil layanan Cloud Run dengan string kueri untuk meminta What is the final lab due date?
.
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" "$ENDPOINT_URL?searchQuery=what+is+the+final+lab+due+date"
Hasilnya akan terlihat seperti contoh output di bawah ini:
The final lab is due on Tuesday, March 21 at 4:30 PM [1].
7. Selamat!
Selamat, Anda telah menyelesaikan codelab!
Sebaiknya tinjau dokumentasi tentang Vertex AI Search dan Cloud Run.
Yang telah kita bahas
- Cara membuat aplikasi Vertex AI Search untuk data tidak terstruktur sebagai PDF yang diserap dari bucket Cloud Storage
- Cara membuat endpoint HTTP menggunakan deployment berbasis sumber di Cloud Run
- Cara membuat akun layanan dengan mengikuti prinsip hak istimewa terendah untuk layanan Cloud Run agar dapat digunakan untuk membuat kueri aplikasi Vertex AI Search.
- Cara memanggil layanan Cloud Run untuk mengkueri aplikasi Vertex AI Search
8. Pembersihan
Untuk menghindari tagihan yang tidak disengaja, (misalnya, jika Cloud Function ini secara tidak sengaja dipanggil lebih sering daripada alokasi pemanggilan Cloud Function bulanan dalam paket gratis), Anda dapat menghapus Cloud Function atau menghapus project yang Anda buat di Langkah 2.
Untuk menghapus Cloud Function, buka Konsol Cloud Cloud Function di https://console.cloud.google.com/functions/ dan hapus fungsi imagen_vqa (atau $FUNCTION_NAME jika Anda menggunakan nama yang berbeda).
Jika memilih untuk menghapus seluruh project, Anda dapat membuka https://console.cloud.google.com/cloud-resource-manager, pilih project yang dibuat pada Langkah 2, lalu pilih Hapus. Jika project dihapus, Anda harus mengubah project di Cloud SDK. Anda dapat melihat daftar semua project yang tersedia dengan menjalankan gcloud projects list
.