1. Introduzione
In questo codelab imparerai a utilizzare l'integrazione dell'AI di Cloud SQL per PostgreSQL combinando la ricerca vettoriale con gli incorporamenti di Gemini Enterprise Agent Platform.

Prerequisiti
- Una conoscenza di base di Google Cloud e della console Google Cloud
- Esperienza di base con l'interfaccia a riga di comando e Cloud Shell
In questo lab proverai a:
- Esegui il deployment di un'istanza Cloud SQL per PostgreSQL
- Crea un database e abilita l'integrazione di Cloud SQL AI
- Carica i dati nel database
- Utilizza Cloud SQL Studio
- Genera embedding utilizzando Gemini Enterprise Agent Platform in Cloud SQL
- Utilizzare Agent Platform Studio
- Arricchisci i risultati delle query utilizzando un modello generativo Gemini Enterprise Agent Platform
- Migliorare le prestazioni delle query utilizzando un indice vettoriale HNSW
Che cosa ti serve
- Un account Google Cloud e un progetto Google Cloud
- Un browser web come Chrome
2. Configurazione e requisiti
Configurazione del progetto
- Accedi alla console Google Cloud. Se non hai ancora un Account Google (Gmail o Google Workspace), devi crearne uno.
Utilizza un account personale anziché un account di lavoro o della scuola.
- Crea un nuovo progetto o riutilizzane uno esistente. Per creare un nuovo progetto nella console Google Cloud, fai clic su Seleziona un progetto nella barra degli strumenti.

Nella finestra di dialogo Seleziona un progetto, fai clic su Nuovo progetto.

Nella finestra di dialogo, inserisci un nome progetto e seleziona la posizione.

- Il Nome progetto è il nome visualizzato per i partecipanti a questo progetto. Il nome del progetto non viene utilizzato dalle API di Google e può essere modificato in qualsiasi momento.
- L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo l'impostazione). La console Google Cloud genera automaticamente un ID univoco, ma puoi personalizzarlo. Se non ti piace l'ID generato, puoi generarne un altro casuale o fornirne uno tuo per verificarne la disponibilità. Nella maggior parte dei codelab, fai riferimento all'ID progetto, che in genere è identificato con il segnaposto
. - Un terzo valore, il numero di progetto, viene utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione Creare e gestire progetti.
Abilita fatturazione
Configurare un account di fatturazione personale
Se hai configurato la fatturazione utilizzando i crediti Google Cloud, puoi saltare questo passaggio.
Per configurare un account di fatturazione personale, attiva la fatturazione nella console Google Cloud Billing.
Note:
- Il completamento di questo lab costa meno di 5 $in risorse Google Cloud.
- Segui i passaggi alla fine di questo lab per eliminare le risorse ed evitare ulteriori addebiti.
- I nuovi utenti hanno diritto alla prova senza costi di 300$.
Avvia Cloud Shell
Sebbene tu possa gestire Google Cloud da remoto dal tuo computer, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Nella barra degli strumenti della console Google Cloud, fai clic su Attiva Cloud Shell:

In alternativa, premi G e poi S nella console Google Cloud o apri Cloud Shell.
Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere il terminale connesso:

Questa macchina virtuale è caricata con tutti gli strumenti di sviluppo di cui hai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando le prestazioni e l'autenticazione della rete. Tutto il lavoro in questo codelab può essere svolto all'interno di un browser.
3. Abilita API
Per utilizzare Cloud SQL, Compute Engine, Service Networking e Gemini Enterprise Agent Platform, abilita le rispettive API nel tuo progetto Google Cloud.
Nel terminale Cloud Shell, assicurati che l'ID progetto sia impostato:
gcloud config set project <PROJECT_ID>
Imposta la variabile di ambiente PROJECT_ID:
PROJECT_ID=$(gcloud config get-value project)
Attiva tutti i servizi richiesti:
gcloud services enable sqladmin.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com
Output previsto:
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 sqladmin.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.
Puoi leggere informazioni su ogni API abilitata nella documentazione.
4. Crea un'istanza Cloud SQL
Crea un'istanza Cloud SQL con l'integrazione del database Gemini Enterprise Agent Platform.
Crea password database
Definisci una password per l'utente del database predefinito. Puoi definire una password personalizzata o utilizzare una funzione casuale per generarla:
export CLOUDSQL_PASSWORD=$(openssl rand -hex 16)
Visualizza il valore della password generata:
echo $CLOUDSQL_PASSWORD
Prendi nota della password generata per utilizzarla in un secondo momento.
Crea un'istanza Cloud SQL per PostgreSQL
Le istanze Cloud SQL possono essere create utilizzando diversi metodi, tra cui la console Google Cloud, Terraform o Google Cloud CLI (gcloud). In questo codelab utilizzerai gcloud. Per scoprire come creare un'istanza con altri strumenti, consulta la documentazione Crea istanze.
In Cloud Shell, esegui questo comando per creare l'istanza:
gcloud sql instances create my-cloudsql-instance \
--database-version=POSTGRES_18 \
--tier=db-custom-1-3840 \
--region=us-central1 \
--edition=ENTERPRISE \
--enable-google-ml-integration \
--database-flags cloudsql.enable_google_ml_integration=on
Dopo aver creato l'istanza, imposta una password per l'utente predefinito (postgres) e verifica di poterti connettere:
gcloud sql users set-password postgres \
--instance=my-cloudsql-instance \
--password=$CLOUDSQL_PASSWORD
Connettiti all'istanza utilizzando gcloud sql connect. Quando richiesto, inserisci la password:
gcloud sql connect my-cloudsql-instance --user=postgres
Esci dalla sessione psql premendo Ctrl+D o inserendo exit:
exit
Abilitare l'integrazione di Gemini Enterprise Agent Platform
Concedi il ruolo IAM necessario al service account Cloud SQL per abilitare l'integrazione di Gemini Enterprise Agent Platform.
Recupera l'email del service account Cloud SQL ed esportala come variabile di ambiente:
SERVICE_ACCOUNT_EMAIL=$(gcloud sql instances describe my-cloudsql-instance --format="value(serviceAccountEmailAddress)")
echo $SERVICE_ACCOUNT_EMAIL
Concedi il ruolo roles/aiplatform.user al service account Cloud SQL:
PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
--role="roles/aiplatform.user"
Per ulteriori informazioni sulla creazione e la configurazione delle istanze, consulta Integrare Cloud SQL con Gemini Enterprise Agent Platform.
5. Prepara il database
Crea un database e abilita il supporto vettoriale.
Crea un database
Crea un database denominato quickstart_db. Puoi creare database utilizzando client di database (come psql), Google Cloud CLI o Cloud SQL Studio. In questo passaggio, utilizza gcloud.
In Cloud Shell, esegui questo comando per creare il database:
gcloud sql databases create quickstart_db --instance=my-cloudsql-instance
Attivare le estensioni
Per lavorare con Gemini Enterprise Agent Platform e i vettori, attiva due estensioni nel database quickstart_db: google_ml_integration e vector.
In Cloud Shell, connettiti al database:
gcloud sql connect my-cloudsql-instance --database quickstart_db --user=postgres
Quando richiesto, inserisci la password del database.
Nella sessione SQL, esegui i seguenti comandi:
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
CREATE EXTENSION IF NOT EXISTS vector CASCADE;
Esci dalla sessione SQL:
exit;
6. Carica dati
Crea tabelle nel database e carica i dati utilizzando i file del set di dati fittizio Cymbal Store archiviati in un bucket Cloud Storage pubblico in formato CSV.
Innanzitutto, crea gli oggetti schema richiesti. Esegui gcloud sql connect e gcloud storage per scaricare e importare lo schema:
In Cloud Shell, esegui questo comando (quando ti viene chiesto, inserisci la password creata per l'istanza):
gcloud storage cat gs://cloud-training/gcc/gcc-tech-004/cymbal_demo_schema.sql | gcloud sql connect my-cloudsql-instance --database quickstart_db --user=postgres
Questo comando si connette al database ed esegue il codice SQL scaricato per creare tabelle, indici e sequenze.
Poi scarica i file di dati CSV da Cloud Storage:
gcloud storage cp gs://cloud-training/gcc/gcc-tech-004/cymbal_products.csv .
gcloud storage cp gs://cloud-training/gcc/gcc-tech-004/cymbal_inventory.csv .
gcloud storage cp gs://cloud-training/gcc/gcc-tech-004/cymbal_stores.csv .
Connettiti al database:
gcloud sql connect my-cloudsql-instance --database quickstart_db --user=postgres
Importa i dati dai file CSV:
\copy cymbal_products from 'cymbal_products.csv' csv header
\copy cymbal_inventory from 'cymbal_inventory.csv' csv header
\copy cymbal_stores from 'cymbal_stores.csv' csv header
Se utilizzi i tuoi dati e i file CSV sono compatibili con lo strumento di importazione di Cloud SQL nella console Google Cloud, puoi utilizzare la console anziché la riga di comando.
7. Crea incorporamenti
Crea incorporamenti per le descrizioni dei prodotti utilizzando il modello text-embedding-005 di Gemini Enterprise Agent Platform e archiviali come dati vettoriali.
Se la sessione è stata disconnessa, connettiti al database:
gcloud sql connect my-cloudsql-instance --database quickstart_db --user=postgres
Crea una colonna generata denominata embedding nella tabella cymbal_products utilizzando la funzione embedding. Questo comando crea una colonna generata archiviata che contiene gli embedding vettoriali generati dalla colonna product_description per tutte le righe della tabella. Il modello è specificato come primo parametro e la colonna di testo di origine come secondo parametro:
ALTER TABLE cymbal_products ADD COLUMN embedding vector(768) GENERATED ALWAYS AS (google_ml.embedding('text-embedding-005', product_description)) STORED;
Per 900-1000 righe, questa procedura richiede in genere da 1 a 5 minuti.
Quando inserisci una nuova riga nella tabella o aggiorni product_description in una riga esistente, la colonna embedding viene aggiornata automaticamente.
8. Esegui la ricerca di similarità
Esegui una ricerca di somiglianze confrontando i vector embedding calcolati per le descrizioni dei prodotti con l'embedding per una query di ricerca.
Puoi eseguire query SQL dalla riga di comando utilizzando gcloud sql connect o da Cloud SQL Studio. Cloud SQL Studio offre un modo più comodo per modificare ed eseguire istruzioni SQL lunghe con più righe nell'output.
Avvia Cloud SQL Studio
- Nella console Google Cloud, vai a Istanze Cloud SQL e fai clic su
my-cloudsql-instance.

- Nel menu di navigazione, fai clic su Cloud SQL Studio.

- Nella finestra di dialogo di autenticazione, inserisci il nome del database e le credenziali:
- Database:
quickstart_db - Utente:
postgres - Password:
- Database:
- Fai clic su Authenticate (Autentica).

- Fai clic sulla scheda Editor per aprire l'editor SQL.

Esegui query
Esegui una query per recuperare i 10 prodotti più pertinenti per la query del cliente: "Che tipo di alberi da frutto crescono bene qui?"
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;
In Cloud SQL Studio, inserisci la query e fai clic su Esegui (o esegui la query nella sessione psql):

La query restituisce i prodotti corrispondenti ordinati in base alla distanza coseno:
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 (10 rows)
9. Migliorare la risposta dell'LLM utilizzando i dati recuperati
Migliora la risposta dell'AI generativa a un'applicazione client passando i risultati della query come contesto fondato in un prompt a un modello linguistico di base di Gemini Enterprise Agent Platform.
A questo scopo:
- Genera un payload JSON dal risultato della ricerca vettoriale in Cloud SQL.
- Testa il prompt in Agent Platform Studio.
- Esegui il prompt end-to-end direttamente da SQL utilizzando l'integrazione
google_ml.
Generare l'output in formato JSON
Modifica la query per formattare il risultato come JSON e restituire una riga:
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;
Output JSON previsto:
[{"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"}]
Esegui il prompt in Agent Platform Studio
Fornisci il JSON generato come contesto in un prompt a un modello generativo in Agent Platform Studio.
- Nella console Google Cloud, apri Agent Platform Studio.

- Inserisci il seguente prompt in Agent Platform Studio:

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, "product_id": "02056727942aeb714dc9a2313654e1b0"}
Here is the list of products:
<JSON_OUTPUT>
The customer asked "What tree is growing the best here?"
You should give information about the product, price and some supplemental information.
Do not ask any additional questions and assume location based on the zip code provided in the list of products.
Sostituisci con la risposta JSON della query:
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, "product_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.
Do not ask any additional questions and assume location based on the zip code provided in the list of products.

- Esegui il prompt.

La risposta include prezzo, descrizione e informazioni supplementari che il modello ottiene da fonti esterne in base alle informazioni sull'albero e sulla posizione.
Esegui il prompt in psql
Puoi anche utilizzare l'integrazione di Cloud SQL AI con Gemini Enterprise Agent Platform per ricevere risposte da un modello generativo direttamente in SQL. Innanzitutto, registra il modello.
- Se necessario, esegui l'upgrade dell'estensione alla versione 1.4.3 o successive. Connettiti a
quickstart_dbed esegui:
SELECT extversion from pg_extension where extname='google_ml_integration';
Se la versione restituita è precedente a 1.4.3, esegui:
ALTER EXTENSION google_ml_integration UPDATE TO '1.4.3';
- Controlla il flag di database
google_ml_integration.enable_model_support:
SHOW google_ml_integration.enable_model_support;
Se il flag è off, aggiorna il flag di database in Cloud Shell:
gcloud sql instances patch my-cloudsql-instance \
--database-flags google_ml_integration.enable_model_support=on,cloudsql.enable_google_ml_integration=on
Questa operazione richiede da 1 a 3 minuti. Verifica di nuovo l'impostazione:
SHOW google_ml_integration.enable_model_support;
- Registra il modello
gemini-3.5-flashper generare risposte (sostituiscicon l'ID progetto):
CALL
google_ml.create_model(
model_id => 'gemini-3.5-flash',
model_request_url => 'https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3.5-flash:generateContent',
model_provider => 'google',
model_auth_type => 'cloudsql_service_agent_iam');
Verifica i modelli registrati:
SELECT model_id, model_type FROM google_ml.model_info_view WHERE model_id='gemini-3.5-flash';
- Esegui la query SQL completa per recuperare i risultati della ricerca vettoriale e trasmetterli direttamente a
gemini-3.5-flash:
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.5-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;
Output previsto:
"Hello there! If you're looking for a wonderful fruit tree to plant, I have a fantastic option for you: ### **Cherry Tree** * **Price:** $75.00 * **Product ID:** `d536e9e823296a2eba198e52dd23e712` --- ### **Why it's a great choice:** * **Fruit & Shade:** Not only will it produce delicious, sweet cherries, but it also grows into a beautiful 15-foot deciduous tree that provides excellent shade and privacy for your yard. * **Seasonal Beauty:** Its leaves are a lovely dark green throughout the summer and transition into a striking red during the fall. * **Ideal Growing Conditions:** Cherry trees thrive best in cool, moist climates with sandy soil and are suitable for **USDA hardiness zones 4–9**. If your local climate matches these conditions, this Cherry Tree would make a beautiful and tasty addition to your garden! Let me know if you'd like more details or help placing an order."
10. Crea un indice dei vicini più prossimi
Per i set di dati di grandi dimensioni con milioni di vettori, la ricerca vettoriale può richiedere risorse di calcolo significative. Per migliorare le prestazioni delle query, crea un indice sugli embedding vettoriali.
Crea un indice HNSW
Hierarchical Navigable Small World (HNSW) è un indice vettoriale basato su grafi.
Per creare un indice HNSW sulla colonna embedding, specifica la funzione di distanza (vector_cosine_ops) e i parametri facoltativi come m e ef_construction. Per saperne di più, consulta la sezione Utilizzare gli incorporamenti vettoriali.
CREATE INDEX cymbal_products_embeddings_hnsw ON cymbal_products
USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);
Output previsto:
quickstart_db=> CREATE INDEX cymbal_products_embeddings_hnsw ON cymbal_products USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64); CREATE INDEX quickstart_db=>
Confrontare il rendimento delle query
Esegui la query di ricerca vettoriale con EXPLAIN (ANALYZE) per verificare che lo strumento di pianificazione delle query utilizzi l'indice:
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;
Output previsto:
Aggregate (cost=779.12..779.13 rows=1 width=32) (actual time=1.066..1.069 rows=1 loops=1)
-> Subquery Scan on trees (cost=769.05..779.12 rows=1 width=142) (actual time=1.038..1.041 rows=1 loops=1)
-> Limit (cost=769.05..779.11 rows=1 width=158) (actual time=1.022..1.024 rows=1 loops=1)
-> Nested Loop (cost=769.05..9339.69 rows=852 width=158) (actual time=1.020..1.021 rows=1 loops=1)
-> Nested Loop (cost=768.77..9316.48 rows=852 width=945) (actual time=0.858..0.859 rows=1 loops=1)
-> Index Scan using cymbal_products_embeddings_hnsw on cymbal_products cp (cost=768.34..2572.47 rows=941 width=941) (actual time=0.532..0.539 rows=3 loops=1)
...
Planning Time: 112.398 ms
Execution Time: 1.221 ms
Il piano di esecuzione mostra Index Scan using cymbal_products_embeddings_hnsw.
Esegui la query senza EXPLAIN:
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;
Output previsto:
[{"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"}]
Per ulteriori informazioni ed esempi con LangChain e indici vettoriali, consulta la documentazione Panoramica di Cloud SQL AI.
11. Libera spazio
Elimina l'istanza Cloud SQL al termine del codelab.
In Cloud Shell, imposta le variabili di progetto e di ambiente se la sessione è stata interrotta:
export INSTANCE_NAME=my-cloudsql-instance
export PROJECT_ID=$(gcloud config get-value project)
Elimina l'istanza:
gcloud sql instances delete $INSTANCE_NAME --project=$PROJECT_ID
Output previsto:
student@cloudshell:~$ gcloud sql instances delete $INSTANCE_NAME --project=$PROJECT_ID All of the instance data will be lost when the instance is deleted. Do you want to continue (Y/n)? y Deleting Cloud SQL instance...done. Deleted [https://sandbox.googleapis.com/v1beta4/projects/test-project-001-402417/instances/my-cloudsql-instance].
12. Complimenti
Complimenti! Hai completato il codelab.
Questo lab fa parte del percorso di apprendimento per l'AI pronta per la produzione con Google Cloud.
- Esplora il curriculum completo per colmare il divario tra prototipo e produzione.
- Condividi i tuoi progressi con l'hashtag
#ProductionReadyAI.
Riepilogo
Hai imparato a:
- Esegui il deployment di un'istanza Cloud SQL per PostgreSQL
- Crea un database e abilita l'integrazione di Cloud SQL AI
- Carica i dati nel database
- Utilizza Cloud SQL Studio
- Utilizzare un modello di incorporamento di Gemini Enterprise Agent Platform in Cloud SQL
- Utilizzare Agent Platform Studio
- Arricchisci i risultati delle query utilizzando un modello generativo Gemini Enterprise Agent Platform
- Migliorare le prestazioni delle query utilizzando un indice vettoriale
Prova il codelab sugli incorporamenti vettoriali dell'AI di AlloyDB con l'indice ScaNN anziché HNSW.