1. Introdução
Neste codelab, você vai aprender a usar a integração de IA do Cloud SQL para PostgreSQL combinando a pesquisa vetorial com os embeddings da Gemini Enterprise Agent Platform.

Pré-requisitos
- Conhecimento básico do Google Cloud e do console do Google Cloud
- Experiência básica com a interface de linha de comando e o Cloud Shell
Atividades deste laboratório
- Implante uma instância do Cloud SQL para PostgreSQL.
- Criar um banco de dados e ativar a integração da IA do Cloud SQL
- Carregar dados no banco de dados
- Usar o Cloud SQL Studio
- Gerar embeddings usando a Gemini Enterprise Agent Platform no Cloud SQL
- Usar o Agent Platform Studio
- Enriquecer os resultados da consulta usando um modelo generativo da Gemini Enterprise Agent Platform
- Melhorar a performance da consulta usando um índice de vetor HNSW
O que é necessário
- Uma conta do Google Cloud e um projeto do Google Cloud
- Um navegador da web, como o Chrome
2. Configuração e requisitos
Configurar o projeto
- Faça login no console do Google Cloud. Se você ainda não tiver uma Conta do Google (Gmail ou Google Workspace), crie uma.
Use uma conta pessoal em vez de uma conta escolar ou de trabalho.
- Crie um projeto ou reutilize um existente. Para criar um projeto no console do Google Cloud, clique em Selecionar um projeto na barra de ferramentas.

Na caixa de diálogo Selecionar um projeto, clique em Novo projeto.

Na caixa de diálogo, insira um Nome do projeto e selecione o Local.

- O Nome do projeto é o nome de exibição para os participantes do projeto. O nome do projeto não é usado pelas APIs do Google e pode ser alterado a qualquer momento.
- O ID do projeto é exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Google Cloud gera automaticamente um ID exclusivo, mas é possível personalizá-lo. Se você não gostar do ID gerado, crie outro aleatório ou forneça o seu para verificar a disponibilidade. Na maioria dos codelabs, você faz referência ao ID do projeto, que normalmente é identificado com o marcador de posição
. - Um terceiro valor, o Número do projeto, é usado por algumas APIs. Saiba mais sobre esses três valores na documentação Como criar e gerenciar projetos.
Ativar faturamento
Configurar uma conta de faturamento pessoal
Se você configurou o faturamento usando créditos do Google Cloud, pule esta etapa.
Para configurar uma conta de faturamento pessoal, ative o faturamento no console do Google Cloud Billing.
Observações:
- A conclusão deste laboratório custa menos de US $5 em recursos do Google Cloud.
- Siga as etapas no final deste laboratório para excluir recursos e evitar mais cobranças.
- Novos usuários podem aproveitar o teste sem custos financeiros de US$300.
Iniciar o Cloud Shell
Embora seja possível operar o Google Cloud remotamente do seu computador, neste codelab você vai usar o Google Cloud Shell, um ambiente de linha de comando executado na nuvem.
Na barra de ferramentas do console do Google Cloud, clique em Ativar o Cloud Shell:

Como alternativa, pressione g e s no console do Google Cloud ou abra o Cloud Shell.
O provisionamento e a conexão com o ambiente levam apenas alguns instantes. Quando o processo for concluído, você verá o terminal conectado:

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB e é executada no Google Cloud, aprimorando o desempenho e a autenticação da rede. Neste codelab, todo o trabalho pode ser feito com um navegador.
3. Ativar APIs
Para usar o Cloud SQL, o Compute Engine, o Service Networking e a Gemini Enterprise Agent Platform, ative as respectivas APIs no seu projeto do Google Cloud.
No terminal do Cloud Shell, verifique se o ID do projeto está definido:
gcloud config set project <PROJECT_ID>
Defina a variável de ambiente PROJECT_ID:
PROJECT_ID=$(gcloud config get-value project)
Ative todos os serviços necessários:
gcloud services enable sqladmin.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com
Saída esperada:
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.
Leia sobre cada API ativada na documentação.
4. Criar uma instância do Cloud SQL
Crie uma instância do Cloud SQL com a integração do banco de dados da Gemini Enterprise Agent Platform.
Criar senha do banco de dados
Defina uma senha para o usuário padrão do banco de dados. Você pode definir sua própria senha ou usar uma função aleatória para gerar uma:
export CLOUDSQL_PASSWORD=$(openssl rand -hex 16)
Mostre o valor da senha gerada:
echo $CLOUDSQL_PASSWORD
Anote a senha gerada para usar depois.
Criar uma instância do Cloud SQL para PostgreSQL
As instâncias do Cloud SQL podem ser criadas usando vários métodos, incluindo o console do Google Cloud, o Terraform ou a CLI do Google Cloud (gcloud). Neste codelab, você vai usar gcloud. Para saber como criar uma instância com outras ferramentas, consulte a documentação Criar instâncias.
No Cloud Shell, execute o seguinte comando para criar a instância:
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
Depois de criar a instância, defina uma senha para o usuário padrão (postgres) e verifique se é possível se conectar:
gcloud sql users set-password postgres \
--instance=my-cloudsql-instance \
--password=$CLOUDSQL_PASSWORD
Conecte-se à instância usando gcloud sql connect. Quando solicitado, digite a senha:
gcloud sql connect my-cloudsql-instance --user=postgres
Saia da sessão psql pressionando Ctrl+D ou inserindo exit:
exit
Ativar a integração com a Gemini Enterprise Agent Platform
Conceda o papel do IAM necessário à conta de serviço do Cloud SQL para ativar a integração da Gemini Enterprise Agent Platform.
Recupere o e-mail da conta de serviço do Cloud SQL e exporte-o como uma variável de ambiente:
SERVICE_ACCOUNT_EMAIL=$(gcloud sql instances describe my-cloudsql-instance --format="value(serviceAccountEmailAddress)")
echo $SERVICE_ACCOUNT_EMAIL
Conceda o papel roles/aiplatform.user à conta de serviço do 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"
Para mais informações sobre a criação e configuração de instâncias, consulte Integrar o Cloud SQL à plataforma de agentes do Gemini Enterprise.
5. Preparar o banco de dados
Crie um banco de dados e ative o suporte a vetores.
Criar um banco de dados
Crie um banco de dados chamado quickstart_db. É possível criar bancos de dados usando clientes de banco de dados (como psql), a CLI do Google Cloud ou o Cloud SQL Studio. Nesta etapa, use gcloud.
No Cloud Shell, execute o seguinte comando para criar o banco de dados:
gcloud sql databases create quickstart_db --instance=my-cloudsql-instance
Ativar extensões
Para trabalhar com a Gemini Enterprise Agent Platform e vetores, ative duas extensões no banco de dados quickstart_db: google_ml_integration e vector.
No Cloud Shell, conecte-se ao banco de dados:
gcloud sql connect my-cloudsql-instance --database quickstart_db --user=postgres
Quando solicitado, insira a senha do banco de dados.
Na sessão SQL, execute os seguintes comandos:
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
CREATE EXTENSION IF NOT EXISTS vector CASCADE;
Saia da sessão SQL:
exit;
6. Carregar dados
Crie tabelas no banco de dados e carregue dados usando arquivos de conjunto de dados fictícios da Cymbal Store armazenados em um bucket público do Cloud Storage no formato CSV.
Primeiro, crie os objetos de esquema necessários. Execute gcloud sql connect e gcloud storage para fazer o download e importar o esquema:
No Cloud Shell, execute o comando a seguir. Quando solicitado, insira a senha criada para a instância:
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
Esse comando se conecta ao banco de dados e executa o código SQL baixado para criar tabelas, índices e sequências.
Em seguida, faça o download dos arquivos de dados CSV do 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 .
Conecte-se ao banco de dados:
gcloud sql connect my-cloudsql-instance --database quickstart_db --user=postgres
Importe dados dos arquivos 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 você usar seus próprios dados e os arquivos CSV forem compatíveis com a ferramenta de importação do Cloud SQL no console do Google Cloud, use o console em vez da linha de comando.
7. Criar embeddings
Crie embeddings para as descrições de produtos usando o modelo text-embedding-005 da plataforma de agentes do Gemini Enterprise e armazene-os como dados vetoriais.
Se a sessão for desconectada, conecte-se ao banco de dados:
gcloud sql connect my-cloudsql-instance --database quickstart_db --user=postgres
Crie uma coluna gerada chamada embedding na tabela cymbal_products usando a função embedding. Esse comando cria uma coluna gerada armazenada que contém os embeddings de vetor gerados da coluna product_description para todas as linhas da tabela. O modelo é especificado como o primeiro parâmetro e a coluna de texto de origem como o segundo:
ALTER TABLE cymbal_products ADD COLUMN embedding vector(768) GENERATED ALWAYS AS (google_ml.embedding('text-embedding-005', product_description)) STORED;
Para 900 a 1.000 linhas, esse processo geralmente leva de 1 a 5 minutos.
Quando você insere uma nova linha na tabela ou atualiza product_description em uma linha existente, a coluna embedding é atualizada automaticamente.
8. Fazer pesquisa de similaridade
Faça uma pesquisa de similaridade comparando os embeddings de vetores calculados para descrições de produtos com o embedding de uma consulta de pesquisa.
É possível executar consultas SQL na linha de comando usando gcloud sql connect ou no Cloud SQL Studio. O Cloud SQL Studio oferece uma maneira mais conveniente de editar e executar instruções SQL longas com várias linhas na saída.
Iniciar o Cloud SQL Studio
- No console do Google Cloud, acesse Instâncias do Cloud SQL e clique em
my-cloudsql-instance.

- No menu de navegação, clique em Cloud SQL Studio.

- Na caixa de diálogo de autenticação, insira o nome do banco de dados e as credenciais:
- Banco de dados:
quickstart_db - Usuário:
postgres - Senha:
- Banco de dados:
- Clique em Autenticar.

- Clique na guia Editor para abrir o SQL Editor.

Executar consulta
Execute uma consulta para recuperar os 10 produtos mais relevantes para a consulta do cliente: "Que tipo de árvores frutíferas crescem bem aqui?"
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;
No Cloud SQL Studio, insira a consulta e clique em Executar ou execute a consulta na sua sessão do psql:

A consulta retorna produtos correspondentes ordenados por distância do cosseno:
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. Melhorar a resposta do LLM usando dados recuperados
Melhorar a resposta da IA generativa a um aplicativo cliente transmitindo resultados de consulta como contexto embasado em um comando para um modelo de linguagem de fundação da Gemini Enterprise Agent Platform.
Para fazer isso:
- Gere um payload JSON com o resultado da pesquisa vetorial no Cloud SQL.
- Teste o comando no Agent Platform Studio.
- Execute o comando de ponta a ponta diretamente do SQL usando a integração do
google_ml.
Gerar saída no formato JSON
Modifique a consulta para formatar o resultado como JSON e retornar uma linha:
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;
Saída JSON esperada:
[{"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"}]
Executar o comando no Agent Platform Studio
Forneça o JSON gerado como contexto em um comando para um modelo generativo no Agent Platform Studio.
- No console do Google Cloud, abra o Agent Platform Studio.

- Insira o seguinte comando no 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.
Substitua pela resposta JSON da sua consulta:
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.

- Execute o comando.

A resposta inclui preço, descrição e informações complementares que o modelo recebe de fontes externas com base em informações sobre a árvore e o local.
Executar o comando no psql
Também é possível usar a integração da IA do Cloud SQL com a Gemini Enterprise Agent Platform para receber respostas de um modelo generativo diretamente no SQL. Primeiro, registre o modelo.
- Faça upgrade da extensão para a versão 1.4.3 ou mais recente, se necessário. Conecte-se a
quickstart_dbe execute:
SELECT extversion from pg_extension where extname='google_ml_integration';
Se a versão retornada for menor que 1.4.3, execute:
ALTER EXTENSION google_ml_integration UPDATE TO '1.4.3';
- Verifique a flag de banco de dados
google_ml_integration.enable_model_support:
SHOW google_ml_integration.enable_model_support;
Se a flag for off, atualize a flag de banco de dados no Cloud Shell:
gcloud sql instances patch my-cloudsql-instance \
--database-flags google_ml_integration.enable_model_support=on,cloudsql.enable_google_ml_integration=on
Essa operação leva de 1 a 3 minutos. Verifique a configuração novamente:
SHOW google_ml_integration.enable_model_support;
- Registre o modelo
gemini-3.5-flashpara gerar respostas (substituapelo ID do projeto):
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');
Verifique os modelos registrados:
SELECT model_id, model_type FROM google_ml.model_info_view WHERE model_id='gemini-3.5-flash';
- Execute a consulta SQL completa para recuperar os resultados da pesquisa vetorial e transmita-os diretamente para
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;
Saída esperada:
"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. Criar um índice de vizinho mais próximo
Para grandes conjuntos de dados com milhões de vetores, a pesquisa vetorial pode exigir recursos de computação significativos. Para melhorar o desempenho da consulta, crie um índice nos embeddings de vetor.
Crie um índice Hierarchical Navigable Small World (HSNW)
O Mundo Pequeno Hierárquico Navegável (HNSW) é um índice vetorial baseado em gráficos.
Para criar um índice HNSW na coluna embedding, especifique a função de distância (vector_cosine_ops) e parâmetros opcionais, como m e ef_construction. Para mais informações, consulte Trabalhar com embeddings de vetor.
CREATE INDEX cymbal_products_embeddings_hnsw ON cymbal_products
USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);
Saída esperada:
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=>
Comparar o desempenho da consulta
Execute a consulta de pesquisa de vetor com EXPLAIN (ANALYZE) para verificar se o planejador de consultas usa o índice:
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;
Saída esperada:
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
O plano de execução mostra Index Scan using cymbal_products_embeddings_hnsw.
Execute a consulta sem 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;
Saída esperada:
[{"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"}]
Para mais informações e exemplos com LangChain e índices de vetores, consulte a documentação Visão geral da IA do Cloud SQL.
11. Limpar recursos
Exclua a instância do Cloud SQL depois de concluir o codelab.
No Cloud Shell, defina o projeto e as variáveis de ambiente se a sessão for desconectada:
export INSTANCE_NAME=my-cloudsql-instance
export PROJECT_ID=$(gcloud config get-value project)
Exclua a instância:
gcloud sql instances delete $INSTANCE_NAME --project=$PROJECT_ID
Saída esperada:
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. Parabéns
Parabéns! Você concluiu o codelab.
Este laboratório faz parte do programa de aprendizado "IA pronta para produção com o Google Cloud".
- Confira o currículo completo para reduzir a lacuna entre o protótipo e a produção.
- Compartilhe seu progresso com a hashtag
#ProductionReadyAI.
Resumo
Você aprendeu a:
- Implante uma instância do Cloud SQL para PostgreSQL
- Criar um banco de dados e ativar a integração da IA do Cloud SQL
- Carregar dados no banco de dados
- Usar o Cloud SQL Studio
- Usar um modelo de incorporação da Gemini Enterprise Agent Platform no Cloud SQL
- Usar o Agent Platform Studio
- Enriquecer os resultados da consulta usando um modelo generativo da Gemini Enterprise Agent Platform
- Melhorar a performance da consulta usando um índice de vetor
Teste o codelab de embedding de vetor da IA do AlloyDB com o índice ScaNN em vez de HNSW.