Diseñar un agente SQL con tecnología de OCI Generative AI para bases de datos y aplicaciones
Esta arquitectura de referencia describe un agente SQL diseñado para facilitar las interacciones de lenguaje natural (NL) con una instancia de Oracle Database.
Basado en modelos de Oracle Cloud Infrastructure (OCI) y Oracle Cloud Infrastructure Generative AI (OCI Generative AI), el agente permite a los usuarios realizar consultas de texto a SQL, análisis de datos e informes a través de un sistema sólido y escalable, diseñado para manejar esquemas con cientos de tablas.
El agente SQL también se puede integrar en una arquitectura más general, con la generación aumentada de recuperación (RAG), lo que permite a los usuarios combinar el análisis en datos estructurados y no estructurados.
Arquitectura
El núcleo de la solución consta de un juego de componentes de Python, basado en el SDK para Python de Oracle Cloud Infrastructure y la biblioteca de código abierto LangChain:
- Enrutador: identifica el tipo de solicitud (generación de SQL y recuperación de datos o análisis de datos) y lo dirige al pipeline de procesamiento adecuado. El componente se basa en el LLM con una petición de datos especializada.
- Gestor de esquemas: gestiona todos los metadatos relacionados con el esquema de base de datos. Desempeña un papel crucial a la hora de proporcionar, para cada solicitud de NL, la lista de tablas ("esquema restringido") que se utilizará para la generación de SQL y todos los metadatos asociados. Utiliza una base de datos 23ai y una búsqueda semántica dentro de la base de datos, para encontrar las tablas relevantes para la solicitud de NL del usuario.
- Generador SQL: convierte la solicitud NL en una sentencia SQL ejecutable en la base de datos "Datos" conectada. Utiliza un conjunto de modelos LLM para mejorar la precisión y aumentar la tasa de éxito de las sentencias SQL generadas correctamente. Los modelos de LLM los proporciona el servicio OCI Generative AI.
- Caché SQL: almacena instrucciones NL (y sus equivalentes SQL) para las solicitudes más frecuentes.
- Ejecutor SQL: activa la validación de sintaxis de la sentencia SQL generada y ejecuta la instrucción.
- Analizador de datos de IA: analiza los datos conversacionales almacenados para generar respuestas para solicitudes de análisis o generación de informes.
El siguiente diagrama ilustra la arquitectura lógica.
Descripción de la ilustración oci-genai-sql-agent-logical.png
oci-genai-sql-agent-logical-oracle.zip
Una característica distintiva de esta solución es su gestión flexible de esquemas de base de datos, impulsada por Vector Search e IA generativa.
Durante la configuración, se genera un resumen completo para cada tabla de base de datos mediante un modelo de lenguaje grande (LLM). Este resumen incluye el esquema de tabla, las consultas de negocio relevantes y los datos de ejemplo. Los resúmenes se almacenan en la base de datos de 23ai junto con vectores de embebido creados por el modelo de embebido de OCI Generative AI.
Cuando un usuario envía una consulta, la búsqueda semántica identifica las tablas candidatas para la composición de la consulta, y un mecanismo de nueva generación acota esta lista para garantizar resultados óptimos.
El agente SQL gestiona el historial de conversaciones con el usuario. Los mensajes intercambiados, enlazados mediante conversation_id, se almacenan mediante la caché de Oracle Cloud Infrastructure Cache with Redis (caché de OCI con Redis).
El agente SQL se expone a través de una API de REST, es compatible con Open-API e implantado con la biblioteca FastAPI. Esta API de REST se puede conectar a cualquier interfaz de usuario (el diagrama sugiere Oracle Digital Assistant, una interfaz de usuario creada con Oracle APEX o una interfaz de usuario web genérica).
La integración con Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service para recopilar estadísticas de uso y tiempos de respuesta para varios componentes de OCI se basa en el enfoque documentado en el enlace Mejora de la observabilidad en las soluciones de RAG con Oracle Cloud (blog) de la sección Explorar más.
En el siguiente diagrama se describe la arquitectura física, con todos los servicios de OCI implicados.
oci-genai-sql-agent-arch-oracle.zip
La arquitectura tiene los siguientes componentes:
- IA generativa de OCI Modelo de integración
Convertir texto en elementos embebidos de vectores para su uso en aplicaciones de búsquedas semánticas, clasificación de textos o agrupación de textos. La IA generativa de OCI que incorpora modelos transforma cada frase, frase o párrafo que introduzca en una matriz con 384 (modelos ligeros) o 1024 números, según el modelo de embebido que seleccione.
Puede utilizar estas incrustaciones para buscar similitud en frases que sean similares en contexto o categoría. Las incrustaciones se almacenan normalmente en una base de datos vectorial. Los embebidos se utilizan principalmente para búsquedas semánticas donde la función de búsqueda se centra en el significado del texto que está buscando en lugar de encontrar resultados basados en palabras clave.
- OCI Generative AI Modelo de chat
Haga preguntas y obtenga respuestas conversacionales a través de una interfaz de chat de IA. Solicita a los modelos de chat de OCI Generative AI que generen texto. Puede hacer preguntas en lenguaje natural y, opcionalmente, enviar texto, como documentos, correos electrónicos y revisiones de productos a los modelos de chat y los motivos de cada modelo sobre el texto y proporciona respuestas inteligentes. Para algunos modelos, puede enviar imágenes y hacer preguntas sobre la imagen. Los modelos de chat mantienen el contexto de sus peticiones de datos anteriores y puede continuar el chat con preguntas de seguimiento.
- Control de Rendimiento de la Aplicación
Oracle Cloud Infrastructure Application Performance Monitoring proporciona una amplia visibilidad del rendimiento de las aplicaciones y la capacidad de diagnosticar incidencias de forma rápida para ofrecer un nivel de servicio consistente. Esto incluye la supervisión de los distintos componentes y la lógica de aplicación en los clientes, los servicios de terceros y los niveles informáticos de backend, de forma local o en la nube.
- Servicio APEX
Oracle APEX es una plataforma de desarrollo con poco código que permite crear aplicaciones empresariales seguras, escalables, con muchas funciones y que se pueden desplegar en cualquier lugar donde esté instalado Oracle Database. No es necesario que sea un experto en una amplia gama de tecnologías para crear soluciones sofisticadas. Oracle APEX incluye funciones incorporadas como temas de la interfaz del usuario, controles de navegación, manejadores de formulario e informes flexibles que aceleran el proceso de desarrollo de las aplicaciones.
- Gateway de API
Oracle Cloud Infrastructure API Gateway permite publicar API con puntos finales privados accesibles desde la red y que se pueden exponer a la red pública de Internet si es necesario. Los puntos finales admiten la validación de API, la transformación de solicitud y respuesta, CORS, la autenticación y autorización, y la limitación de solicitudes.
- Autonomous Data Warehouse
Oracle Autonomous Data Warehouse es un servicio de base de datos autogestionado, autoseguridad y autorreparable optimizado para cargas de trabajo de almacenamiento de datos. No necesita configurar ni gestionar ningún hardware, ni instalar ningún software. Oracle Cloud Infrastructure se ocupa de la creación de la base de datos, así como de la copia de seguridad, la aplicación de parches, el cambio de versión y el ajuste de la base de datos.
- Caché con Redis
Oracle Cloud Infrastructure Cache with Redis es una solución de almacenamiento en caché completa y gestionada en memoria basada en Redis de código abierto. Este servicio totalmente gestionado acelera las lecturas y escrituras de datos, lo que mejora significativamente los tiempos de respuesta de las aplicaciones y el rendimiento de la base de datos para proporcionar una experiencia de cliente mejorada.
- Compute
Con Oracle Cloud Infrastructure Compute, puede aprovisionar y gestionar hosts de recursos informáticos en la nube. Puede iniciar instancias informáticas con unidades que cumplan los requisitos de recursos de CPU, memoria, ancho de banda de red y almacenamiento. Después de crear una instancia informática, puede acceder a ella de forma segura, reiniciarla, asociar y desconectar volúmenes y terminarla cuando ya no lo necesite.
Recomendaciones
- Acceso a Base de Datos
Esta solución se debe implantar para permitir solo el acceso de "solo lectura" a los datos de la base de datos. Incluso si es posible, con instrucciones en la petición de datos, prohibir las instrucciones DDL y DML, para mayor seguridad, la conexión a la base de datos "Datos" se debe realizar utilizando un usuario de base de datos READ ONLY.
- Seguridad
Utiliza Oracle Cloud Guard para supervisar y mantener la seguridad de tus recursos en OCI de forma proactiva. Oracle Cloud Guard utiliza recetas de detector que puede definir para examinar los recursos en busca de deficiencias de seguridad y para supervisar a los operadores y usuarios en busca de actividades de riesgo. Cuando se detecta cualquier configuración incorrecta o actividad no segura, Oracle Cloud Guard recomienda acciones correctivas y ayuda a realizar esas acciones, en función de las recetas de responsable de respuesta que pueda definir.
Para los recursos que requieren la máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta de políticas de seguridad definida por Oracle que se basa en las mejores prácticas. Por ejemplo, no se puede acceder a los recursos de una zona de seguridad desde la Internet pública y se deben cifrar mediante claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, OCI valida las operaciones con respecto a las políticas de la receta de zona de seguridad y deniega las operaciones que violan cualquiera de las políticas.
- Cloud Guard
Clone y personalice las recetas por defecto proporcionadas por Oracle para crear recetas personalizadas de detector y responsable de respuesta. Estas recetas permiten especificar qué tipo de violaciones de seguridad generan una advertencia y qué acciones se pueden realizar en ellas. Por ejemplo, puede que desee detectar cubos de Object Storage que tengan la visibilidad definida en pública.
Aplique Cloud Guard en el nivel de arrendamiento para abarcar el ámbito más amplio y reducir la carga administrativa de mantener varias configuraciones.
También puede utilizar la función de lista gestionada para aplicar determinadas configuraciones a los detectores.
- Security Zones
Para los recursos que requieren la máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta de políticas de seguridad definida por Oracle que se basa en las mejores prácticas. Por ejemplo, no se puede acceder a los recursos de una zona de seguridad desde la Internet pública y se deben cifrar mediante claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, Oracle Cloud Infrastructure valida las operaciones con respecto a las políticas de la receta de zona de seguridad y deniega las operaciones que violan cualquiera de las políticas.
- Grupos de seguridad de red (NSG)
Puede utilizar NSG para definir un juego de reglas de entrada y salida que se aplican a VNIC específicas. Recomendamos utilizar NSG en lugar de listas de seguridad, ya que los NSG permiten separar la arquitectura de subred de la VCN de los requisitos de seguridad de la aplicación.
Consideraciones
Al planificar la ejecución de esta solución en OCI, tenga en cuenta los siguientes detalles de seguridad.
- Seguridad
En un valor de producción, todos los componentes de los agentes SQL se deben desplegar en una red privada.
El acceso a la API de REST solo se debe proporcionar a través del gateway de API de OCI. El equilibrador de carga está diseñado para permitir el despliegue de todos los componentes de Python en varias máquinas virtuales, con el fin de lograr una mayor fiabilidad y escalabilidad.
El acceso a los servicios de OCI Generative AI requiere la configuración adecuada de las políticas de OCI Generative AI.