As funções otimizadas permitem usar um modelo de proxy menor e mais rápido para processar a maioria das consultas e recorrer a um LLM maior somente quando necessário. Essa abordagem reduz os custos operacionais e melhora a capacidade de resposta da consulta. As funções otimizadas minimizam o uso de LLMs para tarefas de classificação ou filtragem linha por linha, que podem ser melhor processadas pelo modelo de proxy.
As funções de IA do AlloyDB, como ai.if(), podem ter alta latência devido a chamadas remotas para modelos de linguagem grandes (LLMs). As funções otimizadas resolvem esse problema de latência usando modelos de proxy menores e treinados localmente para processar suas consultas. Esses modelos são treinados em uma amostra dos seus dados, usando a saída do LLM como fonte de verdade.
As verificações de acurácia são realizadas no ambiente de execução em uma amostra de linhas usando o LLM. Para realizar essa verificação, o AlloyDB usa o LLM para gerar rótulos para as linhas de amostra e os compara com as previsões do modelo de proxy para verificar a acurácia. Se a verificação de acurácia falhar, a consulta vai usar o LLM.
Ao usar uma função otimizada, o AlloyDB faz o seguinte:
- Treina um modelo de proxy: o AlloyDB treina um modelo de proxy leve em uma amostra dos seus dados. Isso acontece em segundo plano quando você usa a instrução
PREPAREcom a funçãoai.if()para treinar o modelo para consultas otimizadas. - Executa a consulta: quando você usa a instrução
EXECUTE, o AlloyDB usa o modelo de proxy treinado para processar a consulta localmente. - Recorre ao LLM: se a acurácia do modelo for baixa ou se o AlloyDB não encontrar um modelo, ele vai usar o LLM automaticamente.

Antes de começar
Antes de usar as funções otimizadas, faça o seguinte:
- Conecte-se ao banco de dados usando o psql ou
o AlloyDB Studio como o usuário
postgresou como um usuário que tenha acesso à tabela em que os dados residem. Verifique se a extensão
google_ml_integrationestá instalada e disponível na versão 1.5.8 ou mais recente.SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.8 (1 row)Configure o AlloyDB para trabalhar com a plataforma de agentes do Gemini Enterprise. Para mais informações, consulte Integrar seu banco de dados à plataforma de agentes.
Verifique se as flags de banco de dados a seguir estão ativadas. Para mais informações, consulte Configurar flags de banco de dados de uma instância.
google_ml_integration.enable_model_supportgoogle_ml_integration.enable_ai_query_enginegoogle_ml_integration.enable_cost_optimized_ai_functions
Gere embeddings para a tabela que você quer consultar. Para mais informações, consulte Gerar e gerenciar embeddings automáticos para tabelas.
Considere o seguinte:
- A coluna de dados de origem precisa ser do tipo
TEXTouVARCHAR. - A coluna de embedding que fornece entrada para a função de IA otimizada precisa ser do tipo
REAL[]ouVECTOR. - As funções otimizadas estão disponíveis apenas em regiões em que os modelos generativos do Agent Platform estão disponíveis. Para uma lista de regiões disponíveis, consulte Implantações e endpoints.
- A coluna de dados de origem precisa ser do tipo
Usar funções otimizadas
Para usar uma função otimizada, use as instruções PREPARE e EXECUTE com a função ai.if(). Confira a seguir um exemplo de como usar uma função otimizada:
Crie uma tabela
restaurant_reviews. A colunareviewque contém os dados de origem é do tipoTEXT, e a colunareview_embeddingusada para consultas é do tipoVECTOR(768).CREATE TABLE restaurant_reviews ( id SERIAL, name VARCHAR(64), city VARCHAR(64), review TEXT, review_embedding VECTOR(768) );Use uma instrução
PREPAREcom a funçãoai.if()para indicar que a consulta precisa usar uma função otimizada. Essa instrução aciona o treinamento assíncrono do modelo em segundo plano.O modelo é treinado apenas nas seguintes condições:
- Há exatamente uma função
ai.if()na consulta. ai.if()não está dentro de uma subconsulta.
PREPARE positive_reviews_query AS SELECT r.name, r.city FROM restaurant_reviews r WHERE ai.if('Is the following a positive review? Review: ' || r.review, r.review_embedding) GROUP BY r.name, r.city HAVING COUNT(*) > 500;- Há exatamente uma função
Execute a consulta usando a instrução
EXECUTE. Como a instruçãoPREPAREé específica da sessão atual, é necessário executar a instruçãoEXECUTEna mesma conexão:EXECUTE positive_reviews_query;conn2=> SELECT r.name, r.city FROM restaurant_reviews r WHERE ai.if('Is the following a positive review? Review: ' || r.review, r.review_embedding) GROUP BY r.name, r.city HAVING COUNT(*) > 500;O modelo de proxy treinado não será usado se alguma das seguintes condições for atendida:
- O conteúdo ou a coluna de embedding referenciada em
ai.if()muda. As duas colunas precisam pertencer à mesma tabela. - O prompt fornecido à coluna de conteúdo muda.
- A estrutura da consulta muda, resultando em um
query_iddiferente. - A consulta não atende ao limite de verificação de acurácia no início da consulta.
Nesses casos, a consulta volta a usar o LLM, e o AlloyDB retorna um aviso.
- O conteúdo ou a coluna de embedding referenciada em
Opcional. Para desativar a verificação de validação de acurácia para todo o ambiente de banco de dados, o que é necessário porque as verificações de acurácia também são realizadas durante o treinamento de modelo, execute o comando a seguir.
ALTER DATABASE DATABASE_NAME SET google_ml_integration.runtime_accuracy_check = off;Substitua
DATABASE_NAMEpelo nome do seu banco de dados.
Treinar um modelo de proxy novamente
Se os dados da tabela subjacente mudarem significativamente, você poderá treinar o modelo de proxy novamente executando a instrução PREPARE. A preparação de uma consulta substitui o modelo de proxy atual, iniciando uma nova solicitação de treinamento.
Limitações
Se você mudar a coluna de conteúdo de origem, a coluna de embedding ou o prompt fornecido à função ai.if(), será necessário emitir uma nova instrução PREPARE.
O AlloyDB treina a função otimizada para aproximar o comportamento de uma combinação exclusiva de prompt e dados de entrada.