Projete um agente SQL com tecnologia de OCI Generative AI para bancos de dados e aplicações

Essa arquitetura de referência descreve um SQL Agent projetado para facilitar as interações de Linguagem Natural (NL) com um Oracle Database.

Desenvolvido nos modelos do Oracle Cloud Infrastructure (OCI) e do Oracle Cloud Infrastructure Generative AI (OCI Generative AI), o agente permite que os usuários executem consultas de Texto para SQL, análise de dados e relatórios por meio de um sistema robusto e escalável, projetado para lidar com esquemas com centenas de tabelas.

O agente SQL também pode ser integrado em uma arquitetura mais geral, com a Geração Aumentada de Recuperação (RAG), permitindo que os usuários combinem análises em dados estruturados e não estruturados.

Arquitetura

O núcleo da solução consiste em um conjunto de componentes Python, com base no SDK para Python do Oracle Cloud Infrastructure e na biblioteca de código-fonte aberto LangChain:

  • Roteador: Identifica o tipo de solicitação (geração e recuperação de dados SQL ou análise de dados) e o direciona para o pipeline de processamento apropriado. O componente é baseado no LLM com um prompt especializado.
  • Gerenciador de Esquema: Gerencia todos os metadados relacionados ao esquema do banco de dados. Ele desempenha um papel crucial no fornecimento, para cada solicitação NL, da lista de tabelas ("esquema restrito") a serem usadas para geração de SQL e todos os metadados associados. Ele utiliza um banco de dados 23ai e Pesquisa Semântica dentro do banco de dados, para encontrar as tabelas relevantes para a solicitação NL do usuário.
  • Gerador de SQL: Converte a solicitação NL em uma instrução SQL executável no banco de dados "Dados" conectado. Ele usa um montagem de modelos LLM para melhorar a precisão e aumentar a taxa de sucesso de instruções SQL geradas corretamente. Os modelos de LLM são fornecidos pelo serviço OCI Generative AI.
  • Cache SQL: Armazena instruções NL (e seus equivalentes SQL) para as solicitações mais frequentes.
  • Executor SQL: Ativa a validação de sintaxe da instrução SQL gerada e executa a instrução.
  • Analisador de Dados de IA: Analisa dados de conversação armazenados para gerar respostas para solicitações de análise ou geração de relatórios.

O diagrama a seguir ilustra a arquitetura lógica.


Veja a seguir a descrição da oci-genai-sql-agent-logical.png
Descrição da ilustração oci-genai-sql-agent-logical.png

oci-genai-sql-agent-logical-oracle.zip

Uma característica distintiva desta solução é seu gerenciamento flexível de esquemas de banco de dados, alimentado por Pesquisa de Vetores e IA Generativa.

Durante a configuração, um resumo abrangente é gerado para cada tabela de banco de dados usando um LLM (Large Language Model). Este resumo inclui o esquema de tabela, consultas de negócios relevantes e dados de amostra. Os resumos são armazenados no banco de dados 23ai, juntamente com vetores de incorporação criados pelo modelo de Incorporação da OCI Generative AI.

Quando um usuário envia uma consulta, a pesquisa semântica identifica tabelas candidatas para composição da consulta, e um mecanismo de reclassificação refina essa lista para garantir resultados ideais.

O SQL Agent gerencia o histórico de conversas com o usuário. As mensagens trocadas, vinculadas por meio de um conversation_id, são armazenadas usando o Oracle Cloud Infrastructure Cache with Redis (OCI Cache with Redis).

O SQL Agent é exposto por meio de uma API REST, é compatível com Open-API e implementado com a biblioteca FastAPI. Essa API REST pode se conectar a qualquer interface do usuário (o diagrama sugere o Oracle Digital Assistant, uma interface de usuário criada com o Oracle APEX ou uma interface de usuário da Web genérica).

A integração com o Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service para coletar estatísticas de uso e tempos de resposta para vários componentes da OCI é baseada na abordagem documentada no link Melhorando a Observabilidade em Soluções RAG com o Oracle Cloud (blog) na seção Explorar Mais.

O diagrama a seguir descreve a arquitetura física, com todos os serviços do OCI envolvidos.



oci-genai-sql-agent-arch-oracle.zip

A arquitetura tem os seguintes componentes:

  • IA Generativa da OCI Incorporando Modelo

    Converta texto em incorporações de vetor para usar em aplicativos para pesquisas semânticas, classificação de texto ou clusterização de texto. Os modelos de incorporação do OCI Generative AI transformam cada frase, frase ou parágrafo inserido em uma matriz com números 384 (modelos de luz) ou 1024, dependendo do modelo de incorporação selecionado.

    Você pode usar essas incorporações para encontrar similaridade em frases semelhantes no contexto ou na categoria. Normalmente, as incorporações são armazenadas em um banco de dados vetorial. As incorporações são usadas principalmente para pesquisas semânticas em que a função de pesquisa se concentra no significado do texto que está pesquisando, em vez de encontrar resultados com base em palavras-chave.

  • OCI Generative AI Modelo de bate-papo

    Faça perguntas e obtenha respostas de conversação por meio de uma interface de chat de IA. Solicite que os modelos de chat do OCI Generative AI gerem texto. Você pode fazer perguntas em linguagem natural e opcionalmente enviar texto, como documentos, emails e revisões de produtos para os modelos de bate-papo e cada motivo de modelo sobre o texto e fornece respostas inteligentes. Para alguns modelos, você pode enviar imagens e fazer perguntas sobre a imagem. Os modelos de bate-papo mantêm o contexto de seus prompts anteriores e você pode continuar o bate-papo com perguntas de acompanhamento.

  • Monitoramento do Desempenho da Aplicação

    O Oracle Cloud Infrastructure Application Performance Monitoring fornece uma visibilidade profunda do desempenho de aplicativos e permite diagnosticar problemas rapidamente para fornecer um nível consistente de serviço. Isso inclui o monitoramento dos vários componentes e da lógica de aplicativos distribuídos entre clientes, serviços de terceiros e camadas de computação de back-end, no local ou na nuvem.

  • Serviço do APEX

    O Oracle APEX é uma plataforma de desenvolvimento de baixo código que permite criar aplicativos empresariais escaláveis, ricos em recursos e seguros que podem ser implantados em qualquer local em que o Oracle Database esteja instalado. Você não precisa ser especialista em uma vasta gama de tecnologias para fornecer soluções sofisticadas. O Oracle APEX inclui recursos internos, como temas de interface do usuário, controles de navegação, handlers de formulários e relatórios flexíveis que aceleram o processo de desenvolvimento de aplicações.

  • Gateway de API

    O Oracle Cloud Infrastructure API Gateway permite que você publique APIs com pontos finais privados acessíveis na sua rede e que você pode expor à internet pública, se necessário. Os pontos finais suportam validação de API, transformação de solicitação e resposta, CORS, autenticação e autorização e limitação de solicitação.

  • Autonomous Data Warehouse

    O Oracle Autonomous Data Warehouse é um serviço de banco de dados autônomo, de autoproteção e reparo otimizado para cargas de trabalho de data warehousing. Você não precisa configurar nem gerenciar nenhum hardware, nem instalar nenhum software. O Oracle Cloud Infrastructure lida com a criação do banco de dados, bem como com o backup, a aplicação de patches, o upgrade e o ajuste dele.

  • Cache com Redis

    O Oracle Cloud Infrastructure Cache with Redis é uma solução de cache abrangente, gerenciada na memória, criada com base no Redis de código aberto. Esse serviço totalmente gerenciado acelera leituras e gravações de dados, aprimorando significativamente os tempos de resposta da aplicação e o desempenho do banco de dados para fornecer uma experiência aprimorada ao cliente.

  • Computação

    Com o Oracle Cloud Infrastructure Compute, você pode provisionar e gerenciar hosts de computação na nuvem. Você pode iniciar instâncias de computação com formas que atendam aos seus requisitos de recursos para CPU, memória, largura de banda de rede e armazenamento. Depois de criar uma instância de computação, você pode acessá-la com segurança, reiniciá-la, anexar e desconectar volumes e encerrá-la quando não precisar mais dela.

Recomendações

Use as recomendações a seguir como ponto de partida. Seus requisitos podem ser diferentes da arquitetura descrita aqui.
  • Acesso ao banco de dados

    Essa solução deve ser implementada para permitir apenas o acesso "somente leitura" aos dados no banco de dados. Mesmo que seja possível, com instruções no prompt, proibir instruções DDL e DML, para segurança adicional, a conexão com o banco de dados "Dados" deve ser feita usando um usuário do banco de dados READ ONLY.

  • Segurança

    Use o Oracle Cloud Guard para monitorar e manter a segurança dos seus recursos na OCI de maneira proativa. O Oracle Cloud Guard usa receitas do detector que você pode definir para examinar seus recursos em busca de pontos fracos de segurança e para monitorar operadores e usuários em busca de atividades arriscadas. Quando qualquer configuração incorreta ou atividade insegura é detectada, o Oracle Cloud Guard recomenda ações corretivas e auxilia na execução dessas ações, com base nas receitas do respondedor que você pode definir.

    Para recursos que exigem segurança máxima, a Oracle recomenda o uso de zonas de segurança. Uma zona de segurança é um compartimento associado a uma receita de políticas de segurança definida pela Oracle baseada nas melhores práticas. Por exemplo, os recursos de uma zona de segurança não devem ser acessíveis por meio da internet pública e devem ser criptografados usando chaves gerenciadas pelo cliente. Quando você criar e atualizar recursos em uma zona de segurança, o OCI validará as operações de acordo com as políticas na receita da zona de segurança e negará operações que violem qualquer uma das políticas.

  • Cloud Guard

    Clone e personalize as receitas padrão fornecidas pela Oracle para criar receitas personalizadas de detector e respondedor. Essas receitas permitem que você especifique que tipo de violações de segurança geram um aviso e quais ações podem ser executadas nelas. Por exemplo, talvez você queira detectar buckets do Object Storage que tenham visibilidade definida como pública.

    Aplique o Cloud Guard no nível da tenancy para cobrir o escopo mais amplo e reduzir a carga administrativa de manutenção de várias configurações.

    Você também pode usar o recurso Lista Gerenciada para aplicar determinadas configurações aos detectores.

  • Zonas de Segurança

    Para recursos que exigem segurança máxima, a Oracle recomenda o uso de zonas de segurança. Uma zona de segurança é um compartimento associado a uma receita de políticas de segurança definida pela Oracle baseada nas melhores práticas. Por exemplo, os recursos de uma zona de segurança não devem ser acessíveis por meio da internet pública e devem ser criptografados usando chaves gerenciadas pelo cliente. Quando você criar e atualizar recursos em uma zona de segurança, o Oracle Cloud Infrastructure validará as operações de acordo com as políticas na receita de zona de segurança e negará as operações que violam qualquer uma das políticas.

  • Grupos de segurança de rede (NSGs)

    Você pode usar NSGs para definir um conjunto de regras de entrada e saída que se aplicam a VNICs específicas. Recomendamos o uso de NSGs em vez de listas de segurança, porque os NSGs permitem que você separe a arquitetura de sub-rede da VCN dos requisitos de segurança do seu aplicativo.

Considerações

Ao planejar executar essa solução na OCI, considere os seguintes detalhes de segurança.

  • Segurança

    Em uma definição de produção, todos os componentes dos Agentes SQL devem ser implantados em uma rede privada.

    O acesso à API REST só deve ser fornecido por meio do Gateway de API do OCI. O Balanceador de Carga foi projetado para permitir a implantação de todos os componentes Python em várias VMs, para obter maior confiabilidade e escalabilidade.

    O acesso aos serviços da OCI Generative AI requer a configuração adequada das políticas da OCI Generative AI.

Reconhecimentos

  • Autor: Luigi Saetta
  • Colaborador: Alexandru Negrea