Uso de Select AI para generar SQL a partir de peticiones de datos de lenguaje natural
La función Seleccionar IA permite a Autonomous Database utilizar IA generativa con modelos de lenguaje grandes (LLM) para convertir el texto de entrada del usuario en Oracle SQL. Select 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.
Temas relacionados
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. |
Modelo de lenguaje grande (LLM) |
Los modelos de lenguaje grande se refieren a modelos avanzados de inteligencia artificial que están entrenados en cantidades masivas de datos de texto para comprender y generar consultas de lenguaje, código de software y bases de datos similares a las humanas. Estos modelos son capaces de realizar una amplia gama de tareas de procesamiento de lenguaje natural, incluyendo generación de texto, traducción, resumen, respuesta a preguntas, análisis de sentimientos y más. Los LLM son típicamente arquitecturas basadas en redes neuronales que aprenden patrones, contexto y semántica de los datos de entrada, lo que les permite generar texto coherente y contextualmente relevante. |
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. |
Ejemplos de uso de Select AI
Descubre la integración de Select AI de Oracle con varios proveedores de IA como OpenAI, Cohere, Azure Open AI y OCI Generative AI para generar consultas SQL directamente desde el lenguaje natural.
Estos ejemplos muestran acciones comunes de Select AI y lo guían a través de la configuración de su perfil con diferentes proveedores de IA para aprovechar esas acciones.
Ejemplo: selección de acciones de AI
En el siguiente ejemplo, se muestran acciones como runsql
, showsql
, narrate
, chat
y explainsql
que puede realizar con SELECT AI
. En estos ejemplos se utiliza el esquema sh
con atributos de perfil y proveedor de AI definidos en la función DBMS_CLOUD_AI.CREATE_PROFILE
.
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.
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.
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 Database gestiona el proceso de conversión del 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 las estructuras de datos o los lenguajes técnicos.
DBMS_CLOUD_AI
de Autonomous 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 e indicarle 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 IA y proporcionar sus credenciales mediante los objetosDBMS_CLOUD_AI
que utiliza Autonomous Database.
Uso de DBMS_CLOUD_AI para configurar perfiles de AI
Autonomous 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 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:
- 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.
- 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.
- 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
- Permitir acceso al servicio OpenAI de Azure:
- Puede utilizar su clave de API secreta para permitir el acceso al servicio OpenAI de Azure. Para obtener más información, consulte el ejemplo en Examples of Using Select AI.
- 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.
- Vaya a Google AI Studio.
- Haga clic en Iniciar sesión en Google AI Studio.
- Haga clic en Obtener clave de API en la pantalla de petición de datos.
- Seleccione todas las opciones aplicables en la página siguiente.
- Haga clic en Create API key.
-
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.
- Vaya a Anthropic Developer Console.
- Regístrate para obtener una cuenta si aún no tienes una.
- Una vez conectado, vaya a la sección API o al panel de control.
- Busque una opción para generar o ver claves de API.
- Haga clic para crear una nueva clave de API.
-
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.
- Vaya a Hugging Face.
- Regístrate para obtener una cuenta si aún no tienes una.
- Vaya a la configuración de su cuenta.
- En el menú de navegación, busque los tokens de acceso.
- Haga clic para crear una nueva clave de API.
- Copie la clave de API generada y guárdela.
-
- 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
.
DBMS_CLOUD_AI
:
-
Otorgue el privilegio
EXECUTE
en el paqueteDBMS_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 privilegioEXECUTE
a otros usuarios. -
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 de ACL de red. Consulte Procedimiento APPEND_HOST_ACE en Oracle Database 19c PL/SQL Packages and Types Reference o Oracle Database 23ai PL/SQL Packages and Types Reference para obtener más información.
- Cree una credencial para permitir el acceso a su proveedor de AI.
Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.
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 |
---|---|
|
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 Para Google, utilice generativelanguage.googleapis.com. Para Anthropic, utilice api.anthropic.com. Para abrazar la cara, utilice api-inference.huggingface.co. |
|
Entradas de control de acceso (ACE). Se proporciona el tipo |
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 |
---|---|
|
Nombre de la credencial que se va a almacenar. El parámetro |
|
Los argumentos
|
|
Los argumentos
|
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 claveAI
.
Sintaxis
SELECT AI action natural_language_prompt
Parámetros
parámetro | Descripción |
---|---|
|
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. |
|
Muestra la sentencia SQL para una petición de datos en lenguaje natural. |
|
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. |
|
Genera una respuesta directamente desde el LLM en función de la petición de datos. Si |
|
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ónDBMS_CLOUD_AI.GENERATE
. -
La palabra clave
AI
solo está soportada en una sentenciaSELECT
. -
No se pueden ejecutar sentencias PL/SQL, DDL ni DML mediante la palabra clave
AI
. -
La secuencia es
SELECT
seguida deAI
. Estas palabras clave no distinguen mayúsculas y minúsculas. Después de configurarDBMS_CLOUD_AI.SET_PROFILE
, el texto después deSELECT 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
, conSELECT AI chat
, para obtener más información sobre las construcciones SQL. Para obtener mejores resultados con la acciónchat
, 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.