AlloyDB AI ile vektör yerleştirmelerini kullanmaya başlama

1. Giriş

Bu codelab'de, vektör aramayı Vertex AI yerleştirmeleriyle birleştirerek AlloyDB AI'ı nasıl kullanacağınızı öğreneceksiniz. Bu laboratuvar, AlloyDB AI özelliklerine ayrılmış bir laboratuvar koleksiyonunun parçasıdır. Belgelerdeki AlloyDB AI sayfasında daha fazla bilgi edinebilirsiniz.

81802d1e350b59bb.png

Ön koşullar

  • Google Cloud ve konsol hakkında temel düzeyde bilgi sahibi olmak
  • Komut satırı arayüzü ve Cloud Shell ile ilgili temel beceriler

Neler öğreneceksiniz?

  • AlloyDB kümesini ve birincil örneğini dağıtma
  • Google Compute Engine sanal makinesinden AlloyDB'ye bağlanma
  • Veritabanı oluşturma ve AlloyDB AI'yı etkinleştirme
  • Veritabanına veri yükleme
  • AlloyDB Studio'yu kullanma
  • AlloyDB'de Gemini Enterprise Agent Platform yerleştirme modelini kullanma
  • Gemini Enterprise Agent Platform Studio'yu kullanma
  • Gemini Enterprise Agent Platform üretken modelini kullanarak sonucu zenginleştirme
  • Vektör dizini kullanarak performansı artırma

Gerekenler

  • Google Cloud hesabı ve Google Cloud projesi
  • Chrome gibi bir web tarayıcısı

2. Kurulum ve Gereksinimler

Proje Kurulumu

  1. Google Cloud Console'da oturum açın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

İş veya okul hesabı yerine kişisel hesap kullanıyorsanız.

  1. Yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Google Cloud Console'da yeni bir proje oluşturmak için başlıkta bir pop-up pencere açacak olan Proje seç düğmesini tıklayın.

295004821bab6a87.png

Proje seçin penceresinde Yeni Proje düğmesini tıklayın. Bu işlem, yeni proje için bir iletişim kutusu açar.

37d264871000675d.png

İletişim kutusunda tercih ettiğiniz proje adını girin ve konumu seçin.

96d86d3d5655cdbe.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Proje adı, Google API'leri tarafından kullanılmaz ve istediğiniz zaman değiştirilebilir.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Google Cloud Console, otomatik olarak benzersiz bir kimlik oluşturur ancak bu kimliği özelleştirebilirsiniz. Oluşturulan kimliği beğenmediyseniz başka bir rastgele kimlik oluşturabilir veya kendi kimliğinizi girerek kullanılabilirliğini kontrol edebilirsiniz. Çoğu codelab'de, genellikle PROJECT_ID yer tutucusuyla tanımlanan proje kimliğinize başvurmanız gerekir.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.

Faturalandırmayı etkinleştirme

Kişisel faturalandırma hesabı oluşturma

Faturalandırmayı Google Cloud kredilerini kullanarak ayarladıysanız bu adımı atlayabilirsiniz.

Kişisel faturalandırma hesabı oluşturmak için Cloud Console'da faturalandırmayı etkinleştirmek üzere buraya gidin.

Bazı notlar:

  • Bu laboratuvarı tamamlamak için 3 ABD dolarından daha az tutarda bulut kaynağı kullanmanız gerekir.
  • Daha fazla ücret alınmaması için bu laboratuvarın sonundaki adımları uygulayarak kaynakları silebilirsiniz.
  • Yeni kullanıcılar 300 ABD doları değerinde ücretsiz deneme sürümünden yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir ancak bu codelab'de Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Google Cloud Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

Cloud Shell'i etkinleştirme

Alternatif olarak G ve ardından S tuşuna basabilirsiniz. Bu sıra, Google Cloud Console'da bulunuyorsanız veya bu bağlantıyı kullanıyorsanız Cloud Shell'i etkinleştirir.

Ortamın temel hazırlığı ve bağlantı kurulması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Ortamın bağlandığını gösteren Google Cloud Shell terminalinin ekran görüntüsü

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarıyla birlikte gelir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.

3. Başlamadan önce

API'yi etkinleştirme

Çıkış:

AlloyDB, Compute Engine, ağ hizmetleri ve Gemini Enterprise Agent Platform'u kullanmak için Google Cloud projenizde ilgili API'leri etkinleştirmeniz gerekir.

API'leri etkinleştirme

Terminaldeki Cloud Shell'de proje kimliğinizin ayarlandığından emin olun:

gcloud config set project [YOUR-PROJECT-ID]

PROJECT_ID ortam değişkenini ayarlayın:

PROJECT_ID=$(gcloud config get-value project)

Gerekli tüm API'leri etkinleştirin:

gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       aiplatform.googleapis.com

Beklenen çıktı

student@cloudshell:~ (test-project-001-402417)$ gcloud config set project test-project-001-402417
Updated property [core/project].
student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-14650]
student@cloudshell:~ (test-project-001-402417)$ 
student@cloudshell:~ (test-project-001-402417)$ gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       aiplatform.googleapis.com
Operation "operations/acat.p2-4470404856-1f44ebd8-894e-4356-bea7-b84165a57442" finished successfully.

Etkinleştirilen her API hakkında bilgiyi dokümanlarda bulabilirsiniz.

4. AlloyDB'yi dağıtma

AlloyDB kümesi oluşturmadan önce VPC'nizde gelecekteki AlloyDB örneği tarafından kullanılacak kullanılabilir bir özel IP aralığı ayırın. Bu kimliğe sahip değilseniz oluşturmanız, dahili Google hizmetleri tarafından kullanılacak şekilde atamanız ve ardından kümeyi ve örneği oluşturmanız gerekir.

Özel IP aralığı oluşturma

AlloyDB için VPC'nizde özel hizmet erişimi yapılandırması yapmanız gerekir. Buradaki varsayım, projede "varsayılan" VPC ağınızın olduğu ve tüm işlemler için bu ağın kullanılacağıdır.

Özel IP aralığını oluşturun:

gcloud compute addresses create psa-range \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=24 \
    --description="VPC private service access" \
    --network=default

Ayrılan IP aralığını kullanarak özel bağlantı oluşturma:

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range \
    --network=default

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-402417)$ gcloud compute addresses create psa-range \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=24 \
    --description="VPC private service access" \
    --network=default
Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/global/addresses/psa-range].

student@cloudshell:~ (test-project-402417)$ gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range \
    --network=default
Operation "operations/pssn.p24-4470404856-595e209f-19b7-4669-8a71-cbd45de8ba66" finished successfully.

student@cloudshell:~ (test-project-402417)$

AlloyDB kümesi oluşturma

us-central1 bölgesinde bir AlloyDB kümesi oluşturun.

Postgres kullanıcısı için şifre tanımlayın. Kendi şifrenizi tanımlayabilir veya rastgele bir işlev kullanarak şifre oluşturabilirsiniz.

export PGPASSWORD=`openssl rand -hex 16`

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-402417)$ export PGPASSWORD=`openssl rand -hex 12`

İleride kullanmak üzere PostgreSQL şifresini not edin:

echo $PGPASSWORD

Gelecekte postgres kullanıcısı olarak örneğe bağlanmak için bu şifreye ihtiyacınız olacak. Sonraki adımlarda kullanmak üzere bu şifreyi kaydedin.

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-402417)$ echo $PGPASSWORD
bbefbfde7601985b0dee5723 (Note: Yours will be different!)

Ücretsiz deneme kümesi oluşturma

AlloyDB'yi daha önce kullanmadıysanız ücretsiz bir deneme kümesi oluşturabilirsiniz:

Bölge ve küme adı için ortam değişkenlerini ayarlayın:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01

Kümeyi oluşturmak için komutu çalıştırın:

gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION \
    --subscription-type=TRIAL

Beklenen konsol çıkışı:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION \
    --subscription-type=TRIAL
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.                                                                                                                                                                                                                                                           

Aynı Cloud Shell oturumunda kümeniz için bir AlloyDB birincil örneği oluşturun. Bağlantınız kesilirse bölge ve küme adı ortam değişkenlerini tekrar tanımlamanız gerekir.

gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=8 \
    --region=$REGION \
    --cluster=$ADBCLUSTER

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=8 \
    --region=$REGION \
    --availability-type ZONAL \
    --cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.                                                                                                                                                                                                                                                     

AlloyDB Standard kümesi oluşturma

Projedeki ilk AlloyDB kümeniz değilse standart küme oluşturma işlemine devam edin. Ücretsiz deneme kümesi oluşturduysanız bu adımı atlayın.

Bölge ve küme adı için ortam değişkenlerini ayarlayın:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01

Kümeyi oluşturmak için komutu çalıştırın:

gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION

Beklenen konsol çıkışı:

export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
    --password=$PGPASSWORD \
    --network=default \
    --region=$REGION 
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.                                                                                                                                                                                                                                                           

Aynı Cloud Shell oturumunda kümeniz için bir AlloyDB birincil örneği oluşturun. Bağlantınız kesilirse bölge ve küme adı ortam değişkenlerini tekrar tanımlamanız gerekir.

gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --region=$REGION \
    --cluster=$ADBCLUSTER

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --region=$REGION \
    --availability-type ZONAL \
    --cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.                                                                                                                                                                                                                                                     

5. AlloyDB'ye bağlanma

AlloyDB yalnızca özel bağlantı kullanılarak dağıtılır. Bu nedenle, veritabanıyla çalışmak için PostgreSQL istemcisinin yüklü olduğu bir Compute Engine VM'ye ihtiyacınız vardır.

GCE sanal makinesi dağıtma

AlloyDB kümesiyle aynı bölgede ve VPC'de bir GCE VM oluşturun.

Cloud Shell'de şunu çalıştırın:

export ZONE=us-central1-a
gcloud compute instances create instance-1 \
    --zone=$ZONE \
    --create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-13 AND family!=debian-13-arm64" --format="value(name)") \
    --scopes=https://www.googleapis.com/auth/cloud-platform

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-402417)$ export ZONE=us-central1-a
gcloud compute instances create instance-1 \
    --zone=$ZONE \
    --create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-13 AND family!=debian-13-arm64" --format="value(name)") \
    --scopes=https://www.googleapis.com/auth/cloud-platform

Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/zones/us-central1-a/instances/instance-1].
NAME: instance-1
ZONE: us-central1-a
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE: 
INTERNAL_IP: 10.128.0.2
EXTERNAL_IP: 34.71.192.233
STATUS: RUNNING

Postgres istemcisini yükleme

Dağıtılan sanal makineye PostgreSQL istemci yazılımını yükleyin.

Sanal makineye bağlanın:

gcloud compute ssh instance-1 --zone=us-central1-a

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a
Updating project ssh metadata...working..Updated [https://www.googleapis.com/compute/v1/projects/test-project-402417].                                                                                                                                                         
Updating project ssh metadata...done.                                                                                                                                                                                                                                              
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.5110295539541121102' (ECDSA) to the list of known hosts.
Linux instance-1 6.12.101+deb13-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.101-1 (2026-08-05) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
student@instance-1:~$ 

Sanal makinenin içinde yazılım çalıştırma komutunu yükleyin:

sudo apt-get update
sudo apt-get install --yes postgresql-client

Beklenen konsol çıkışı:

student@instance-1:~$ sudo apt-get update
sudo apt-get install --yes postgresql-client
Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B]
Get:2 file:/etc/apt/mirrors/debian-security.list Mirrorlist [39 B]                      
Hit:3 https://deb.debian.org/debian trixie InRelease                                    
Get:4 https://deb.debian.org/debian trixie-updates InRelease [47.3 kB]
Get:5 https://deb.debian.org/debian trixie-backports InRelease [54.0 kB]
Get:6 https://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
Hit:10 https://packages.cloud.google.com/apt google-compute-engine-trixie-stable InRelease
...redacted...
update-alternatives: using /usr/share/postgresql/17/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode
Setting up postgresql-client (17+278) ...
Processing triggers for man-db (2.13.1-1) ...
Processing triggers for libc-bin (2.41-12+deb13u3) ...

Örneğe bağlanma

psql kullanarak sanal makineden birincil örneğe bağlanın.

Örneğinize-1 sanal makinesi için açılan SSH oturumunun bulunduğu Cloud Shell sekmesinde.

GCE sanal makinesinden AlloyDB'ye bağlanmak için belirtilen AlloyDB şifresi (PGPASSWORD) değerini ve AlloyDB küme kimliğini kullanın:

export PGPASSWORD=<Noted password>
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"

Beklenen konsol çıkışı:

student@instance-1:~$ export PGPASSWORD=CQhOi5OygD4ps6ty
student@instance-1:~$ export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"
psql (17.10 (Debian 17.10-0+deb13u1), server 17.9)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off, ALPN: postgresql)
Type "help" for help.

postgres=>

psql oturumunu kapatın:

exit

6. Veritabanını Hazırlama

Veritabanı oluşturma, Agent Platform AI entegrasyonunu etkinleştirme, veritabanı nesneleri oluşturma ve verileri içe aktarma.

AlloyDB'ye Gerekli İzinleri Verme

AlloyDB hizmet aracısına Gemini Enterprise Agent Platform izinlerini ekleyin.

En üstteki "+" işaretini kullanarak başka bir Cloud Shell sekmesi açın.

abc505ac4d41f24e.png

Yeni Cloud Shell sekmesinde şunu çalıştırın:

PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-11039]
student@cloudshell:~ (test-project-001-402417)$ gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"
Updated IAM policy for project [test-project-001-402417].
bindings:
- members:
  - serviceAccount:service-4470404856@gcp-sa-alloydb.iam.gserviceaccount.com
  role: roles/aiplatform.user
- members:
...
etag: BwYIEbe_Z3U=
version: 1
 

Sekmede "exit" komutunu çalıştırarak sekmeyi kapatın:

exit

Veritabanı oluşturma

Veritabanı oluşturma hızlı başlangıç kılavuzu.

GCE sanal makine oturumunda şunu çalıştırın:

Veritabanı oluşturma:

psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE quickstart_db"

Beklenen konsol çıkışı:

student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE quickstart_db"
CREATE DATABASE
student@instance-1:~$  

Vertex AI entegrasyonunu etkinleştirme

Veritabanında Vertex AI entegrasyonunu ve pgvector uzantılarını etkinleştirin.

GCE sanal makinesinde şunu çalıştırın:

psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db" -c "CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE"
psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db" -c "CREATE EXTENSION IF NOT EXISTS vector"

Beklenen konsol çıkışı:

student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db" -c "CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE"
psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db" -c "CREATE EXTENSION IF NOT EXISTS vector"
CREATE EXTENSION
CREATE EXTENSION
student@instance-1:~$ 

Verileri İçe Aktarma

Hazırlanan verileri indirip yeni veritabanına aktarın.

GCE sanal makinesinde şunu çalıştırın:

gcloud storage cat gs://cloud-training/gcc/gcc-tech-004/cymbal_demo_schema.sql |psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db"
gcloud storage cat gs://cloud-training/gcc/gcc-tech-004/cymbal_products.csv |psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db" -c "\copy cymbal_products from stdin csv header"
gcloud storage cat gs://cloud-training/gcc/gcc-tech-004/cymbal_inventory.csv |psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db" -c "\copy cymbal_inventory from stdin csv header"
gcloud storage cat gs://cloud-training/gcc/gcc-tech-004/cymbal_stores.csv |psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db" -c "\copy cymbal_stores from stdin csv header"

Beklenen konsol çıkışı:

student@instance-1:~$ gsutil cat gs://cloud-training/gcc/gcc-tech-004/cymbal_demo_schema.sql |psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db"
SET
SET
SET
SET
SET
 set_config 
------------
 
(1 row)
SET
SET
SET
SET
SET
SET
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
ALTER SEQUENCE
ALTER TABLE
ALTER TABLE
ALTER TABLE
student@instance-1:~$ gsutil cat gs://cloud-training/gcc/gcc-tech-004/cymbal_products.csv |psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db" -c "\copy cymbal_products from stdin csv header"
COPY 941
student@instance-1:~$ gsutil cat gs://cloud-training/gcc/gcc-tech-004/cymbal_inventory.csv |psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db" -c "\copy cymbal_inventory from stdin csv header"
COPY 263861
student@instance-1:~$ gsutil cat gs://cloud-training/gcc/gcc-tech-004/cymbal_stores.csv |psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db" -c "\copy cymbal_stores from stdin csv header"
COPY 4654
student@instance-1:~$

7. Yerleştirilmiş öğeleri hesaplama

Verileri içe aktardıktan sonra ürün verileri cymbal_products tablosunda, her mağazadaki mevcut ürün sayısını gösteren envanter cymbal_inventory tablosunda ve mağaza listesi cymbal_stores tablosunda yer alır. Ürünlerin açıklamalarına göre vektör verilerini hesaplamanız gerekir. Bu işlem için google_ml.embedding gibi işlevleri kullanabilirsiniz. Kullanılan teknoloji hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.

Birkaç satır için yerleştirme oluşturmak kolaydır ancak binlerce satırımız varsa bu işlemi nasıl verimli hale getirebiliriz? Bu bölümde, büyük tablolar için yerleştirmelerin nasıl oluşturulacağı ve yönetileceği açıklanmaktadır. Farklı seçenekler ve teknikler hakkında daha fazla bilgi edinmek için kılavuzu inceleyin.

Hızlı Yerleştirme Oluşturma'yı etkinleştirme

AlloyDB örneği IP'sini ve postgres şifresini kullanarak sanal makinenizden psql ile veritabanına bağlanın:

psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db"

google_ml_integration uzantısının sürümünü doğrulayın.

SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';

Sürüm 1.5.2 veya daha yeni olmalıdır. Çıkış örneğini aşağıda görebilirsiniz:

quickstart_db=> SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
 extversion 
------------
 1.6
(1 row)

Varsayılan sürüm 1.6 veya daha yeni olmalıdır. Ancak örneğinizde daha eski bir sürüm gösteriliyorsa muhtemelen güncellenmesi gerekir. Örnek için bakımın devre dışı bırakılıp bırakılmadığını kontrol edin.

google_ml_integration.enable_faster_embedding_generation veritabanı işaretinin açık olarak ayarlandığını doğrulayın. Aynı psql oturumunda işaretin değerini kontrol edin:

show google_ml_integration.enable_faster_embedding_generation;

İşaret doğru konumdaysa beklenen çıkış şu şekilde görünür:

quickstart_db=> show google_ml_integration.enable_faster_embedding_generation;                          
 google_ml_integration.enable_faster_embedding_generation 
----------------------------------------------------------
 on
(1 row)

İşaret değeri "off" ise örneği güncellemeniz gerekir. Dokümanlarda açıklandığı gibi web konsolunu veya gcloud komutunu kullanarak yapın.

psql oturumundan çıkma:

exit;

İşareti gcloud kullanarak güncellemek için şu komutu çalıştırın:

export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud beta alloydb instances update $ADBCLUSTER-pr \
   --database-flags google_ml_integration.enable_faster_embedding_generation=on \
   --region=$REGION \
   --cluster=$ADBCLUSTER \
   --project=$PROJECT_ID \
   --update-mode=FORCE_APPLY

Bu işlem birkaç dakika sürebilir ancak sonunda işaret değeri "açık" olarak değiştirilir. Ardından, sonraki adımlara geçebilirsiniz.

Yerleştirme sütunu oluşturma

psql kullanarak veritabanına bağlanın ve cymbal_products tablosundaki yerleştirme işlevi tarafından kullanılacak vektör veri türüne sahip bir sanal sütun oluşturun.

psql "host=$INSTANCE_IP user=postgres dbname=quickstart_db"

Veritabanına bağlandıktan sonra psql oturumunda şunu çalıştırın:

ALTER TABLE cymbal_products ADD COLUMN embedding vector(768);

Bu komut, gelecekteki yerleştirmeler için sanal bir sütun oluşturur.

Beklenen konsol çıkışı:

quickstart_db=> ALTER TABLE cymbal_products ADD COLUMN embedding vector(768);
ALTER TABLE
quickstart_db=> 

50 satırlık gruplar halinde yerleştirilmiş öğeler oluşturun. Aynı psql oturumunda şunu çalıştırın:

Ne kadar süreceğini ölçmek için zamanlamayı etkinleştirin:

\timing

Komutu çalıştırın:

CALL ai.initialize_embeddings(
    model_id => 'text-embedding-005',
    table_name => 'cymbal_products',
    content_column => 'product_description',
    embedding_column => 'embedding',
    batch_size => 50
);

Yerleştirme oluşturma için konsol çıkışı 2 saniyeden kısa sürede gösterildi:

quickstart_db=> CALL ai.initialize_embeddings(
    model_id => 'text-embedding-005',
    table_name => 'cymbal_products',
    content_column => 'product_description',
    embedding_column => 'embedding',
    batch_size => 50
);
NOTICE:  Initialize embedding completed successfully for table cymbal_products
CALL
Time: 1458.704 ms (00:01.459)
quickstart_db=>

Farklı toplu iş boyutlarıyla denemeler yaparak yürütme süresinin değişip değişmediğini görebilirsiniz.

Varsayılan olarak, ilgili product_description sütunu güncellenirse veya tamamen yeni bir satır eklenirse yerleştirmeler yenilenmez. Ancak incremental_refresh_mode parametresini ayarlayarak bunu yapabilirsiniz.

"product_embeddings" sütunu oluşturun ve otomatik olarak güncellenebilir hale getirin:

ALTER TABLE cymbal_products ADD COLUMN product_embedding vector(768);
CALL ai.initialize_embeddings(
    model_id => 'text-embedding-005',
    table_name => 'cymbal_products',
    content_column => 'product_description',
    embedding_column => 'product_embedding',
    batch_size => 50,
    incremental_refresh_mode => 'transactional'
);

Tabloya yeni bir satır ekleyin.

INSERT INTO "cymbal_products" ("uniq_id", "crawl_timestamp", "product_url", "product_name", "product_description", "list_price", "sale_price", "brand", "item_number", "gtin", "package_size", "category", "postal_code", "available", "product_embedding", "embedding") VALUES ('fd604542e04b470f9e6348e640cff794', NOW(), 'https://example.com/new_product', 'New Cymbal Product', 'This is a new cymbal product description.', 199.99, 149.99, 'Example Brand', 'EB123', '1234567890', 'Single', 'Cymbals', '12345', TRUE, NULL, NULL);

İki yerleştirme sütununu karşılaştırmak için tabloyu sorgulayın:

SELECT uniq_id,embedding, (product_embedding::real[])[1:5] as product_embedding  FROM cymbal_products WHERE uniq_id='fd604542e04b470f9e6348e640cff794';

Çıkışta product_embedding otomatik olarak doldurulurken embedding boş kalır:

quickstart_db=> SELECT uniq_id,embedding, (product_embedding::real[])[1:5] as product_embedding  FROM cymbal_products WHERE uniq_id='fd604542e04b470f9e6348e640cff794';
             uniq_id              | embedding |                       product_embedding                       
----------------------------------+-----------+---------------------------------------------------------------
 fd604542e04b470f9e6348e640cff794 |           | {0.015003494,-0.005349732,-0.059790313,-0.0087091,-0.0271452}
(1 row)

Time: 3.295 ms

8. Benzerlik Arama'yı çalıştırma

AlloyDB AI'yı kullanarak oluşturulan vektör yerleştirmelerine göre benzerlik araması yapın.

SQL sorgusu aynı psql komut satırı arayüzünden veya alternatif olarak AlloyDB Studio'dan yürütülebilir. Çok satırlı ve karmaşık tüm çıkışlar AlloyDB Studio'da daha iyi çalışır.

AlloyDB Studio'ya bağlanma

AlloyDB Studio'yu açmak için aşağıdaki adımları uygulayın:

  1. Google Cloud Console'da PostgreSQL için AlloyDB'nin Kümeler sayfasına gidin.
  2. Web arayüzünü açmak için birincil örneğinizi seçin.

1d7298e7096e7313.png3. Ardından sol tarafta AlloyDB Studio'yu tıklayın:

a33131c72ad29478.png

  1. quickstart_db veritabanını ve postgres kullanıcısını seçin, belirtilen şifreyi girin ve Kimlik Doğrula'yı tıklayın.

4f26532ecdb5bade.png

Bu işlem, AlloyDB Studio arayüzünü açar.

  1. SQL düzenleyiciyi açmak için Untitled Query (Adsız Sorgu) sekmesini seçin.

6696bc771fab9983.png

Bu işlemle, aşağıdaki resimde gösterildiği gibi SQL komutlarını çalıştırabileceğiniz bir düzenleyici açılır:

ae34288e5bf237c7.png

psql komut satırını kullanmayı tercih ederseniz alternatif yolu izleyin ve önceki bölümlerde açıklandığı gibi sanal makinenizin SSH oturumundan veritabanına bağlanın.

Bir sorgu çalıştırarak müşterinin isteğiyle en alakalı olan mevcut ürünlerin listesini alın. "Burada hangi tür meyve ağaçları iyi yetişir?" sorusunun vektör değerini almak için Gemini Enterprise Agent Platform'daki yerleştirme modeline (ürünlerimiz için yerleştirmeler oluşturmak üzere kullandığımız model) iletilen arama ifadesi.

Sorguyu çalıştırın:

SELECT
        cp.product_name,
        left(cp.product_description,80) as description,
        cp.sale_price,
        cs.zip_code,
        (cp.embedding <=> embedding('text-embedding-005','What kind of fruit trees grow well here?')::vector) as distance
FROM
        cymbal_products cp
JOIN cymbal_inventory ci on
        ci.uniq_id=cp.uniq_id
JOIN cymbal_stores cs on
        cs.store_id=ci.store_id
        AND ci.inventory>0
        AND cs.store_id = 1583
ORDER BY
        distance ASC
LIMIT 10;

Beklenen çıktı:

quickstart_db=> SELECT
        cp.product_name,
        left(cp.product_description,80) as description,
        cp.sale_price,
        cs.zip_code,
        (cp.embedding <=> embedding('text-embedding-005','What kind of fruit trees grow well here?')::vector) as distance
FROM
        cymbal_products cp
JOIN cymbal_inventory ci on
        ci.uniq_id=cp.uniq_id
JOIN cymbal_stores cs on
        cs.store_id=ci.store_id
        AND ci.inventory>0
        AND cs.store_id = 1583
ORDER BY
        distance ASC
LIMIT 10;
      product_name       |                                   description                                    | sale_price | zip_code |      distance       
-------------------------+----------------------------------------------------------------------------------+------------+----------+---------------------
 Cherry Tree             | This is a beautiful cherry tree that will produce delicious cherries. It is an d |      75.00 |    93230 | 0.43922018972266397
 Meyer Lemon Tree        | Meyer Lemon trees are California's favorite lemon tree! Grow your own lemons by  |         34 |    93230 |  0.4685112926118228
 Toyon                   | This is a beautiful toyon tree that can grow to be over 20 feet tall. It is an e |      10.00 |    93230 |  0.4835677149651668
 California Lilac        | This is a beautiful lilac tree that can grow to be over 10 feet tall. It is an d |       5.00 |    93230 |  0.4947204525907498
 California Peppertree   | This is a beautiful peppertree that can grow to be over 30 feet tall. It is an e |      25.00 |    93230 |  0.5054166905547247
 California Black Walnut | This is a beautiful walnut tree that can grow to be over 80 feet tall. It is a d |     100.00 |    93230 |  0.5084219510932597
 California Sycamore     | This is a beautiful sycamore tree that can grow to be over 100 feet tall. It is  |     300.00 |    93230 |  0.5140519790508755
 Coast Live Oak          | This is a beautiful oak tree that can grow to be over 100 feet tall. It is an ev |     500.00 |    93230 |  0.5143126438081371
 Fremont Cottonwood      | This is a beautiful cottonwood tree that can grow to be over 100 feet tall. It i |     200.00 |    93230 |  0.5174774727252058
 Madrone                 | This is a beautiful madrona tree that can grow to be over 80 feet tall. It is an |      50.00 |    93230 |  0.5227400803389093

Arama ifadesine anlamsal olarak yakın açıklamalar içeren 10 ürün gösterilir. En benzer ürün en üstte olacak şekilde, ürünler aralarındaki mesafeye göre sıralanır.

9. Yanıtı İyileştir

Sorgunun sonucunu kullanarak bir istemci uygulamasına verilen yanıtı iyileştirebilir ve sağlanan sorgu sonuçlarını temel üretken dil modeline yönelik istemin bir parçası olarak kullanarak anlamlı bir çıktı hazırlayabilirsiniz.

Bunu yapmak için Vector Search'ten elde edilen en iyi sonuçları içeren bir JSON oluşturursunuz. Ardından, anlamlı bir çıkış oluşturmak üzere Agent Platform'daki bir üretken yapay zeka modeline yönelik isteme ek olarak bu JSON'u kullanırsınız. İlk adımda JSON oluşturulur, ardından Agent Platform Studio'da test edilir ve son adımda tüm bunlar bir uygulamada kullanılabilecek tek bir SQL ifadesinde birleştirilir.

JSON biçiminde çıkış oluşturma

Sorguyu, çıkışı JSON biçiminde oluşturacak ve Agent Platform'a iletilecek yalnızca bir satır döndürecek şekilde değiştirin.

Sorguyu çalıştırın:

WITH trees as (
SELECT
        cp.product_name,
        left(cp.product_description,80) as description,
        cp.sale_price,
        cs.zip_code,
        cp.uniq_id as product_id
FROM
        cymbal_products cp
JOIN cymbal_inventory ci on
        ci.uniq_id=cp.uniq_id
JOIN cymbal_stores cs on
        cs.store_id=ci.store_id
        AND ci.inventory>0
        AND cs.store_id = 1583
ORDER BY
        (cp.embedding <=> embedding('text-embedding-005','What kind of fruit trees grow well here?')::vector) ASC
LIMIT 1)
SELECT json_agg(trees) FROM trees;

Çıktıdaki JSON:

[{"product_name":"Cherry Tree","description":"This is a beautiful cherry tree that will produce delicious cherries. It is an d","sale_price":75.00,"zip_code":93230,"product_id":"d536e9e823296a2eba198e52dd23e712"}]

İstemi Vertex AI Studio'da çalıştırma

Oluşturulan JSON'u, Vertex AI Studio'daki üretken yapay zeka modeline istemin bir parçası olarak sağlamak için kullanın.

Google Cloud Console'da Gemini Enterprise Agent Platform Studio'yu açın.

154dc1a290c37f.jpeg

İsteminizi arayüze yazın:

fd3abd6062009ee6.jpeg

Aşağıdaki istemi girin:

You are a friendly advisor helping to find a product based on the customer's needs.

Based on the client request we have loaded a list of products closely related to search.

The list in JSON format with list of values like {"product_name":"name","description":"some description","sale_price":10,"zip_code": 10234, "produt_id": "02056727942aeb714dc9a2313654e1b0"}

Here is the list of products:

{"product_name":"Cherry Tree","description":"This is a beautiful cherry tree that will produce delicious cherries. It is an d","sale_price":75.00,"zip_code":93230,"product_id":"d536e9e823296a2eba198e52dd23e712"}

The customer asked "What tree is growing the best here?"

You should give information about the product, price and some supplemental information

edeea32a69d81aee.jpeg

İstemi çalıştırdığımızda elde ettiğimiz sonuç :

831038ea1d819be6.jpeg

Yanıt; ağaç ve konumla ilgili bilgilere dayalı olarak modelin harici kaynaklardan aldığı fiyat, açıklama ve ek bilgileri içerir.

İstemi PSQL'de çalıştırma

Benzer bir sonuç, doğrudan veritabanında SQL kullanarak üretken bir modelden aynı yanıtı almak için Gemini Enterprise Agent Platform ile AlloyDB AI entegrasyonunu kullanarak elde edilebilir. gemini-3.6-flash modelini kullanabilmek için kaydetmeniz gerekir.

gemini-3.6-flash modelini kaydetme:

AlloyDB Studio çalıştırmasında:

CALL google_ml.create_model(
model_id => 'gemini-3.6-flash',
model_request_url => 'https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3.6-flash:generateContent',
model_provider => 'google',
model_type => 'llm'
);

Kayıtlı modellerin listesini, google_ml.model_info_view'dan bilgi seçerek istediğiniz zaman doğrulayabilirsiniz.

SELECT model_id,model_type FROM google_ml.model_info_view WHERE model_id ILIKE '%flash%';

Örnek çıktı

quickstart_db=> SELECT model_id,model_type FROM google_ml.model_info_view WHERE model_id ILIKE '%flash%';
       model_id        | model_type 
-----------------------+------------
 gemini-3.6-flash      | llm
 gemini-2.0-flash      | llm
 gemini-2.5-flash      | llm
 gemini-2.0-flash-lite | llm
 gemini-2.5-flash-lite | llm
(5 rows)

Artık SQL kullanarak gemini-3.6-flash modeli için istemin bir parçası olarak alt sorguda oluşturulan JSON'u kullanabilirsiniz.

psql veya AlloyDB Studio oturumunuzda aşağıdaki sorguyu çalıştırın:

WITH trees AS (
SELECT
        cp.product_name,
        cp.product_description AS description,
        cp.sale_price,
        cs.zip_code,
        cp.uniq_id AS product_id
FROM
        cymbal_products cp
JOIN cymbal_inventory ci ON
        ci.uniq_id = cp.uniq_id
JOIN cymbal_stores cs ON
        cs.store_id = ci.store_id
        AND ci.inventory>0
        AND cs.store_id = 1583
ORDER BY
        (cp.embedding <=> embedding('text-embedding-005',
        'What kind of fruit trees grow well here?')::vector) ASC
LIMIT 1),
prompt AS (
SELECT
        'You are a friendly advisor helping to find a product based on the customer''s needs.
Based on the client request we have loaded a list of products closely related to search.
The list in JSON format with list of values like {"product_name":"name","product_description":"some description","sale_price":10}
Here is the list of products:' || json_agg(trees) || 'The customer asked "What kind of fruit trees grow well here?"
You should give information about the product, price and some supplemental information' AS prompt_text
FROM
        trees),
response AS (
SELECT
        google_ml.predict_row( model_id =>'gemini-3.6-flash',
        request_body => json_build_object('contents',
        json_build_object('role',
        'user',
        'parts',
        json_build_object('text',
        prompt_text))))->'candidates'->0->'content'->'parts'->0->'text' AS resp
FROM
        prompt)
SELECT
REPLACE(resp::text, '\n', CHR(10))
FROM
        response;

Beklenen çıktı aşağıda verilmiştir. Üretken yapay zeka modellerinin deterministik olmayan yapısı nedeniyle çıktı farklı olabilir:

"Hello there! I'd be delighted to help you pick out a wonderful fruit tree for your space. Based on our local selection, a fantastic option that grows very well is the **Cherry Tree**! Here are the details on this beautiful tree: * **Product:** Cherry Tree * **Price:** $75.00 ### Why it's a great choice: * **Delicious Harvest:** It produces tasty, fresh cherries right in your backyard. * **Size & Benefits:** It's a deciduous tree that grows to about 15 feet tall, making it ideal for providing both lovely shade and a bit of privacy. * **Year-Round Beauty:** It features lush, dark green leaves throughout the summer that transform into a stunning red in the autumn. * **Growing Requirements:** Cherry trees thrive best in cool, moist climates with sandy soil, and are perfectly suited for USDA hardiness zones 4 through 9. Please let me know if you have any questions about planting or if you'd like help adding this to your order!"

10. Vektör dizini oluşturma

Bu veri kümesi küçük olduğundan yanıt süreleri öncelikle Gemini Enterprise Agent Platform'daki modellerle etkileşime bağlıdır. Ancak milyonlarca vektörü sorguladığınızda, vektör aramasının kendisi yanıt süresinin önemli bir bölümünü tüketebilir ve veritabanınızdaki yükü artırabilir. Arama performansını artırmak için vektör dizini oluşturabilirsiniz.

ScaNN dizini oluşturma

ScaNN dizini oluşturmak için ek bir uzantı etkinleştirmeniz gerekir. alloydb_scann uzantısı, Google ScaNN algoritmasını kullanarak Yaklaşık En Yakın Komşu (ANN) vektör dizinleriyle çalışmak için bir arayüz sağlar.

AlloyDB Studio'da çalıştırma:

CREATE EXTENSION IF NOT EXISTS alloydb_scann;

Dizin, MANUEL veya AUTO modunda oluşturulabilir. MANUEL modu varsayılan olarak etkindir. Bu modda, diğer dizinlerde olduğu gibi bir dizin oluşturup bunu koruyabilirsiniz. Ancak AUTO modunu etkinleştirirseniz sizden herhangi bir bakım gerektirmeyen dizin oluşturabilirsiniz. Tüm seçenekler hakkında ayrıntılı bilgiyi dokümanlarda bulabilirsiniz. AUTO modunda dizin oluşturmak için yeterli satır yok. Bu nedenle, dizini MANUAL olarak oluşturacaksınız.

AlloyDB Studio'da çalıştırma:

CREATE INDEX cymbal_products_embeddings_scann ON cymbal_products
  USING scann (embedding cosine)
  WITH (num_leaves=10, max_num_levels = 1);

Dizin parametrelerini ayarlama hakkında bilgiyi belgelerde bulabilirsiniz.

Beklenen çıktı:

quickstart_db=> CREATE INDEX cymbal_products_embeddings_scann ON cymbal_products
  USING scann (embedding cosine)
  WITH (num_leaves=10, max_num_levels = 1);
CREATE INDEX
quickstart_db=>

Yanıtı Karşılaştır

Anlamsal aramada en yüksek değeri elde etmek için kullandığımız sorguyu tekrarlayın:

WITH trees as (
SELECT
        cp.product_name,
        left(cp.product_description,80) as description,
        cp.sale_price,
        cs.zip_code,
        cp.uniq_id as product_id
FROM
        cymbal_products cp
JOIN cymbal_inventory ci on
        ci.uniq_id=cp.uniq_id
JOIN cymbal_stores cs on
        cs.store_id=ci.store_id
        AND ci.inventory>0
        AND cs.store_id = 1583
ORDER BY
        (cp.embedding <=> embedding('text-embedding-005','What kind of fruit trees grow well here?')::vector) ASC
LIMIT 1)
SELECT json_agg(trees) FROM trees;

Beklenen çıktı:

[{"product_name":"Cherry Tree","description":"This is a beautiful cherry tree that will produce delicious cherries. It is an d","sale_price":75.00,"zip_code":93230,"product_id":"d536e9e823296a2eba198e52dd23e712"}]

Çıkışta aynı "Kiraz Ağacı" var.

Dizin kullanımını doğrulayın:

EXPLAIN (analyze) 
WITH trees as (
SELECT
        cp.product_name,
        left(cp.product_description,80) as description,
        cp.sale_price,
        cs.zip_code,
        cp.uniq_id as product_id
FROM
        cymbal_products cp
JOIN cymbal_inventory ci on
        ci.uniq_id=cp.uniq_id
JOIN cymbal_stores cs on
        cs.store_id=ci.store_id
        AND ci.inventory>0
        AND cs.store_id = 1583
ORDER BY
        (cp.embedding <=> embedding('text-embedding-005','What kind of fruit trees grow well here?')::vector) ASC
LIMIT 1)
SELECT json_agg(trees) FROM trees;

Beklenen çıktı (netlik için sansürlenmiştir):

...
 Aggregate  (cost=27.24..27.25 rows=1 width=32) (actual time=0.964..0.965 rows=1 loops=1)
   ->  Subquery Scan on trees  (cost=18.91..27.23 rows=1 width=142) (actual time=0.953..0.954 rows=1 loops=1)
         ->  Limit  (cost=18.91..27.22 rows=1 width=158) (actual time=0.948..0.949 rows=1 loops=1)
               ->  Nested Loop  (cost=18.91..7126.86 rows=855 width=158) (actual time=0.948..0.948 rows=1 loops=1)
                     ->  Nested Loop  (cost=18.63..7103.59 rows=855 width=907) (actual time=0.931..0.931 rows=1 loops=1)
                           ->  Index Scan using cymbal_products_embeddings_scann on cymbal_products cp  (cost=18.21..343.15 rows=942 width=903) (actual time=0.906..0.908 rows=2 loops=1)
                                 Order By: (embedding <=> '[-0.106554024,0.035774965,-0.027267234,-0.045653425,-0.03286045,0.02124319...

Çıktıdan, sorgunun "cymbal_products_embeddings_scann üzerinde cymbal_products kullanılarak yapılan dizin taraması" kullandığını görebilirsiniz.

Sorgu, dizini oluşturmadan önce arama sonuçlarınızın en üstünde görünen aynı kiraz ağacını döndürür. Yaklaşık en yakın komşu (ANN) dizinleri, arama hızını artırmak için mutlak doğruluktan ödün verdiğinden dizine dayalı sorgular bazen dizine eklenmemiş tam arama sonuçlarından biraz farklı üst sonuçlar döndürebilir. Ancak vektör dizini, yüksek doğruluğu korurken performansta önemli bir artış sağlar.

Daha fazla bilgi edinmek için diğer vektör dizini türlerini deneyebilir veya doküman sayfasında LangChain entegrasyonuyla ilgili daha fazla laboratuvar ve örnek bulabilirsiniz.

11. Ortamı temizleme

Laboratuvarı tamamladığınızda AlloyDB örneklerini ve kümeyi yok edin.

AlloyDB kümesini ve tüm örnekleri silme

Küme, force seçeneğiyle yok edilir. Bu seçenek, kümeye ait tüm örnekleri de siler.

Terminalinizin bağlantısı kesildiyse tekrar bağlanın ve Cloud Shell'de proje ile ortam değişkenlerini tanımlayın:

gcloud config set project <YOUR_PROJECT_ID>
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export PROJECT_ID=$(gcloud config get-value project)

Kümeyi silme:

gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-001-402417)$ gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force
All of the cluster data will be lost when the cluster is deleted.

Do you want to continue (Y/n)?  Y

Operation ID: operation-1697820178429-6082890a0b570-4a72f7e4-4c5df36f
Deleting cluster...done.   

AlloyDB Yedeklemelerini Silme

Kümenin tüm AlloyDB yedeklerini silin:

for i in $(gcloud alloydb backups list \
  --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" \
  --format="value(name)" \
  --sort-by=~createTime) ; do \
  gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-001-402417)$ for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done
Operation ID: operation-1697826266108-60829fb7b5258-7f99dc0b-99f3c35f
Deleting backup...done.                                                                                                                                                                                                                                                            

Artık VM'mizi kaldırabiliriz.

GCE sanal makinesini silme

Cloud Shell'de şunu çalıştırın:

export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
    --zone=$ZONE \
    --quiet

Beklenen konsol çıkışı:

student@cloudshell:~ (test-project-001-402417)$ export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
    --zone=$ZONE \
    --quiet
Deleted 

12. Tebrikler

Codelab'i tamamladığınız için tebrik ederiz.

Bu laboratuvar, Google Cloud ile Üretime Hazır Yapay Zeka Öğrenme Rotası'nın bir parçasıdır.

  • Prototip aşamasından üretim aşamasına geçiş yapmak için tüm müfredatı inceleyin.
  • İlerleme durumunuzu #ProductionReadyAI hashtag'iyle paylaşın.

İşlediğimiz konular

  • AlloyDB kümesini ve birincil örneğini dağıtma
  • Google Compute Engine sanal makinesinden AlloyDB'ye bağlanma
  • Veritabanı oluşturma ve AlloyDB AI'yı etkinleştirme
  • Veritabanına veri yükleme
  • AlloyDB Studio'yu kullanma
  • AlloyDB'de Gemini Enterprise Agent Platform yerleştirme modelini kullanma
  • Gemini Enterprise Agent Platform Studio'yu kullanma
  • Gemini Enterprise Agent Platform üretken modelini kullanarak sonucu zenginleştirme
  • Vektör dizini kullanarak performansı artırma

13. Anket

Çıkış:

Bu eğitimi nasıl kullanacaksınız?

Sadece okuyun Okuyun ve alıştırmaları tamamlayın