Uso de Select AI para generar SQL a partir de peticiones de datos de lenguaje natural

Autonomous AI Database on Dedicated Exadata Infrastructure La selección de IA permite consultar los datos mediante lenguaje natural.

La función Select AI permite a Autonomous AI Database utilizar IA generativa con grandes modelos de lenguaje (LLM) para convertir el texto de entrada del usuario en Oracle SQL. Seleccione AI procesa la petición de datos en lenguaje natural, complementa la petición de datos con metadatos y, a continuación, genera y ejecuta una consulta SQL.

Plataformas soportadas

La selección de IA está soportada en Autonomous AI Database sin servidor y Autonomous AI Database on Dedicated Exadata Infrastructure and Cloud at Customers.

  • Autonomous AI Database sin servidor
  • base de datos de IA autónoma en una infraestructura de Exadata dedicada
  • Región de base de datos de IA autónoma en infraestructura de Exadata dedicada
  • Base de datos de IA autónoma Cloud@Customer

Acerca de la generación de SQL

El uso del lenguaje natural para interactuar con los datos de la base de datos ahora se puede lograr con los LLM. Esto significa que puede utilizar el lenguaje natural, por ejemplo, el inglés simple, para consultar la base de datos.

Al utilizar Select AI, Autonomous AI Database gestiona el proceso de conversión de lenguaje natural en SQL. Esto significa que puede proporcionar una petición de datos en lenguaje natural en lugar de código SQL para interactuar con los datos. Select AI sirve como una herramienta de productividad para los usuarios y desarrolladores de SQL y permite a los usuarios de SQL no expertos obtener información útil de sus datos, sin tener que comprender estructuras de datos o lenguajes técnicos.

El paquete DBMS_CLOUD_AI de Autonomous AI Database permite la integración con un LLM especificado por el usuario para generar código SQL mediante peticiones de datos en lenguaje natural. El paquete ayuda a proporcionar al LLM conocimientos sobre el esquema de base de datos y le indica que escriba una consulta SQL consistente con ese esquema. El paquete DBMS_CLOUD_AI funciona con proveedores de IA como OpenAI, Cohere, Azure OpenAI Service y Oracle Cloud Infrastructure Generative AI.

Note:

Los usuarios deben tener una cuenta con el proveedor de AI y proporcionar sus credenciales mediante los objetos DBMS_CLOUD_AI que utiliza la base de datos de IA autónoma.

Terminología

Es importante comprender los diversos términos utilizados con Select AI antes de usarla.

A continuación, se muestran los términos relacionados con la función Seleccionar AI:

Término Definición

Credencial de Base de Datos

Las credenciales de base de datos son credenciales de autenticación utilizadas para acceder a las bases de datos e interactuar con ellas. Por lo general, consisten en un nombre de usuario y una contraseña, a veces complementados con factores de autenticación adicionales como tokens de seguridad. Estas credenciales se utilizan para establecer una conexión segura entre una aplicación o un usuario y una base de datos, lo que garantiza que solo las personas o los sistemas autorizados puedan acceder y manipular los datos almacenados en la base de datos.

Alucinación en LLM

La alucinación en el contexto de los modelos de lenguaje grande se refiere a un fenómeno en el que el modelo genera texto que es incorrecto, sin sentido o no está relacionado con el indicador de entrada. A pesar de ser el resultado del intento del modelo de generar texto coherente, estas instancias pueden contener información fabricada, engañosa o puramente imaginativa. La alucinación puede ocurrir debido a sesgos en los datos de entrenamiento, falta de comprensión del contexto adecuado o limitaciones en el proceso de entrenamiento del modelo.

IAM Oracle Cloud Infrastructure Identity and Access Management (IAM) le permite controlar quién tiene acceso a sus recursos en la nube. Puede controlar qué tipo de acceso tiene un grupo de usuarios y a qué recursos específicos. Para obtener más información, consulte Visión general de Identity and Access Management.

Peticiones de datos de lenguaje natural

Las peticiones de datos de lenguaje natural son instrucciones o solicitudes legibles por humanos que se proporcionan para guiar los modelos de IA generativa, como los modelos de lenguaje grande. En lugar de utilizar lenguajes de programación o comandos específicos, los usuarios pueden interactuar con estos modelos introduciendo peticiones de datos en una forma de lenguaje más conversacional o natural. A continuación, los modelos generan una salida basada en la petición de datos proporcionada.

Lista de control de acceso de red (ACL)

Una lista de control de acceso de red es un conjunto de reglas o permisos que definen qué tráfico de red puede pasar a través de un dispositivo de red, como un enrutador, un firewall o una puerta de enlace. Las ACL se utilizan para controlar y filtrar el tráfico entrante y saliente en función de diversos criterios, como direcciones IP, números de puerto y protocolos. Desempeñan un papel crucial en la seguridad de la red al permitir a los administradores gestionar y restringir el tráfico de red para evitar el acceso no autorizado, posibles ataques y violaciones de datos.

Búsqueda de similitud

La búsqueda de similitud identifica y recupera puntos de datos que coinciden estrechamente con una consulta determinada mediante la comparación de vectores de funciones en un almacén de vectores.

Distancias vectoriales

Las distancias vectoriales miden la similitud o disimilitud entre los vectores de características al calcular la distancia entre ellos en un espacio multidimensional.

Índice de vector

Un índice vectorial organiza y almacena vectores de características para permitir una búsqueda de similitud eficiente y la recuperación de datos relacionados.

Tienda de vectores

Un almacén de vectores incluye sistemas que almacenan, gestionan y permiten la búsqueda de similitud semántica con incrustaciones vectoriales. Esto incluye bases de datos vectoriales independientes y Oracle Database 23ai AI Vector Search.

Instrucciones de uso

Proporciona directrices de uso que garantizan un uso eficaz y adecuado de las peticiones de datos en lenguaje natural para la generación de SQL a fin de garantizar una experiencia de usuario mejorada.

Finalidad

Esta función está destinada a la generación y ejecución de consultas SQL resultantes de peticiones de datos de lenguaje natural proporcionadas por el usuario. Automatiza lo que un usuario podría hacer manualmente en función de sus metadatos de esquema en combinación con un modelo de lenguaje grande (LLM) de su elección.

Si bien se puede proporcionar cualquier petición de datos, incluidas las que no están relacionadas con la producción de resultados de consultas SQL, Select AI se centra en la generación de consultas SQL. Seleccione AI para ejecutar solicitudes generales con la acción chat.

Petición de datos de aumento

La base de datos aumenta la petición de datos especificada por el usuario con metadatos de base de datos para mitigar las alucinaciones del LLM. A continuación, la petición de datos aumentada se envía al LLM especificado por el usuario para producir la consulta.

La base de datos aumenta la petición de datos solo con metadatos de esquema. Estos metadatos pueden incluir definiciones de esquema, comentarios de tabla y columna y contenido disponible en el diccionario de datos y el catálogo. Para la generación de SQL, la base de datos no proporciona contenido de tabla o vista (valores reales de fila o columna) al aumentar la petición de datos.

Sin embargo, la acción narrate proporciona el resultado de la consulta, que puede contener datos de la base de datos, al LLM especificado por el usuario a partir del cual se genera texto en lenguaje natural que describe los resultados de la consulta.

ADVERTENCIA:

Los grandes modelos de lenguaje (LLM) se han entrenado en un amplio conjunto de documentación y contenido de texto, generalmente desde Internet. Como resultado, los LLM pueden haber incorporado patrones de contenido no válido o malicioso, incluida la inyección SQL. Por lo tanto, mientras que los LLM son expertos en generar contenido útil y relevante, también pueden generar información incorrecta y falsa, incluidas consultas SQL que producen resultados inexactos y / o comprometen la seguridad de sus datos.

Las consultas generadas en su nombre por el proveedor de LLM especificado por el usuario se ejecutarán en su base de datos. Su uso de esta función se realiza bajo su propio riesgo y, independientemente de cualesquiera otros términos y condiciones relacionados con los Servicios prestados por Oracle, constituye su aceptación de dicho riesgo y exclusión expresa de la responsabilidad o responsabilidad de Oracle por los daños resultantes de dicho uso.

Seleccione su proveedor de IA y LLM

Elige un proveedor de IA y un LLM que cumpla con tus estándares de seguridad y se ajuste a tus necesidades específicas, como la generación de texto o código.

Los diferentes LLM sobresalen en varias tareas en función de sus datos de entrenamiento y el propósito previsto. Algunos modelos son excelentes para la generación de texto, pero pueden no funcionar bien en la generación de código, mientras que otros están específicamente optimizados para tareas de codificación. Elija un LLM que mejor se adapte a sus necesidades.

Proveedor de IA LLM Modelo de inserción para RAG Finalidad

OCI Generative AI

  • meta.llama-3.3-70b-instruct (por defecto)
  • meta.llama-3.2-90b-vision-instruct
  • meta.llama-3.2-11b-vision-instruct
  • meta.llama-3.1-70b-instruct
  • meta.llama-3.1-405b-instruct
  • cohere.command-r-08-2024
  • cohere.command-r-plus-08-2024
  • cohere.command-r-16k (en desuso)
  • cohere.command–r-plus (en desuso)
  • xai.grok-3
  • xai.grok-3-fast
  • xai.grok-3-mini
  • xai.grok-3-mini-fast
  • cohere.embed-english-v3.0 (por defecto)
  • cohere.embed-multilingual-v3.0
  • cohere.embed-english-light-v3.0
  • cohere.embed-multilingual-light-v3.0

Consulte Acerca de la incorporación de modelos en la IA generativa.

Los modelos de chat de OCI Generative AI están soportados para todas las acciones SELECT AI, como runsql, showsql, explainsql, narrate y chat.

Los modelos de texto Generar de OCI solo están soportados para la acción SELECT AI chat.

Para configurar los atributos de perfil, consulte .

Servicio OpenAI de Azure

  • GPT-4o
  • GPT-4
  • GPT-4 Turbo con Visión
  • GPT-3.5-Turbo

texto-embedding-ada-002

Se adapta mejor a la generación de SQL a partir de peticiones de datos en lenguaje natural, la acción chat y Select AI RAG.

OpenAI

  • gpt-3.5-turbo (predeterminado)
  • gpt-4o
  • gpt-4o-mini
  • gpt-4
  • gpt-4-0613
  • gpt-4-32k
  • gpt-4-32k-0613
  • gpt-3.5-turbo-0613
  • gpt-3.5-turbo-16k
  • gpt-3.5-turbo-16k-0613

texto-embedding-ada-002

Se adapta mejor a la generación de SQL a partir de peticiones de datos en lenguaje natural, la acción chat y Select AI RAG.

Compatible con OpenAI

Modelos de proveedores compatibles con OpenAI, como:
  • Fireworks AI
  • xAI
  • Otros
Incorporación de modelos de proveedores compatibles con OpenAI. Por ejemplo, consulte Modelos de incrustación de Fireworks AI.

Admite una amplia gama de casos de uso.

Cohere

  • comando (predeterminado)
  • comando-noche (experimental)
  • comando-r
  • comando-r-plus
  • luz de comandos
  • comando-luz-noche (experimental)
  • modelos personalizados

embebido-español-v2.0

Más adecuado para la acción chat.

Google

  • gemini-1.5-flash (predeterminado)
  • gemini-1.5-pro
  • gemini-1.0-pro
text-embedding-004 (por defecto)

Se adapta mejor a la generación de SQL a partir de peticiones de datos en lenguaje natural, la acción chat y Select AI RAG.

Antropología

  • claude-3-5-sonnet-20240620 (valor por defecto)
  • claude-3-opus-20240229
  • claude-3-sonnet-20240229
  • claude-3-haiku-20240307
NA

Se adapta mejor a la generación de SQL a partir de peticiones de datos en lenguaje natural, la acción chat y Select AI RAG.

Hugging Face

  • Mixtral-8x7B-Instruct-v0.1 (predeterminado)
  • Meta-Llama-3-70B-Instruct
  • Qwen1.5-1.8B
  • otras modelos de chat
NA

Se adapta mejor a la generación de SQL a partir de peticiones de datos en lenguaje natural, la acción chat y Select AI RAG.

AWS

  • amazon.titan-embed-text-v1
  • amazon.titan-embed-text-v2:0
  • cohere.embed-inglés-v3

Admite una amplia gama de casos de uso.

Note:

  • Especifique un proveedor compatible con OpenAI mediante provider_endpoint en lugar del parámetro provider. Consulte .

  • Para los modelos que aceptan imágenes, utilice meta.llama-3.2-90b-vision-instruct. Este modelo está específicamente entrenado para la visión y las imágenes. Aunque se puede utilizar para la generación de texto y SQL, el modelo es el más adecuado para imágenes. Para obtener más información, consulte Chat en OCI Generative AI.

    El modelo meta.llama-3.2-11b-vision-instruct proporciona sólidas capacidades multimodales.

  • Los modelos de inserción también se conocen como modelos de transformadores.

Seleccionar conceptos de IA

Explora los conceptos y términos relacionados con Select AI.

Acerca de la Generación SQL

Ahora se puede utilizar el lenguaje natural para interactuar con los datos de la base de datos con los LLM. Esto significa que puede utilizar el lenguaje natural, por ejemplo, el inglés simple, para consultar la base de datos.

Al utilizar Select AI, Autonomous AI Database gestiona el proceso de conversión de lenguaje natural en SQL. Esto significa que puede proporcionar una petición de datos en lenguaje natural en lugar de código SQL para interactuar con los datos. Select AI sirve como una herramienta de productividad para los usuarios y desarrolladores de SQL y permite a los usuarios de SQL no expertos obtener información útil de sus datos, sin tener que comprender estructuras de datos o lenguajes técnicos.

El paquete DBMS_CLOUD_AI de Autonomous AI Database permite la integración con un LLM especificado por el usuario para generar código SQL mediante peticiones de datos en lenguaje natural. El paquete ayuda a proporcionar al LLM conocimientos sobre el esquema de base de datos y le indica que escriba una consulta SQL consistente con ese esquema. El paquete DBMS_CLOUD_AI funciona con proveedores de IA como OpenAI, Cohere, Azure OpenAI Service y Oracle Cloud Infrastructure Generative AI.

Note:

Los usuarios deben tener una cuenta con el proveedor de AI y proporcionar sus credenciales mediante los objetos DBMS_CLOUD_AI que utiliza la base de datos de IA autónoma.

Uso de DBMS_CLOUD_AI para configurar perfiles de AI

Autonomous AI Database utiliza perfiles de IA para facilitar y configurar el acceso a un LLM y para configurar la generación de sentencias SQL a partir de peticiones de datos en lenguaje natural.

Los perfiles de IA incluyen objetos de base de datos que son el destino de las consultas de lenguaje natural. Los metadatos utilizados desde estos destinos pueden incluir nombres de tabla de base de datos, nombres de columna, tipos de dato de columna y comentarios. Puede crear y configurar perfiles AI mediante los procedimientos DBMS_CLOUD_AI.CREATE_PROFILE y DBMS_CLOUD_AI.SET_PROFILE.

Requisitos para configurar el paquete DBMS_CLOUD_AI

Para ejecutar DBMS_CLOUD_AI, se necesita lo siguiente:

  • Acceso a una cuenta en la nube de Oracle Cloud Infrastructure y a una instancia de Autonomous AI Database.
  • Una cuenta de API de pago para un proveedor de IA compatible, una de las siguientes opciones:
    • OpenAI: para permitir que OpenAI genere SQL a partir de peticiones de datos en lenguaje natural, obtenga las claves de API de su cuenta de pago OpenAI.

      Puede encontrar la clave de API secreta en la configuración de usuario.

    • Aquí: para permitir que Cohere genere SQL a partir de peticiones de datos en lenguaje natural, obtenga claves API de su cuenta de pago de Cohere.

      Haga clic en Panel de control y, a continuación, en Claves de API, en la navegación izquierda. Copie la clave de API por defecto o cree otra. Consulte API-Keys para obtener más información.

    • Servicio OpenAI de Azure: para activar Servicio OpenAI de Azure para generar SQL a partir de peticiones de datos de lenguaje natural, configure y proporcione acceso al proveedor de IA.

      Para utilizar Azure OpenAI Service, realice los siguientes pasos:

      1. Obtenga sus claves API secretas. Puede encontrar sus claves de API en la sección Resource Management de su portal de Azure. En la página Recurso de Azure OpenAI Service, haga clic en Claves y punto final. Puede copiar KEY1 o KEY2.
      2. Cree un recurso Azure OpenAI Service y despliegue un modelo: Cree y despliegue un recurso de servicio OpenAI de Azure.

        Sugerencia:

        • Tenga en cuenta el nombre de recurso y el nombre de despliegue, ya que estos parámetros se utilizan para proporcionar permiso de acceso de red y crear el perfil de Azure OpenAI Service mediante el procedimiento DBMS_CLOUD_AI.CREATE_PROFILE.
        • Para obtener más información sobre los límites de frecuencia para el token por minuto en un modelo, consulte Cuotas y límites del servicio OpenAI de Azure.
      3. Permitir acceso al servicio OpenAI de Azure:
        • Puede utilizar su clave de API secreta para permitir el acceso a Azure OpenAI Service. Para obtener más información, consulte el ejemplo de .
    • IA generativa de OCI: consulte Cómo generar la clave de firma de API.
    • Google: para permitir que Google AI Studio genere respuestas de texto y SQL a sus peticiones de datos en lenguaje natural, obtenga claves de API de su cuenta de pago de Google AI Studio.
      1. Vaya a Google AI Studio.
      2. Haga clic en Iniciar sesión en Google AI Studio.
      3. Haga clic en Obtener clave de API en la pantalla de petición de datos.
      4. Seleccione todas las opciones aplicables en la página siguiente.
      5. Haga clic en Create API key.
      6. Haga clic en Create API key en el nuevo proyecto.

        La pantalla muestra el progreso y genera una clave de API. Copie la clave y guárdela.

    • Antrópico: para permitir que la consola de desarrollador antrópica genere respuestas de texto y SQL a sus peticiones de datos en lenguaje natural, obtenga claves de API de su cuenta de pago de la consola de desarrollador antrópica.
      1. Vaya a Anthropic Developer Console.
      2. Regístrate para obtener una cuenta si aún no tienes una.
      3. Una vez conectado, vaya a la sección API o al panel de control.
      4. Busque una opción para generar o ver claves de API.
      5. Haga clic para crear una nueva clave de API.
      6. Copie la clave de API generada y guárdela.

        La API de Claude es un servicio de pago. Tendrás que agregar créditos a tu cuenta para poder usar la clave de API.

    • Hugging Face: para permitir que Hugging Face como proveedor de IA genere respuestas de SQL y texto a sus peticiones de datos en lenguaje natural, obtenga claves API de su cuenta de pago de Hugging Face.
      1. Vaya a Hugging Face.
      2. Regístrate para obtener una cuenta si aún no tienes una.
      3. Vaya a la configuración de su cuenta.
      4. En el menú de navegación, busque los tokens de acceso.
      5. Haga clic para crear una nueva clave de API.
      6. Copie la clave de API generada y guárdela.
    • AWS: para activar AWS, obtenga su clave de API y su ID de modelo.

      Obtenga su clave de API y úsela para crear credenciales a través de DBMS_CLOUD.CREATE_CREDENTIAL.

      Siga este proceso para obtener la clave de API y el nombre del modelo:

      1. Regístrese en una cuenta de AWS si aún no tiene una.
      2. Cree las claves de acceso y las claves secretas desde la consola Bedrock de AWS.
      3. Copie las claves generadas y guárdelas.
      4. Solicite acceso a sus modelos básicos. Consulte Acceso a los modelos básicos de Amazon Bedrock.
      5. Obtenga el ID de modelo. Necesita el ID de modelo en el procedimiento DBMS_CLOUD_AI.CREATE_PROFILE. El ID de modelo depende de los recursos que utilice. Si utiliza:

        Note:

        El modelo importado no está soportado con la API de Bedrock Converse.

      Para usar AWS como proveedor, consulte Ejemplo: selección de IA con AWS.

  • Privilegios de ACL de red para acceder al proveedor de AI externo.

    Note:

    La ACL de red no es aplicable a OCI Generative AI.
  • Credencial que proporciona acceso al proveedor de AI.

Configurar paquete DBMS_CLOUD_AI

Antes de utilizar Select AI, estos son los pasos para activar DBMS_CLOUD_AI.

Para configurar DBMS_CLOUD_AI:
  1. Otorgue el privilegio EXECUTE en el paquete DBMS_CLOUD_AI al usuario que desea utilizar Select AI.

    Por defecto, solo se otorga el privilegio EXECUTE al usuario ADMIN. El usuario ADMIN puede otorgar el privilegio EXECUTE a otros usuarios.

  2. Otorgue acceso de ACL de red al usuario que desea utilizar Select AI y para el punto final del proveedor de AI.

    El usuario ADMIN puede otorgar acceso a la ACL de red. Consulte APPEND_HOST_ACE Procedure en Oracle Database 19c PL/SQL Packages and Types Reference o Oracle Database 26ai PL/SQL Packages and Types Reference para obtener más información.

  3. Cree una credencial para permitir el acceso a su proveedor de AI.

    Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.

En el siguiente ejemplo se otorga el privilegio EXECUTE a ADB_USER:
grant execute on DBMS_CLOUD_AI to ADB_USER;

En el siguiente ejemplo se otorga a ADB_USER el privilegio para utilizar el punto final api.openai.com.

BEGIN  
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
         host => 'api.openai.com',
         ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                             principal_name => 'ADB_USER',
                             principal_type => xs_acl.ptype_db)
   );
END;
/

Parámetros de Función APPEND_HOST_ACE

parámetro Descripción

host

El host, que puede ser el nombre o la dirección IP del host. Puede utilizar un comodín para especificar un dominio o una subred IP. El host o el nombre de dominio no son sensibles a mayúsculas/minúsculas.

Para OpenAI, utilice api.openai.com.

Para Cohere, utilice api.cohere.ai.

Para Azure OpenAI Service, utilice <azure_resource_name>.openai.azure.com. Consulte Atributos de perfil para obtener más información sobre azure_resource_name.

Para Google, utilice generativelanguage.googleapis.com.

Para Anthropic, utilice api.anthropic.com.

Para abrazar la cara, utilice api-inference.huggingface.co.

ace

Las entradas de control de acceso (ACE). El tipo XS$ACE_TYPE se proporciona para crear cada entrada ACE para la ACL. Para obtener más información, consulte Creación de ACL y ACE en Oracle Database 19c Real Application Security Administrator's and Developer's Guide u Oracle Database 26ai Real Application Security Administrator's and Developer's Guide.

A continuación se muestra un ejemplo de cómo crear una credencial para activar el acceso a OpenAI.

EXEC DBMS_CLOUD.CREATE_CREDENTIAL('OPENAI_CRED', 'OPENAI', 'your_api_token');

Parámetros de DBMS_CLOUD.CREATE_CREDENTIAL

parámetro Descripción

credential_name

Nombre de la credencial que se va a almacenar. El parámetro credential_name debe cumplir las convenciones de nomenclatura de objetos de Oracle, que no permiten espacios ni guiones.

username

Los argumentos username y password especifican conjuntamente las credenciales del proveedor de AI.

username es un nombre de usuario especificado por el usuario.

password

Los argumentos username y password especifican conjuntamente las credenciales del proveedor de AI.

password es la clave de API secreta de su proveedor de IA y depende del proveedor, es decir, OpenAI, Cohere, Azure OpenAI Service, OCI, Google, Anthropic o Hugging Face. Consulte Requirements to Configure DBMS_CLOUD_AI Package para obtener detalles.

Creación y definición de un perfil de AI

Describe los pasos para crear y activar un perfil de AI.

Utilice DBMS_CLOUD_AI.CREATE_PROFILE para crear un perfil de AI. A continuación, inicie DBMS_CLOUD_AI.SET_PROFILE para activar el perfil AI para que pueda utilizar SELECT AI con una petición de datos de lenguaje natural.

Note:

Debe ejecutar DBMS_CLOUD_AI.SET_PROFILE en cada nueva sesión de base de datos (conexión) antes de utilizar SELECT AI.

En el siguiente ejemplo con el proveedor OpenAI se crea un perfil AI denominado OPENAI y se define el perfil OPENAI para la sesión de usuario actual.

-- Create AI profile
--
SQL> BEGIN
  DBMS_CLOUD_AI.create_profile(
      'OPENAI',
      '{"provider": "openai",
        "credential_name": "OPENAI_CRED",
        "object_list": [{"owner": "SH", "name": "customers"},
                        {"owner": "SH", "name": "sales"},
                        {"owner": "SH", "name": "products"},
                        {"owner": "SH", "name": "countries"}]
       }');
END;
/
 
PL/SQL procedure successfully completed.
 
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
 
PL/SQL procedure successfully completed.

Uso de la palabra clave AI para introducir peticiones de datos

Utilice AI como palabra clave en una sentencia SELECT para interactuar con la base de datos mediante peticiones de datos en lenguaje natural.

La palabra clave AI en una sentencia SELECT indica al motor de ejecución SQL que utilice el LLM identificado en el perfil de AI activo para procesar el lenguaje natural y generar SQL.

Puede utilizar la palabra clave AI en una consulta con clientes de Oracle como SQL Developer, OML Notebooks y herramientas de terceros para interactuar con la base de datos en lenguaje natural.

Note:

No se pueden ejecutar sentencias PL/SQL, DDL ni DML mediante la palabra clave AI.

Sintaxis

La sintaxis para ejecutar el indicador AI es:
SELECT AI action natural_language_prompt

Parámetros

A continuación se muestran los parámetros disponibles para el parámetro action:
parámetro Descripción

runsql

Ejecute el comando SQL proporcionado mediante una petición de datos en lenguaje natural. Esta es la acción por defecto y es opcional especificar este parámetro.

showsql

Muestra la sentencia SQL para una petición de datos en lenguaje natural.

narrate

La salida del mensaje se explica en lenguaje natural. Esta opción envía el resultado de SQL al proveedor de AI para generar un resumen de lenguaje natural.

chat

Genera una respuesta directamente desde el LLM en función de la petición de datos. Si conversation en la función DBMS_CLOUD_AI.CREATE_PROFILE está definido en true, esta opción incluye contenido de interacciones o peticiones de datos anteriores, lo que puede incluir metadatos de esquema.

explainsql

El SQL generado a partir de la petición de datos se explica en lenguaje natural. Esta opción envía el SQL generado al proveedor de AI para producir una explicación del lenguaje natural.

Notas de uso

  • Seleccione AI no está soportado en Database Actions ni en el servicio APEX. Solo puede utilizar la función DBMS_CLOUD_AI.GENERATE.

  • La palabra clave AI solo está soportada en una sentencia SELECT.

  • No se pueden ejecutar sentencias PL/SQL, DDL ni DML mediante la palabra clave AI.

  • La secuencia es SELECT seguida de AI. Estas palabras clave no distinguen mayúsculas y minúsculas. Después de configurar DBMS_CLOUD_AI.SET_PROFILE, el texto después de SELECT AI es una petición de datos de lenguaje natural. Si no se define un perfil AI, SELECT AI informa el siguiente error:

    ORA-00923: FROM keyword not found where expected
    00923. 00000 -  "FROM keyword not found where expected"
  • Las reglas de uso de caracteres especiales se aplican de acuerdo con las directrices de Oracle. Por ejemplo, use comillas simples dos veces si está usando un apóstrofe en una oración.

    select ai how many customers in SF don''t own their own home
  • Los LLM están sujetos a alucinaciones y los resultados no siempre son correctos:

    • Es posible que SELECT AI no pueda ejecutar el SQL generado para una petición de datos de lenguaje natural específica.

    • Es posible que SELECT AI no pueda generar SQL para una petición de datos de lenguaje natural específica.

    En tal caso, SELECT AI responde con información para ayudarle a generar SQL válido.

  • Utilice la acción chat, con SELECT AI chat, para obtener más información sobre las construcciones SQL. Para obtener mejores resultados con la acción chat, utilice vistas o tablas de base de datos con nombres de columna contextuales o considere agregar comentarios de columna que expliquen los valores almacenados en las columnas.

  • Para acceder a las vistas DBA o USER, consulte Vistas DBMS_CLOUD_AI.

Ejemplo: selección de acciones de AI

Estos ejemplos ilustran acciones comunes de selección de IA.

En el siguiente ejemplo, se muestran acciones como runsql (valor por defecto), showsql, narrate, chat, explainsql, feedback y summarize que puede realizar con SELECT AI. Estos ejemplos utilizan el esquema sh con los atributos de perfil y proveedor de AI especificados en la función DBMS_CLOUD_AI.CREATE_PROFILE. Utilice las acciones Select AI después de definir el perfil AI mediante el procedimiento DBMS_CLOUD_AI.SET_PROFILE en la sesión actual.

Para generar un resumen del texto, utilice SELECT AI SUMMARIZE <TEXT>.

SQL> select ai how many customers exist;
 
CUSTOMER_COUNT
--------------
         55500
 
SQL> select ai showsql how many customers exist;
 
RESPONSE
----------------------------------------------------
SELECT COUNT(*) AS total_customers
FROM SH.CUSTOMERS
 
 
SQL> select ai narrate how many customers exist;
 
RESPONSE
------------------------------------------------------
There are a total of 55,500 customers in the database.
 
SQL> select ai chat how many customers exist;
 
RESPONSE
--------------------------------------------------------------------------------
It is impossible to determine the exact number of customers that exist as it con
stantly changes due to various factors such as population growth, new businesses
, and customer turnover. Additionally, the term "customer" can refer to individu
als, businesses, or organizations, making it difficult to provide a specific num
ber.


SQL> select ai explainsql how many customers in San Francisco are married;
 
RESPONSE
--------------------------------------------------------------------------------
SELECT COUNT(*) AS customer_count
FROM SH.CUSTOMERS AS c
WHERE c.CUST_STATE_PROVINCE = 'San Francisco' AND c.CUST_MARITAL_STATUS = 'Married';
 
Explanation:
- We use the 'SH' table alias for the 'CUSTOMERS' table for better readability.
- The query uses the 'COUNT(*)' function to count the number of rows that match the given conditions.
- The 'WHERE' clause is used to filter the results:
  - 'c.CUST_STATE_PROVINCE = 'San Francisco'' filters customers who have 'San Francisco' as their state or province.
  - 'c.CUST_MARITAL_STATUS = 'Married'' filters customers who have 'Married' as their marital status.
The result of this query will give you the count of customers in San Francisco who are married, using the column alias 'customer_count' for the result.
 
Remember to adjust the table and column names based on your actual schema if they differ from the example.
 
Feel free to ask if you have more questions related to SQL or database in general.

-- Feedback on SQL Text
-- Negative feedback example:
SQL > select ai feedback for query "select ai showsql how many watch histories in total", please use sum instead of count;
-- Positive feedback example:
SQL > select ai feedback for query "select ai showsql how many watch histories in total", the sql query generated is correct;
 
-- Feedback on SQL ID
-- Negative feedback example:
SQL > select ai feedback please use sum instead of count for sql_id  1v1z68ra6r9zf;
-- Positive feedback example:
SQL > select ai feedback sql query result is correct for sql_id  1v1z68ra6r9zf;
 
-- If not specified, use default LASTAI SQL
-- To use default LASTAI sql, make sure that set server output off;
-- Negative feedback example:
SQL > select ai feedback please use ascending sorting for ranking;
-- Positive feedback example:
SQL > select ai feedback the result is correct;

SQL> SELECT AI SUMMARIZE
Like countless other people around the globe, I stream music, and like more
than six hundred million of them I mainly use Spotify. Streaming currently
accounts for about eighty per cent of the American recording industry’s
revenue, and in recent years Spotify’s health is often consulted as a measure
for the health of the music business over all. Last spring, the International
Federation of the Phonographic Industry reported global revenues of $28.6
billion, making for the ninth straight year of growth. All of this was
unimaginable in the two-thousands, when the major record labels appeared
poorly equipped to deal with piracy and the so-called death of physical media.
On the consumer side, the story looks even rosier. Adjusted for inflation, a
 
... (skipped 1000 rows in the middle)
 
Pelly writes of some artists, in search of viral fame, who surreptitiously use
social media to effectively beta test melodies and motifs, basically putting
together songs via crowdsourcing. Artists have always fretted about the
pressure to conform, but the data-driven, music-as-content era feels
different. “You are a Spotify employee at that point,” Daniel Lopatin, who
makes abstract electronic music as Oneohtrix Point Never, told Pelly. “If your
art practice is so ingrained in the brutal reality that Spotify has outlined
for all of us, then what is the music that you’re not making? What does the
music you’re not making sound like?” Listeners might wonder something similar.
What does the music we’re not hearing sound like?;
 
 
RESPONSE
------------------------------------------------------------------------------
The music streaming industry, led by Spotify, has revolutionized the way
people consume music, with streaming accounting for 80% of the American
recording industry's revenue. However, this shift has also complicated the
lives of artists, who struggle to survive in a hyper-abundant present where
music is often valued for its convenience rather than its artistic merit.
Spotify's algorithms prioritize popularity and profitability over artistic
diversity, leading to a homogenization of music and a devaluation of the
labor that goes into creating it. Meanwhile, the company's executives reap
enormous profits, with CEO Daniel Ek's net worth rivaling that of the
wealthiest musicians. As music critic Liz Pelly argues, the streaming economy
raises important questions about autonomy, creativity, and the value of art
in a world where everything is readily available and easily accessible.

Ejemplo: selección de IA con AWS

En este ejemplo, se muestra cómo puede utilizar AWS para generar, ejecutar y explicar SQL a partir de peticiones de datos en lenguaje natural o chatear con los modelos disponibles con AWS.

En el siguiente ejemplo se muestra cómo utilizar AWS como proveedor de IA con Amazon Bedrock y sus modelos básicos. El ejemplo muestra la creación de credenciales de AWS, el acceso a la red, la creación de un perfil de IA y el uso de acciones Select AI para generar consultas SQL a partir de peticiones de datos en lenguaje natural y el chat mediante los modelos básicos de AWS.

Para utilizar AWS, obtenga la clave de acceso, las claves secretas y el ID de modelo. Consulte . Utilice el ID de modelo como atributo model en el procedimiento DBMS_CLOUD_AI.CREATE_PROFILE. Debe especificar el atributo model explícitamente, ya que no se proporciona ningún modelo por defecto.

--Grant EXECUTE privilege to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_AI to ADB_USER; 

--
-- Create Credential for AI provider
--
BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'AWS_CRED',
        username    => '<your_AWS_access_key>',
        password    => '<your_AWS_secret_key>'
      );
END;
/
 
PL/SQL procedure successfully completed.
 
 
--
-- Grant Network ACL for AWS
--
BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => 'bedrock-runtime.us-east-1.amazonaws.com',
        ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                    principal_name => 'ADB_USER',
                    principal_type => xs_acl.ptype_db)
       );
END;
/
 
PL/SQL procedure successfully completed.
 


--
-- Create AI profile 
--
BEGIN
      DBMS_CLOUD_AI.CREATE_PROFILE(
        profile_name =>'AWS',
        attributes   =>'{"provider": "aws",
          "credential_name": "AWS_CRED",
          "object_list": [{"owner": "SH", "name": "customers"},                
                        {"owner": "SH", "name": "countries"},                
                        {"owner": "SH", "name": "supplementary_demographics"},
                        {"owner": "SH", "name": "profits"},                  
                        {"owner": "SH", "name": "promotions"},               
                        {"owner": "SH", "name": "products"}],
           "model" : "anthropic.claude-v2",
           "conversation" : "true"
          }');
END;
/
 
 
PL/SQL procedure successfully completed.


--
-- Enable AI profile in current session
--
EXEC DBMS_CLOUD_AI.SET_PROFILE('AWS');

PL/SQL procedure successfully completed.
 
--
-- Use AI
--

SELECT AI how many customers exist;
"RESPONSE"
"COUNT(*)"
55500


SELECT AI how many customers in San Francisco are married;
"RESPONSE"
"COUNT(*)"
46

SELECT AI showsql how many customers in San Francisco are married;
"RESPONSE"
"SELECT COUNT(*) AS "Number of Married Customers in San Francisco"
FROM "SH"."CUSTOMERS" C
WHERE UPPER(C."CUST_CITY") = UPPER('San Francisco')
AND UPPER(C."CUST_MARITAL_STATUS") = UPPER('Married')"

SELECT AI explainsql how many customers in San Francisco are married;

"RESPONSE""SELECT 
COUNT(*) AS "Number of Married Customers in San Francisco"
FROM "SH"."CUSTOMERS" C
WHERE C."CUST_CITY" = 'San Francisco'
AND C."CUST_MARITAL_STATUS" = 'Married'

Explanation:
- Used table alias C for CUSTOMERS table
- Used easy to read column names like CUST_CITY, CUST_MARITAL_STATUS
- Enclosed table name, schema name and column names in double quotes 
- Compared string values in WHERE clause without UPPER() since the values are not in double quotes
- Counted number of rows satisfying the condition and aliased the count as "Number of Married Customers in San Francisco""

SELECT AI narrate what are the top 3 customers in San Francisco;
"RESPONSE"
The top 3 customers in San Francisco ordered by credit limit in descending order are:

1. Bert Katz
2. Madallyn Ladd  
3. Henrietta Snodgrass

SELECT AI chat what is Autonomous AI Database;
"RESPONSE"
"An Autonomous AI Database is a cloud database service provided by Oracle Corporation. Some key features of Oracle Autonomous AI Database include:

- Fully automated and self-driving - The database automatically upgrades, patches, tunes, and backs itself up without any human intervention required.

- Self-securing - The database uses machine learning to detect threats and automatically apply security updates.

- Self-repairing - The database monitors itself and automatically recovers from failures and errors without downtime.

- Self-scaling - The database automatically scales compute and storage resources up and down as needed to meet workload demands. 

- Serverless - The database is accessed as a cloud service without having to manually provision any servers or infrastructure.

- High performance - The database uses Oracle's advanced automation and machine learning to continuously tune itself for high performance.

- Multiple workload support - Supports transaction processing, analytics, graph processing, etc in a single converged database.

- Fully managed - Oracle handles all the management and administration of the database. Users just load and access their data.

- Compatible - Supports common SQL and Oracle PL/SQL for easy migration from on-prem Oracle databases.

So in summary, an Oracle Autonomous AI Database is a fully automated, self-driving, self-securing, and self-repairing database provided as a simple cloud service. The automation provides high performance, elasticity, and availability with minimal human labor required."

--
--Clear the profile
--
BEGIN
   DBMS_CLOUD_AI.CLEAR_PROFILE;
END;
/
PL/SQL procedure successfully completed.

--
--Drop the profile
--
EXEC DBMS_CLOUD_AI.DROP_PROFILE('AWS');
 
PL/SQL procedure successfully completed.