Las empresas dependen de ideas precisas y en tiempo real para tomar decisiones críticas. Sin embargo, permitir que los usuarios no técnicos accedan a los datos propietarios u organizacionales sin experiencia técnica siguen siendo un desafío. El texto a SQL une esta brecha al generar consultas precisas y específicas de esquemas que potencian la toma de decisiones más rápida y fomentan una cultura basada en datos. El problema radica en obtener respuestas deterministas (precisos y resultados consistentes necesarios para operaciones como generar recuentos exactos o informes detallados) de datos de propiedad u organizacional. La IA generativa ofrece varios enfoques para los datos de consulta, pero seleccionar el método correcto es fundamental para lograr la precisión y la confiabilidad.
Esta publicación evalúa las opciones clave para consultar datos utilizando IA generativa, discute sus fortalezas y limitaciones, y demuestra por qué Text-to-SQL es la mejor opción para tareas deterministas específicas de esquemas. Mostramos cómo usar de manera efectiva texto a SQL usando Amazon Novaun modelo de base (FM) disponible en Roca madre de Amazonpara obtener respuestas precisas y confiables de sus datos.
Opciones para consultar datos
Las organizaciones tienen múltiples opciones para consultar datos, y la elección depende de la naturaleza de los datos y los resultados requeridos. Esta sección evalúa los siguientes enfoques para proporcionar claridad sobre cuándo usar cada uno y por qué el texto a SQL es óptimo para las tareas deterministas basadas en esquemas:
- Recuperación de generación aumentada (trapo):
- Caso de uso -Ideal para extraer ideas de fuentes no estructuradas o semiestructuradas como documentos o artículos.
- Fortalezas -Maneja diversos formatos de datos y proporciona respuestas de estilo narrativo.
- Limitaciones – Las respuestas probabilísticas pueden variar, lo que lo hace inadecuado para consultas deterministas, como recuperar recuentos exactos o coincidir con restricciones de esquema específicas.
- Ejemplo – “Resume los comentarios de las revisiones de productos”.
- Inteligencia empresarial generativa (BI):
- Caso de uso -Adecuado para información de alto nivel y generación de resumen basada en datos estructurados y no estructurados.
- Fortalezas -Ofrece información narrativa para la toma de decisiones y las tendencias.
- Limitaciones -carece de la precisión requerida para consultas operativas o específicas del esquema. Los resultados a menudo varían en el fraseo y el enfoque.
- Ejemplo – “¿Cuáles fueron los impulsores clave del crecimiento de las ventas el último trimestre?”
- Texto a SQL:
- Caso de uso – Excelente en la consulta de datos organizacionales estructurados directamente de esquemas relacionales.
- Fortalezas -Proporciona resultados deterministas y reproducibles para consultas específicas dependientes del esquema. Ideal para operaciones precisas como filtrar, contar o agregar datos.
- Limitaciones – Requiere datos estructurados y esquemas predefinidos.
- Ejemplo – “¿Cuántos pacientes diagnosticados con diabetes visitaron clínicas en la ciudad de Nueva York el mes pasado?”
En escenarios que exigen precisión y consistencia, el texto a SQL supera el trapo y la BI generativa al entregar resultados precisos e impulsados por el esquema. Estas características lo convierten en la solución ideal para consultas de datos operativas y estructuradas.
Descripción general de la solución
Esta solución utiliza Amazon Nova Lite y Amazon Nova Pro Language Models (LLMS) para simplificar la consulta de datos patentados con lenguaje natural, lo que lo hace accesible para usuarios no técnicos.
Amazon Bedrock es un servicio totalmente administrado que simplifica las aplicaciones generativas de IA de construcción y escala al proporcionar acceso a FMS líder a través de una sola API. Permite a los desarrolladores experimentar y personalizar estos modelos de forma segura y privada, integrando las capacidades generativas de IA en sus aplicaciones sin administrar la infraestructura.
Dentro de este sistema, Amazon Nova representa una nueva generación de FMS que ofrece inteligencia avanzada y un rendimiento de precio líder en la industria. Estos modelos, incluidos Amazon Nova Lite y Amazon Nova Pro, están diseñados para manejar diversas tareas, como texto, imagen y comprensión de video, haciéndolos herramientas versátiles para diversas aplicaciones.
Puede encontrar el código de implementación y las instrucciones detalladas en nuestro Repositorio de Github.
La solución consta de las siguientes características clave:
- Contexto de esquema dinámico – Recupera el esquema de la base de datos dinámicamente para la generación de consultas precisas
- Generación de consultas SQL – Convierte el lenguaje natural en consultas SQL utilizando el Amazon Nova Pro LLM
- Ejecución de la consulta – Ejecuta consultas en bases de datos organizacionales y recupera resultados
- Respuestas formateadas -procesa los resultados de consulta sin procesar en formatos fáciles de usar utilizando Amazon Nova Lite LLM
El siguiente diagrama ilustra la arquitectura de la solución.
En esta solución, utilizamos Amazon Nova Pro y Amazon Nova Lite para aprovechar sus respectivas fortalezas, facilitando el procesamiento eficiente y efectivo en cada etapa:
- Recuperación de esquema dinámico y generación de consultas SQL – Utilizamos Amazon Nova Pro para manejar la traducción de entradas de lenguaje natural en consultas SQL. Sus capacidades avanzadas en un razonamiento y comprensión complejos lo hacen bien adecuado para interpretar con precisión las intenciones de los usuarios y generar declaraciones SQL precisas.
- Generación de respuesta formateada – Después de ejecutar las consultas SQL, los resultados sin procesar se procesan utilizando Amazon Nova Lite. Este modelo formatea eficientemente los datos en salidas fáciles de usar, lo que hace que la información sea accesible para usuarios no técnicos. Su velocidad y rentabilidad son ventajosas para esta etapa, donde el procesamiento rápido y la presentación directa son clave.
Al implementar estratégicamente Amazon Nova Pro y Amazon Nova Lite de esta manera, la solución se asegura de que cada componente funcione de manera óptima, equilibrando el rendimiento, la precisión y la rentabilidad.
Requisitos previos
Complete los siguientes pasos de requisito previo:
- Instalar el Interfaz de línea de comandos de AWS (AWS CLI). Para obtener instrucciones, consulte Instalación o actualización de la última versión del AWS CLI.
- Configure la configuración básica que la AWS CLI usa para interactuar con AWS. Para más información, ver Configuración de archivos de configuración y credencial en la AWS CLI.
- Asegúrese de que Amazon Bedrock sea activado en tu cuenta de AWS.
- Obtener acceso a Amazon Nova Lite y Amazon Nova Pro.
- Instalar Pitón 3.9 o posterior, junto con las bibliotecas requeridas (Racionalizar Versión 1.8.0 o posterior, Boto3, PYMSSQL y paquetes de gestión del medio ambiente).
- Cree una base de datos Microsoft SQL Server (versión 2016 o posterior) con credenciales para conectarse.
- Crear un secreto en AWS Secrets Manager para credenciales de base de datos y así
mssql_secrets. Para obtener instrucciones, ver Crear un secreto de AWS Secrets Manager.
- Crear un secreto en AWS Secrets Manager para credenciales de base de datos y así
Nuestro código de muestra utiliza una base de datos de Microsoft SQL Server, pero esta solución admite los siguientes servicios:
Para obtener más información sobre los requisitos previos, consulte el Repositorio de Github.
Configurar el entorno de desarrollo
En el símbolo del sistema, navegue a la carpeta donde existe el código y ejecute el siguiente comando:
Este comando instala las bibliotecas requeridas para ejecutar la aplicación.
Cargue el conjunto de datos de muestra en la base de datos
Asegúrese de haber creado un secreto en Secrets Manager nombrado mssql_secrets Como se menciona en los requisitos previos. Si llamó a su secreto algo más, actualice el código en app.py (línea 29) y load_data.py (Línea 22).
Después de crear el secreto, ejecute el siguiente comando desde la carpeta de código:
Este comando crea una base de datos llamada Sales con mesas Products, Customersy Orders y carga los datos de muestra en estas tablas.
Ejecutar la aplicación
Para ejecutar la aplicación, ejecute el siguiente comando:
Consultas de ejemplo
En esta sección, exploramos algunas consultas de muestra.
Para nuestra primera consulta, le preguntamos “¿Quiénes son los clientes que compraron teléfonos inteligentes?” Esto genera el siguiente SQL:
Obtenemos la siguiente respuesta formateada:
Alice Johnson, who bought 1 smartphone on October 14th, 2023.Ivy Martinez, who bought 2 smartphones on October 15th, 2023.
A continuación, preguntamos “¿cuántos teléfonos inteligentes están en stock?” Esto genera el siguiente SQL:
Recibimos la respuesta “Hay 100 teléfonos inteligentes actualmente en stock”.
Flujo de ejecución del código
En esta sección, exploramos el flujo de ejecución del código. La referencia del código es de la Repositorio de Github. No ejecute las diferentes partes del código individualmente.
Recuperar el esquema dinámicamente
Usar INFORMATION_SCHEMA Vistas para extraer detalles del esquema dinámicamente (referencia de código de app.py)
La recuperación de esquema dinámico se adapta automáticamente a los cambios consultando tablas de metadatos para obtener detalles de esquema actualizados, como nombres de tabla y tipos de columnas. Esto facilita la integración perfecta de las actualizaciones de esquema en el sistema de texto a SQL, reduciendo el esfuerzo manual y mejorando la escalabilidad.
Pruebe esta función para verificarlo se adapta automáticamente cuando ocurren cambios en el esquema.
Antes de generar SQL, obtenga detalles del esquema de las tablas relevantes para facilitar la construcción precisa de consultas.
Generar una consulta SQL con Amazon Nova Pro
Envíe la consulta de usuario y el contexto de esquema a Amazon Nova Pro (referencia de código desde sql_generator.py)
Este código establece un contexto estructurado para un caso de uso de texto a SQL, guiando a Amazon Nova Pro para generar consultas SQL basadas en un esquema de base de datos predefinido. Proporciona consistencia al definir un contexto de base de datos estático que aclare los nombres de las tabla, las columnas y las relaciones, ayudando a prevenir la ambigüedad en la formación de consultas. Se requieren consultas para hacer referencia al vw_sales Ver, estandarizar la extracción de datos para análisis e informes. Además, siempre que sea aplicable, las consultas generadas deben incluir campos relacionados con la cantidad, asegurándose de que los usuarios comerciales reciban información clave sobre las ventas de productos, los niveles de acciones o los recuentos transaccionales. Para mejorar la flexibilidad de búsqueda, se instruye al LLM para usar el operador similar en las condiciones en lugar de coincidencias exactas, permitiendo coincidencias parciales y variaciones acomodadas en la entrada del usuario. Al hacer cumplir estas restricciones, el código optimiza las interacciones de texto a SQL, proporcionando una generación de consultas estructurada, relevante y alineada en el negocio para el análisis de datos de ventas.
Ejecutar una consulta SQL
Ejecute la consulta SQL en la base de datos y capture el resultado (referencia de código desde app.py)
Formatear los resultados de la consulta con Amazon Nova Lite
Envíe el resultado de la base de datos de la consulta SQL a Amazon Nova Lite para formatearla en un formato legible por humanos e imprima en la interfaz de usuario de transmisión (referencia de código desde app.py)
Limpiar
Siga estos pasos para limpiar los recursos en su entorno AWS y evitar incurrir en costos futuros:
- Limpiar los recursos de la base de datos:
- Limpiar recursos de seguridad:
- Limpie el frontend (solo si aloja la aplicación de transmisión en Amazon EC2):
- Detenga la instancia de EC2 alojando la aplicación de transmisión.
- Eliminar volúmenes de almacenamiento asociados.
- Limpiar recursos adicionales (si corresponde):
- Retire los equilibradores de carga elástica.
- Eliminar configuraciones virtuales de nube privada (VPC).
- Revise el Consola de gestión de AWS Para confirmar todos los recursos se han eliminado.
Conclusión
Texto a SQL con Amazon Bedrock y Amazon Nova LLMS proporciona una solución escalable para consultas deterministas basadas en esquemas. Al ofrecer resultados consistentes y precisos, permite a las organizaciones tomar decisiones informadas, mejorar la eficiencia operativa y reducir la dependencia de los recursos técnicos.
Para un ejemplo más completo de una solución de texto a SQL construida en Amazon Bedrock, explore el repositorio de GitHub Configurar el agente de rock de Amazon para texto a SQL con Amazon Athena con racionalización. Este proyecto de código abierto demuestra cómo usar Amazon Bedrock y Amazon Nova LLMS para construir un agente de texto a SQL robusto que pueda generar consultas complejas, autocorrección y consultar diversas fuentes de datos.
Comience a experimentar con los casos de uso de texto a SQL hoy comenzando con Amazon Bedrock.
Sobre los autores
Mansi Sharma es un arquitecto de soluciones para Amazon Web Services. Mansi es un asesor técnico de confianza que ayuda a los clientes empresariales a arquitectos e implementa soluciones en la nube a escala. Ella impulsa el éxito de los clientes a través del liderazgo técnico, la orientación arquitectónica y la resolución innovadora de problemas mientras trabaja con tecnologías en la nube de vanguardia. Mansi se especializa en desarrollo generativo de aplicaciones de IA y tecnologías sin servidor.
Marie Yap es un arquitecto principal de soluciones para Amazon Web Services. En este papel, ella ayuda a varias organizaciones a comenzar su viaje hacia la nube. También se especializa en análisis y arquitecturas de datos modernas.