Paquete DBMS_CLOUD_AI

El paquete DBMS_CLOUD_AI, con Select AI, facilita y configura la traducción de peticiones de datos en lenguaje natural para generar, ejecutar y explicar sentencias SQL. Además, permite la generación aumentada de recuperación y las interacciones basadas en lenguaje natural, incluido el chat con LLM.

Requisitos

El administrador del conjunto debe haber configurado una conectividad saliente mediante un gateway de NAT, como se describe a continuación:
  • Para crear un Gateway de NAT en la red virtual en la nube (VCN) donde residen los recursos de la base de datos de IA autónoma, siga las instrucciones de Creación de un Gateway de NAT en la documentación de Oracle Cloud Infrastructure.
  • Después de crear el gateway de NAT, agregue una regla de ruta y una regla de seguridad de salida a cada subred (en la VCN), en la que residan las base de datos de IA autónoma, de modo que estos recursos puedan utilizar el gateway para obtener una clave pública de su instancia de de Azure AD:
    1. Vaya a la página Detalles de subred de la subred.
    2. En el separador Información de Subred, haga clic en el nombre de la Tabla de Direcciones de la subred para mostrar su página Detalles de Tabla de Direcciones.
    3. En la tabla de Reglas de ruta existentes, compruebe si ya hay una regla con las siguientes características:
      • Destino: 0.0.0.0/0
      • Tipo de destino: gateway de NAT
      • Destino: nombre del gateway de NAT que acaba de crear en la VCN

      Si dicha regla no existe, haga clic en Agregar reglas de ruta y agregue una regla de ruta con estas características.

    4. Vuelva a la página Detalles de subred de la subred.
    5. En la tabla Listas de seguridad de la subred, haga clic en el nombre de la lista de seguridad de la subred para mostrar su página Detalles de lista de seguridad.
    6. En el menú lateral, en Recursos, haga clic en Reglas de salida.
    7. En la tabla de Reglas de salida existentes, compruebe si ya hay una regla con las siguientes características:
      • Tipo de destino: CIDR
      • Destino: 0.0.0.0/0
      • Protocolo IP: TCP
      • Rango de puertos de origen: 443
      • Rango de puertos de destino: todos

      Si dicha regla no existe, haga clic en Agregar Reglas de Salida y agregue una regla de salida con estas características.

La configuración del proxy HTTP en el entorno debe permitir que la base de datos acceda al proveedor de servicios en la nube.

El administrador del conjunto define esta configuración al crear la infraestructura de Exadata Cloud@Customer, como se describe en Uso de la consola para aprovisionar Exadata Database Service on Cloud@Customer.

Note:

La configuración de red, incluido el proxy HTTP, solo se puede editar hasta que la infraestructura de Exadata tenga el estado Necesita activación. Una vez activada, no puede editar esa configuración.

La configuración de un proxy HTTP para una infraestructura de Exadata ya aprovisionada necesita una solicitud de servicio (SR) en My Oracle Support. Consulte Creación de una solicitud de servicio en My Oracle Support para obtener más información.

Resumen de subprogramas DBMS_CLOUD_AI

En esta sección se tratan los subprogramas DBMS_CLOUD_AI proporcionados con Autonomous AI Database.

Subprograma Descripción

Procedimiento CREATE_PROFILE

Este procedimiento crea un nuevo perfil de AI para traducir peticiones de datos de lenguaje natural a sentencias SQL.

Atributos de Perfil

Proporciona atributos de perfil de AI que puede configurar.

Procedimiento DROP_PROFILE

Este procedimiento borra un perfil AI existente.

Procedimiento ENABLE_PROFILE

Este procedimiento permite que un perfil AI se utilice en la base de datos actual.

Procedimiento DISABLE_PROFILE

Este procedimiento desactiva un perfil de AI en la base de datos actual.

Procedimiento SET_ATTRIBUTE

Este procedimiento define los atributos del perfil de AI.

Procedimiento SET_PROFILE

Este procedimiento define el perfil de AI para la base de datos actual.

GENERAR Función

Esta función genera una sentencia SQL mediante AI para traducir.

Función GENERATE_SYNTHETIC_DATA

Esta función genera datos sintéticos.

ENABLE_DATA_ACCESS Procedimiento

Utilice este procedimiento para activar el envío de datos al LLM.

DISABLE_DATA_ACCESS Procedimiento

Use este procedimiento para desactivar el envío de datos a su LLM.

CREATE_VECTOR_INDEX Procedimiento

Este procedimiento crea un índice vectorial en la base de datos vectorial especificada y lo rellena con datos de un almacén de objetos mediante un trabajo de programador asíncrono.

DROP_VECTOR_INDEX Procedimiento

Este procedimiento elimina un índice de almacén de vectores. Normalmente elimina el objeto de índice del almacén vectorial y suprime la base de datos vectorial.

DISABLE_VECTOR_INDEX Procedimiento

Este procedimiento desactiva un objeto de índice vectorial en la base de datos actual. Cuando se desactiva, un perfil AI no puede utilizar el índice vectorial y el sistema no carga datos en el almacén de vectores.

ENABLE_VECTOR_INDEX Procedimiento

Este procedimiento activa o activa un objeto de índice vectorial previamente desactivado.

UPDATE_VECTOR_INDEX Procedimiento

Este procedimiento actualiza un índice de almacén de vectores existente con un valor especificado del atributo de índice de vectores.

Atributos de índice de vector

Proporciona atributos de perfil de índice vectorial que puede configurar.

CREATE_CONVERSATION Procedimiento

Este procedimiento le ayuda a crear una conversación.

Función CREATE_CONVERSATION

Esta función ayuda a crear una conversación y a utilizar la ID. de conversación en otros procedimientos.

Atributos CREATE_CONVERSATION

Utilice los atributos de conversación para personalizar las conversaciones.

UPDATE_CONVERSATION Procedimiento

Este procedimiento actualiza un procedimiento existente con parámetros especificados por el usuario.

SET_CONVERSATION_ID Procedimiento

Este procedimiento establece el soporte de conversación en la sesión actual.

Función GET_CONVERSATION_ID

Este procedimiento le ayuda a obtener el parámetro conversation_id.

CLEAR_CONVERSATION_ID Procedimiento

Este procedimiento le ayuda a borrar cualquier conversation_id definido en la sesión actual.

DELETE_CONVERSATION_PROMPT Procedimiento

Este procedimiento suprime una petición de datos concreta.

DROP_CONVERSATION Procedimiento

Este procedimiento suprime una conversación completa y sus metadatos.

Procedimiento FEEDBACK

Use este procedimiento para mejorar potencialmente la precisión de la generación de consultas al proporcionar comentarios a Select AI.

Índice vectorial para FEEDBACK

Se trata de un índice vectorial por defecto creado cuando se utiliza por primera vez feedback.

Procedimiento CREATE_PROFILE

El procedimiento crea un nuevo perfil de AI para traducir peticiones de datos de lenguaje natural a sentencias SQL.

Sintaxis

DBMS_CLOUD_AI.CREATE_PROFILE
   profile_name        IN  VARCHAR2,
   attributes          IN  CLOB      DEFAULT NULL,
   status              IN  VARCHAR2  DEFAULT NULL,
   description         IN  CLOB      DEFAULT NULL
);

Parámetros

parámetro Descripción

profile_name

Un nombre para el perfil AI. El nombre de perfil debe seguir las reglas de nomenclatura del identificador SQL de Oracle. La longitud máxima del nombre de perfil es de 125 caracteres.

Este parámetro es obligatorio.

attributes

Atributos de perfil en formato JSON. Consulte AI Profile Attributes para obtener más información.

El valor por defecto es NULL.

status

Estado del perfil.

El valor predeterminado es Activar.

description

Descripción del perfil AI.

El valor por defecto es NULL.

Ejemplo

BEGIN
     DBMS_CLOUD_AI.CREATE_PROFILE(
          profile_name    => 'OpenAI,
          attributes      => JSON_OBJECT('provider' value 'openai',
                                         'credential_name' value 'openai_cred'),
          description     => 'AI profile to use OpenAI for SQL translation'
     );
END;
/

Atributos de Perfil

Los atributos de un perfil de AI ayudan a gestionar y configurar el comportamiento del perfil de AI. Algunos atributos son opcionales y tienen un valor por defecto.

Atributos

Nombre del atributo Descripción

azure_deployment_name

Nombre del modelo desplegado del servicio OpenAI de Azure. El nombre solo puede incluir caracteres alfanuméricos, guiones bajos (_) y guiones (-). El nombre no puede terminar con un guión bajo (_) ni un guión (-). Para saber cómo obtener azure_deployment_name, consulte Creación y despliegue de un recurso de servicio OpenAI de Azure.

azure_resource_name

Nombre del recurso de servicio OpenAI de Azure. El nombre del recurso solo puede incluir caracteres alfanuméricos y guiones, y no puede empezar ni terminar con un guion. Para saber cómo obtener azure_resource_name, consulte Creación y despliegue de un recurso de servicio OpenAI de Azure.

comments

Incluya comentarios de columna en los metadatos utilizados para traducir peticiones de datos de lenguaje natural mediante IA. El tipo de dato BOOLEAN está soportado. Los valores válidos son TRUE o FALSE para una cadena con el tipo de dato VARCHAR2.

Note:

Los valores booleanos no se aplican en el procedimiento DBMS_CLOUD_AI.SET_ATTRIBUTE al definir un solo atributo porque el parámetro attribute_value es del tipo de dato CLOB.

conversation

Atributo VARCHAR2 que indica si el historial de conversaciones está activado para un perfil. Solo OpenAI y el servicio OpenAI de Azure admiten el historial de conversaciones. Los valores válidos son true o false. El valor por defecto es false. Los valores no distinguen entre mayúsculas y minúsculas.

credential_name

Nombre de la credencial para acceder a las API del proveedor de AI.

La credencial que utiliza tokens de portador se puede crear utilizando el nombre de proveedor como nombre de usuario y el token de portador como contraseña.

Es un atributo obligatorio. Consulte CREATE_CREDENTIAL Procedimiento.

embedding_model

Modelo de incrustación definido en el perfil de IA. A continuación se muestran los proveedores de IA admitidos para incrustar modelos con sus valores predeterminados:

  • OCI GenAI: cohere.embed-english-v3.0
  • OpenAI: text-embedding-ada-002
  • Azure OpenAI: text-embedding-ada-002
  • Cohere: embed-english-v2.0
  • Google: text-embedding-004

Note:

El parámetro embedding_model no es aplicable para Antropic y Hugging Face.

max_tokens

Indica el número de tokens que se deben predecir por generación. El valor por defecto es 1024. Consulte Tokens and Tokenizers para obtener más información.

model

Nombre del modelo de IA que se utiliza para generar respuestas.

Modelos soportados para:

  • OpenAI: gpt-4, gpt-4-0613, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo (por defecto), gpt-3.5-turbo-0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613
  • Cohere: comando (predeterminado), comando-nightly (experimental), comando-light y comando-light-nightly (experimental). Los modelos más pequeños y "ligeros" son más rápidos, mientras que los modelos más grandes funcionan mejor.Los modelos personalizados también se pueden proporcionar con su ID completo.
  • OCI Generative AI: para OCI Generative AI: cohere.command (por defecto). Los modelos previamente entrenados para OCI Generative AI son compatibles con Select AI. Los modelos personalizados también se pueden proporcionar con sus OCID completos.

    Para obtener más información sobre los modelos admitidos en OCI Generative AI, consulte Pretrained Foundational Models in Generative AI.

  • AWS: los modelos básicos de Amazon Bedrock requieren permisos de acceso a través de la consola de Amazon Bedrock. Consulte la documentación de AWS para obtener modelID.

Note:

Este parámetro no se utiliza para Azure, ya que el modelo se determina al crear el despliegue en el portal Azure OpenAI Service.

object_list

Matriz de objetos JSON que especifica el propietario y los nombres de objeto elegibles para la traducción de lenguaje natural a SQL. Para incluir todos los objetos de un usuario determinado, omita el "nombre" y especifique solo la clave "propietario" en el objeto JSON.

Para traducir el lenguaje natural a SQL, el nombre del objeto, el propietario del objeto, las columnas del objeto y los comentarios se envían al proveedor de AI mediante solicitudes HTTPS. Evite especificar objetos con nombre de objeto confidencial, nombres de columna o comentarios en la lista de objetos.

Los proveedores de IA pueden tener un límite en el tamaño de los metadatos permitidos en las solicitudes de traducción. Considere limitar la lista de objetos adecuados para las peticiones de datos de lenguaje natural de los usuarios de la aplicación.

Formato:
[
  {"owner": "SH", "name": "SALES",
  {"owner": "TEST_USER"}
]

oci_compartment_id

Especifica el OCID del compartimento al que tiene permiso para acceder al llamar al servicio OCI Generative AI. El ID de compartimento puede contener caracteres alfanuméricos, guiones y puntos.

El valor por defecto es el ID de compartimento de la base de datos de IA autónoma.

oci_endpoint_id

Estos atributos indican el OCID de punto final del cluster de alojamiento de IA dedicada de Oracle. El ID de punto final puede contener caracteres alfanuméricos, guiones y puntos. Para buscar el OCID de punto final, consulte Obtención de detalles de un punto final en IA generativa.

Cuando desee utilizar el cluster de IA dedicado de Oracle, debe proporcionar el OCID de punto final del cluster de alojamiento.

Por defecto, el ID de punto final está vacío y el modelo está bajo demanda en una infraestructura compartida.

oci_runtimetype

Este atributo indica el tipo de tiempo de ejecución del modelo proporcionado. Este atributo es necesario cuando se especifica el atributo model y se aplica a los modelos de generación de OCI.

Todos los valores permitidos se pueden encontrar en OCI Generative AI runtimeType. Consulte LlmInferenceRequest Reference.

Los valores soportados son:
  • COHERE
  • LLAMA

provider

Proveedor de IA para el perfil de IA.

Proveedores soportados:

  • openai
  • cohere
  • azul celeste
  • oci
  • google
  • antrópico
  • abrazo
  • aws

Es un atributo obligatorio.

region

Este atributo indica la ubicación del cluster de IA generativa que desea utilizar. La región puede contener caracteres alfanuméricos y guiones.

Note:

El cluster de IA generativa de Oracle está disponible en las regiones de Chicago, Frankfurt y Londres. Consulte Pretrained Foundational Models in Generative AI.
La región por defecto es us-chicago-1.

La región por defecto para AWS es us-east-1.

stop_tokens

El texto generado se terminará al principio de la secuencia de parada más temprana. La secuencia se incorporará al texto. El valor de atributo debe ser una matriz válida de valores de cadena en formato JSON. stop_tokens toma una matriz JSON como entrada. Para obtener más información sobre los tokens de parada o las secuencias de parada, consulte la documentación OpenAI o Aquí.

temperature

El muestreo de los modelos Generate Text incorpora aleatoriedad, de modo que la misma petición de datos pueda producir salidas diferentes cada vez que pulse "generate". La temperatura es un número de flotador no negativo utilizado para ajustar el grado de aleatoriedad. Las temperaturas más bajas significan generaciones menos aleatorias. Consulte Temperatura para obtener más detalles. Este parámetro es aplicable a todos los proveedores de servicios soportados.

El siguiente ejemplo utiliza Cohere como proveedor y muestra atributos de perfil personalizados:
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'COHERE',
     attributes =>
      '{"provider": "cohere",
        "credential_name": "COHERE_CRED",
        "object_list": [{"owner": "ADB_USER"}],
        "max_tokens":512,
        "stop_tokens": [";"],
        "model": "command-nightly",
        "temperature": 0.5,
        "comments": true
       }');
END;
/

En el siguiente ejemplo se muestran los atributos de perfil personalizados que utilizan OCI Generative AI:

BEGIN                                                                        
  DBMS_CLOUD_AI.CREATE_PROFILE(                                              
      profile_name => 'GENAI',                                                             
      attributes => '{"provider": "oci",                                                                   
        "credential_name": "GENAI_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"}],
        "oci_compartment_id": "ocid1.compartment.oc1...",
	"oci_endpoint_id": "ocid1.generativeaiendpoint.oc1.us-chicago-1....",
	"region": "us-chicago-1",
	"model": "cohere.command-light",
	"oci_runtimetype": "COHERE"            
       }');                                                                  
END;                                                                         
/ 

Procedimiento DROP_PROFILE

El procedimiento borra un perfil AI existente. Si el perfil no existe, el procedimiento devuelve un error.

Sintaxis

DBMS_CLOUD_AI.DROP_PROFILE(
       profile_name        IN   VARCHAR2,
       force               IN   BOOLEAN DEFAULT FALSE
 );

Parámetros

parámetro Descripción

profile_name

Nombre del perfil de AI

force

Si es TRUE, el procedimiento ignora los errores si el perfil AI no existe.

El valor por defecto de este parámetro es FALSE.

Ejemplo

BEGIN
     DBMS_CLOUD_AI.DROP_PROFILE(profile_name => 'OPENAI');
END;
/

Notas de uso

Utilice force para borrar un perfil e ignorar errores si el perfil AI no existe.

Procedimiento ENABLE_PROFILE

Este procedimiento activa el perfil AI que el usuario especifica. El procedimiento cambia el estado del perfil AI a ENABLED.

Sintaxis

DBMS_CLOUD_AI.ENABLE_PROFILE(
     profile_name         IN   VARCHAR2
 );

Parámetros

parámetro Descripción

profile_name

Nombre del perfil AI que se va a activar

Este parámetro es obligatorio.

Ejemplo para activar el perfil AI

BEGIN
     DBMS_CLOUD_AI.ENABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

Procedimiento DISABLE_PROFILE

Este procedimiento desactiva el perfil de AI en la base de datos actual. Este procedimiento cambia el estado del perfil AI a DISABLED.

Sintaxis

DBMS_CLOUD_AI.DISABLE_PROFILE(
      profile_name  IN  VARCHAR2
);

Parámetros

parámetro Descripción

profile_name

Nombre del perfil AI.

Este parámetro es obligatorio.

Ejemplo

BEGIN
     DBMS_CLOUD_AI.DISABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

Procedimiento SET_ATTRIBUTE

Este procedimiento permite definir atributos de perfil de AI.

Sintaxis

DBMS_CLOUD_AI.SET_ATTRIBUTE(
      profile_name         IN   VARCHAR2,
      attribute_name       IN   VARCHAR2,
      attribute_value      IN   CLOB
);

Parámetros

Solo el propietario puede configurar o modificar los atributos del perfil de AI. Para ver una lista de atributos admitidos, consulte Profile Attributes.

parámetro Descripción

profile_name

Nombre del perfil de AI para el que desea definir los atributos.

Este parámetro es obligatorio.

attribute_name

Nombre del atributo de perfil AI

Este parámetro es obligatorio.

attribute_value

Valor del atributo del perfil.

El valor por defecto es NULL.

Ejemplo

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OPENAI',
   attribute_name  => 'credential_name',
   attribute_value => 'OPENAI_CRED_NEW'
 );
END;
/

Procedimiento SET_PROFILE

Este procedimiento define el perfil de AI para la sesión actual.

Después de definir un perfil de AI para la sesión de base de datos, cualquier sentencia SQL con el prefijo SELECT AI se considera una petición de datos de lenguaje natural. Según la acción especificada con el prefijo AI, se genera una respuesta mediante AI. Para utilizar el prefijo AI, consulte Use AI Keyword to Enter Prompts. Opcionalmente, es posible sustituir los atributos de perfil o modificar los atributos especificándolos en formato JSON. Consulte Procedimiento SET_ATTRIBUTE para definir los atributos.

El perfil AI solo se puede configurar para la sesión actual si el propietario del perfil AI es el usuario de la sesión.

Para definir un perfil AI para todas las sesiones de un usuario de base de datos específico o para todas las sesiones de usuario de la base de datos, considere el uso de un disparador de evento de base de datos para el evento AFTER LOGON en el usuario específico o en toda la base de datos. Consulte CREATE TRIGGER Statement en Oracle Database 19c Database PL/SQL Language Reference u Oracle Database 26ai Database PL/SQL Language Reference para obtener más información.

Sintaxis

DBMS_CLOUD_AI.SET_PROFILE(
    profile_name      IN  VARCHAR2,
);

Parámetros

parámetro Descripción

profile_name

Un nombre para el perfil AI en la sesión actual.

Este parámetro es obligatorio.

Ejemplo


   BEGIN
        DBMS_CLOUD_AI.SET_PROFILE(
          profile_name    => 'OPENAI'
        );
   END;
   /

GENERAR Función

Esta función proporciona traducción de IA sin estado. Con su perfil de AI existente, puede utilizar esta función para realizar las acciones admitidas, como showsql, narrate o chat. La acción por defecto es showsql.

La sustitución de algunos o todos los atributos de perfil también es posible mediante esta función.

Sintaxis

DBMS_CLOUD_AI.GENERATE(
    prompt          IN  CLOB,
    profile_name    IN  VARCHAR2 DEFAULT NULL,
    action          IN  VARCHAR2 DEFAULT NULL,
    attributes      IN  CLOB     DEFAULT NULL
) RETURN CLOB;

Parámetros

parámetro Descripción

prompt

El lenguaje natural requiere traducir usando IA.

La petición de datos puede incluir SELECT AI <action> como prefijo. La acción también se puede proporcionar por separado como un parámetro de "acción". El action proporcionado en la petición de datos sustituye el parámetro "action". La acción por defecto es showsql.

Este parámetro es obligatorio.

profile_name

Nombre del perfil de AI. Este parámetro es opcional si ya hay un perfil AI definido en la sesión mediante DBMS_CLOUD_AI.SET_PROFILE.

El valor por defecto es NULL.

Se aplican las siguientes condiciones:
  • Si se define un perfil en la sesión actual, el usuario puede omitir el argumento profile_name en la función DBMS_CLOUD_AI.GENERATE.
  • Si el argumento profile_name se proporciona en la función DBMS_CLOUD_AI.GENERATE, sustituye cualquier valor definido en la sesión mediante el procedimiento DBMS_CLOUD_AI.SET_PROFILE.
  • Si no hay ningún perfil definido en la sesión mediante el procedimiento DBMS_CLOUD_AI.SET_PROFILE, el argumento profile_name se debe proporcionar en la función DBMS_CLOUD_AI.GENERATE.

Note:

Para Database Actions, puede especificar el argumento profile_name en DBMS_CLOUD_AI.GENERATE o puede ejecutar dos pasos como script PL/SQL: DBMS_CLOUD_AI.SET_PROFILE y DBMS_CLOUD_AI.GENERATE.
EXEC DBMS_CLOUD_AI.set_profile('OPENAI');

-----------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

------------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;
-------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;
Consulte Ejecución de sentencias SQL en el editor de códigos para obtener más información.
action

Acción para traducir la petición de datos natural mediante IA. Las acciones soportadas incluyen showsql (valor por defecto), narrate y chat. Las descripciones de las acciones se incluyen en Use AI Keywords to Enter Prompts.

Note:

Esta función no soporta la acción runsql. Si proporciona la acción runsql, devuelve el siguiente error:
ORA-20000: runsql action is not supported by generate function ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD", line xxxx 
ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD_AI", line 2696 ORA-06512: at line x
attributes Sustituya atributos de perfil de IA específicos proporcionando atributos en formato JSON. Consulte Atributos de perfil para obtener más información.

Ejemplos

Los siguientes ejemplos ilustran las acciones showsql, narrate y chat que se pueden utilizar con la función DBMS_CLOUD_AI.GENERATE.

Un ejemplo con la acción showsql es el siguiente:

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

Un ejemplo con la acción narrate es el siguiente:

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;

Un ejemplo con la acción chat es el siguiente:

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;

Función GENERATE_SYNTHETIC_DATA

Utilice este procedimiento para generar datos sintéticos para una sola tabla, varias tablas o un esquema completo.

A continuación, se muestra la sintaxis para generar datos sintéticos para una sola tabla.

Sintaxis

DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
  profile_name        IN  VARCHAR2,
  object_name         IN  DBMS_ID,
  owner_name          IN  DBMS_ID,
  record_count        IN  NUMBER,
  user_prompt         IN  CLOB DEFAULT NULL,
  params              IN  CLOB DEFAULT NULL
);

A continuación, se muestra la sintaxis para generar datos sintéticos para varias tablas.

DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
  profile_name        IN  VARCHAR2,
  object_list         IN  CLOB,
  params              IN  CLOB DEFAULT NULL
);

Si no desea que los datos de tabla o los documentos de búsqueda vectorial se envíen a un LLM, un usuario con privilegios de administrador puede desactivar dicho acceso para todos los usuarios de la base de datos proporcionada. Esto, de hecho, desactiva la acción narrate.

Parámetros

parámetro Obligatorio Descripción

profile_name

El perfil de AI que contiene la información de servicio del LLM necesaria. Esto se puede crear mediante el procedimiento CREATE_PROFILE.

object_name

Especifique un nombre de tabla para rellenar los datos sintéticos.
  • Los privilegios SELECT y INSERT en los objetos de tabla son necesarios para que el usuario los utilice.
  • La tabla está vacía o contiene registros.
owner_name N.º

Especifique el usuario de la base de datos propietario del objeto al que se hace referencia. Si no se proporciona ningún propietario específico, el procedimiento utiliza por defecto el esquema del usuario que lo ejecuta.

record_count N.º

El número de registros que se van a generar sintéticamente.

user_prompt

N.º Información adicional que un usuario puede mencionar para generar datos sintéticos. Por ejemplo, para generar un registro para una tabla denominada MOVIE con una columna release_date, user_prompt puede ser:

la fecha de estreno de las películas debería ser en 2019

params

N.º

Atributos opcionales proporcionados en formato de cadena de objeto JSON para modificar el comportamiento de una API. Consulte Optional Parameters.

object_list

Utilice este parámetro para generar datos sintéticos en varias tablas. Este parámetro incluye información de objeto de tabla junto con sus argumentos y contiene los mismos argumentos proporcionados en la tabla única. Consulte object_list Parameters.

Parámetros Opcionales

parámetro Tipo de dato de valor Valor Descripción

sample_rows

Número

0 <= sample_rows <= 100

Especifique el número de filas de la tabla que desea utilizar como ejemplo para guiar el LLM en la generación de datos.

Un valor de 0 significa que no se utilizarán filas de ejemplo. El valor por defecto es 0.

table_statistics

Booleano

  • True
  • False

Active o desactive el uso de la información de estadísticas de tabla.

El valor por defecto es False.

priority

Cadena

Éstos son los valores válidos:

  • HIGH
  • MEDIUM
  • LOW

Asigne un valor de prioridad que defina el número de solicitudes paralelas enviadas al LLM para generar datos sintéticos. Las tareas con mayor prioridad consumirán más recursos de la base de datos y se completarán más rápido.

El valor por defecto es HIGH

  • HIGH: especifica el número de solicitudes de LLM paralelas en función del recuento de ECPU de la base de datos (o recuento de OCPU si la base de datos utiliza OCPU).

  • MEDIUM: define el número de procesos simultáneos según el límite de simultaneidad para el servicio Medium. El valor por defecto es 4.

  • LOW: ejecuta el trabajo de pipeline en un orden de serie, sin procesamiento paralelo.

El número máximo de procesos paralelos simultáneos utilizados para la generación de datos sintéticos está limitado a 64.

comments

Booleano
  • True
  • False

Active o desactive el envío de comentarios al LLM para guiar la generación de datos.

El valor por defecto es False.

Parámetros object_list

parámetro Tipo de dato de valor Obligatorio Descripción

owner

Cadena

Especifica el usuario de la base de datos propietario del objeto al que se hace referencia. Si no se proporciona ningún propietario específico, el procedimiento utilizará por defecto el esquema del usuario que lo ejecuta.

name

Cadena

N.º

Especifique un nombre de tabla para rellenar los datos sintéticos. Los privilegios SELECT y INSERT en los objetos de tabla son necesarios para que el usuario que utiliza la tabla it.The esté vacío o tenga registros en él.

record_count

Número

N.º

El número de registros que se van a generar sintéticamente. Proporcione un número mayor que 0.

Proporcione record_count o record_count_percentage.

record_count_percentage

Número

N.º

Porcentaje del número de registros que se van a generar sintéticamente. Proporcione un número mayor que 0.

Para una base de datos de clonación de metadatos, donde se conservan los metadatos de la tabla, incluidas las estadísticas, se soporta el parámetro record_count_percentage.

Proporcione record_count o record_count_percentage.

Al utilizar el parámetro record_count_percentage, el recuento de registros final de la tabla se calcula de la siguiente forma:
Original_Num_Rows *
      record_count_percentage

user_prompt

Cadena N.º Igual que user_prompt en Parámetros. user_prompt está asociado a un objeto de tabla específico.

Ejemplos

Los siguientes ejemplos muestran la función DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA para generar datos sintéticos para una sola tabla y varias tablas. Para ver un ejemplo completo y ver más ejemplos, consulte .

BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_name  => 'Director',
        owner_name   => 'ADB_USER',
        record_count => 5
    );
END;
/
PL/SQL procedure successfully completed.
BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_list => '[{"owner": "ADB_USER", "name": "Director","record_count":5},
                         {"owner": "ADB_USER", "name": "Movie_Actor","record_count":5},
                         {"owner": "ADB_USER", "name": "Actor","record_count":10},
                         {"owner": "ADB_USER", "name": "Movie","record_count":5,"user_prompt":"all movies are released in 2009"}]'
    );
END;
/
PL/SQL procedure successfully completed.

ENABLE_DATA_ACCESS Procedimiento

Este procedimiento permite enviar datos al LLM para las funciones de selección de IA aplicables, que es el comportamiento predeterminado. Sólo un administrador puede ejecutar este procedimiento.

Este procedimiento controla el acceso a los datos para las siguientes capacidades de selección de IA:

  • acción narrate
  • Generación aumentada de recuperación (RAG)
  • Generación de datos sintéticos

Sintaxis

DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();

Parámetros

Este procedimiento no requiere ningún parámetro.

Ejemplo para activar el acceso a datos

BEGIN
  DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();
END;
/

DISABLE_DATA_ACCESS Procedimiento

Este procedimiento desactiva el envío de datos al LLM para las funciones de selección de IA aplicables. Sólo un administrador puede ejecutar este procedimiento.

Este procedimiento limita las siguientes capacidades de selección de IA:

  • acción narrate
  • Generación aumentada de recuperación (RAG)
  • Generación de datos sintéticos

Sintaxis

DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();

Parámetros

Este procedimiento no requiere ningún parámetro.

Ejemplo para desactivar el acceso a datos

BEGIN
  DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();
END;
/

CREATE_VECTOR_INDEX Procedimiento

Este procedimiento crea un índice vectorial en la base de datos vectorial especificada y lo rellena con datos de un almacén de objetos mediante un trabajo de programador asíncrono.

Sintaxis

PROCEDURE CREATE_VECTOR_INDEX(                                              
   index_name          IN  VARCHAR2,                                        
   attributes          IN  CLOB      DEFAULT NULL,                          
   status              IN  VARCHAR2  DEFAULT NULL,                          
   description         IN  CLOB      DEFAULT NULL                           
); 

Parámetros

parámetro Descripción

index_name

Nombre del índice vectorial. El nombre del índice vectorial debe seguir las reglas de nomenclatura del identificador de Oracle SQL. La longitud máxima del nombre del almacén de vectores es de 125 caracteres.

Este parámetro es obligatorio.

attributes

Atributos personalizados para el índice vectorial en JSON. Para ver una lista de parámetros configurables, consulte Vector Index Attributes.

El valor por defecto es NULL.

status
Estado del índice vectorial. Los valores posibles son los siguientes:
  • Enabled
  • Disabled

El valor por defecto es Desactivado.

description

Descripción del índice vectorial.

El valor por defecto es NULL.

Ejemplo

En el siguiente ejemplo se muestra cómo crear un índice vectorial y configurar los atributos como parámetros JSON.

BEGIN                                                                
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                 
            index_name    => 'MY_INDEX'                                   
            attributes    => JSON_OBJECT(                                 
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',              
                       'profile_name'      value 'OCIGENAI',         
                       'location'          value                          
                         'https://objectstorage.us-phoenix-1.' ||         
                         'oraclecloud.com/n/mynamespace/b/mybucket',      
                       'object_store_credential_name'   value 'OS_CRED',              
                       'chunk_size'        value 2048,                    
                       'chunk_overlap'     value 256,                     
                       'refresh_rate'      value 720)                     
       );                                                                 
END;                                                                 
/

DROP_VECTOR_INDEX Procedimiento

Este procedimiento elimina un índice de almacén de vectores. Normalmente elimina el objeto de índice de almacén de vectores y suprime el almacén de vectores. Si se define en FALSE, el argumento include_data garantiza que el procedimiento solo elimina el objeto de índice de almacén de vectores mientras conserva el almacén de vectores.

Sintaxis

PROCEDURE DROP_VECTOR_INDEX(                                                
   index_name          IN  VARCHAR2,           
   include_data        IN  BOOLEAN DEFAULT TRUE,                            
   force               IN  BOOLEAN DEFAULT FALSE                           
);

Parámetros

parámetro Descripción

index_name

Nombre del índice vectorial. El nombre del índice vectorial debe seguir las reglas de nomenclatura del identificador de Oracle SQL. La longitud máxima del nombre del almacén de vectores es de 125 caracteres.

Este parámetro es obligatorio.

include_data

Indica si se debe suprimir el almacén de vectores y el índice de vectores del cliente junto con el objeto de índice de vectores.

Posibles valores:

  • TRUE
  • FALSE

El valor por defecto es TRUE.

force

Indica si se deben ignorar los errores que se producen si el índice vectorial no existe.

Posibles valores:

  • TRUE
  • FALSE

Si se define en TRUE, este parámetro omite cualquier error que se produzca si el índice vectorial no existe.

El valor por defecto es FALSE.

Ejemplo

BEGIN
DBMS_CLOUD_AI.DROP_VECTOR_INDEX(
        index_name     => 'MY_INDEX',
        include_data   => FALSE,
        force          => TRUE
     );                                                                 
END;                                                                 
/

DISABLE_VECTOR_INDEX Procedimiento

Este procedimiento desactiva un objeto de índice vectorial en la base de datos actual. Cuando se desactiva, un perfil AI no puede utilizar el índice vectorial y el sistema no carga datos en el almacén de vectores a medida que se agregan nuevos datos al almacén de objetos y no realiza indexación, búsqueda o consulta en función del índice.

Sintaxis

DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(                                              
   index_name       IN  VARCHAR2                                            
);

Parámetros

parámetro Descripción

index_name

Nombre del índice vectorial. El nombre del índice vectorial debe seguir las reglas de nomenclatura del identificador de Oracle SQL. La longitud máxima del nombre del almacén de vectores es de 125 caracteres.

Este parámetro es obligatorio.

Ejemplo

Puede desactivar un índice vectorial proporcionando el nombre del índice vectorial.

BEGIN                                                                
   DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(index_name => 'MY_INDEX');       
END;                                                                 
/

ENABLE_VECTOR_INDEX Procedimiento

Este procedimiento activa o activa un objeto de índice vectorial previamente desactivado. Por lo general, cuando se crea un índice vectorial, por defecto se activa de modo que el perfil AI pueda utilizarlo para realizar la indexación y la búsqueda.

Cuando se activa, un índice vectorial permite que un perfil AI lo utilice para cargar nuevos datos de un almacén de objetos en un almacén de vectores a un ratio de refrescamiento especificado por el usuario. Puede especificar el parámetro refresh_rate a través de la lista de objetos JSON. Para configurar los atributos JSON, consulte Atributos de índice de vector.

Sintaxis

DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(                                              
   index_name       IN  VARCHAR2                                            
);

Parámetros

parámetro Descripción

index_name

Nombre del índice vectorial. El nombre del índice vectorial debe seguir las reglas de nomenclatura del identificador de Oracle SQL. La longitud máxima del nombre del almacén de vectores es de 125 caracteres.

Este parámetro es obligatorio.

Ejemplo

Puede activar o activar un índice vectorial especificando el nombre del índice vectorial de la siguiente forma:

BEGIN                                                                
   DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(index_name => 'MY_INDEX');       
END;                                                                 
/

UPDATE_VECTOR_INDEX Procedimiento

Este procedimiento actualiza un índice de almacén de vectores existente con un valor especificado del atributo de índice de vectores.
Se sobrecarga para aceptar:
  • valores de atributos de varios tipos.
  • atributos de índice vectorial como documento JSON y actualiza uno o más atributos de un índice de almacén de vectores existente con el par de nombre y valor de atributo especificado.

Sintaxis

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
   index_name         IN  VARCHAR2,
   attributes         IN  CLOB
);

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
     index_name         IN  VARCHAR2,
     attribute_name     IN  VARCHAR2,
     attribute_value    IN  VARCHAR2
);

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                                 
     index_name         IN  VARCHAR2,                                         
     attribute_name     IN  VARCHAR2,                                         
     attribute_value    IN  CLOB     DEFAULT NULL                           
  );

Parámetros

parámetro Descripción

index_name

Nombre del índice vectorial. El nombre del índice vectorial debe seguir las reglas de nomenclatura del identificador de Oracle SQL. La longitud máxima del nombre del almacén de vectores es de 125 caracteres.

Este parámetro es obligatorio.

attributes

Especifica los atributos de índice vectorial en formato JSON.

Este parámetro es obligatorio.

attribute_name

Nombre de los atributos personalizados especificados como parámetros JSON en el procedimiento CREATE_VECTOR_INDEX.

No puede modificar los siguientes atributos:

  • location
  • vector_table_name
  • chunk_size
  • chunk_overlap
  • vector_distance_metric
  • vector_dimension

Este parámetro es obligatorio.

attribute_value

Valor especificado por el usuario para el attribute_name personalizado. El valor puede ser de tipo CLOB, NUMBER o VARCHAR2.

El valor por defecto es NULL.

Note:

Utilice el parámetro attributes para especificar pares attribute_name y de valores en formato JSON o los parámetros attribute_name y attribute_value juntos.

Ejemplos

BEGIN                                                                
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                 
      index_name       => 'MY_INDEX',                                   
      attribute_name   => 'object_storage_credential_name',                
      attribute_value  => 'NEW_CRED'                           
   );                                                                 
END;                                                                 
/

El siguiente ejemplo acepta el tipo NUMBER como attribute_value.

BEGIN                                                                
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                 
      index_name       => 'MY_INDEX',                                   
      attribute_name   => 'match_limit',                
      attribute_value  => 10                           
   );                                                                 
END;                                                                 
/

El siguiente ejemplo acepta el tipo VARCHAR2 como attribute_value.

BEGIN                                                                
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                 
      index_name       => 'MY_INDEX',                                   
      attribute_name   => 'profile_name',                
      attribute_value  => 'AI_PROF2'                           
   );                                                                 
END;                                                                 
/

En el siguiente ejemplo se acepta attributes en formato JSON.

BEGIN
  DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
    index_name => 'MY_VECTOR_INDEX', 
    attributes => '{"match_limit": 10, 
                    "refresh_rate": 30}'
  );
END;
/

Atributos de índice de vector

Los atributos de un índice vectorial ayudan a gestionar y configurar el comportamiento del índice vectorial. Puede agregar atributos de índice personalizados según sea necesario. Algunos atributos son opcionales y tienen un valor por defecto.

Atributos

Nombre del atributo Valor Obligatorio Descripción
chunk_size 1024 (valor por defecto) N.º

Tamaño de texto de fragmentación de los datos de entrada.

Para los datos de texto, esto significa el número de caracteres.

chunk_overlap 128 (valor por defecto) N.º

Especifica la cantidad de caracteres superpuestos entre fragmentos de texto adyacentes. Este atributo es útil para garantizar la continuidad contextual y la precisión en el procesamiento de texto al permitir solapamientos entre segmentos, lo que ayuda a evitar la pérdida de información contextual en los límites de fragmentos.

location

NA

Este parámetro especifica el URI o los directorios del archivo de origen y los archivos de origen.

Los patrones comodín están soportados tanto para URI de archivo de origen como para directorios.

URI de archivo de origen en la nube:

Puede especificar un URI de archivo de origen para el cubo o la subcarpeta. Puede utilizar comodines para especificar subcarpetas o nombres de archivo. Se puede usar el carácter "*" como comodín para varios caracteres y el carácter "?" se puede utilizar como comodín para un solo carácter.

Ejemplo de uso de comodines:

location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv

El formato de los URI depende del servicio Cloud Object Storage que utilice; para obtener información, consulte Formatos de URI en la nube de almacenamiento de objetos.

Directorio:

Puede especificar un directorio y un nombre de archivo. El formato para especificar un directorio es: MY_DIR:filename.ext. Por defecto, el nombre de directorio MY_DIR es un objeto de base de datos y no distingue entre mayúsculas y minúsculas. El Nombre del Archivo es sensible a mayúsculas/minúsculas.

Solo puede utilizar comodines para especificar nombres de archivo en un directorio. Se puede usar el carácter * como comodín para varios caracteres y el carácter ? se puede utilizar como comodín para un solo carácter. Por ejemplo: MY_DIR:* o MY_DIR:test?.

Utilice comillas dobles para especificar un nombre de directorio sensible a mayúsculas/minúsculas. Por ejemplo: "my_dir1":*, "my_dir2":Test?

Para incluir un carácter de comillas, utilice dos comillas. Por ejemplo: MY_DIR:''filename.ext. Especifica que el nombre de archivo empieza por una comilla (').

Los archivos de esta ubicación pueden ser documentos en formatos como PDF, DOC, JSON, XML o HTML. Consulte Formatos de documento soportados.

match_limit

5 (valor por defecto) N.º

Especifica el número máximo de resultados que se devolverán en una consulta de búsqueda de vector, lo que controla el tamaño de salida y mejora la eficiencia de las operaciones de recuperación de datos.

object_storage_credential_name

NA

Especifica el nombre de las credenciales para acceder a un almacenamiento de objetos.

pipeline_name

<vector_index_name>$VECPIPELINE N.º

Especifica el nombre del pipeline de carga de datos del índice de vector. Este atributo se define automáticamente para el índice vectorial, no se puede especificar ni modificar. El nombre del pipeline se puede utilizar para supervisar la carga de datos del índice vectorial mediante Supervisión y Solución de Problemas de Pipelines.

profile_name

NA

Nombre del perfil de IA que se utiliza para incrustar datos de origen y peticiones de datos de usuario.

refresh_rate

1440 minutos (valor por defecto) N.º

Intervalo de actualización de datos en el almacén de vectores. La unidad es de minutos.

similarity_threshold

0 (valor por defecto) N.º

Define el nivel mínimo de similitud necesario para que dos elementos se consideren coincidentes. Resulta útil para filtrar los resultados en algoritmos de coincidencia y así garantizar la relevancia.

vector_distance_metric

Cadena que corresponde a uno de los valores especificados en la descripción.

N.º

Especifica el tipo de cálculo de distancia utilizado para comparar vectores en una base de datos, determinando cómo se cuantifica la similitud entre elementos.

Valores válidos para Oracle 23ai:

  • EUCLIDEAN
  • L2_SQUARED (EUCLIDEAN_SQUARED)
  • COSINE (por defecto)
  • DOT
  • MANHATTAN
  • HAMMING

vector_db_provider

oracle

Especifica el nombre del proveedor que gestiona y sirve como almacén de vectores.

vector_dimension

NA N.º

Especifica el número de elementos en cada vector dentro del almacén de vectores, definiendo el tamaño y la estructura de la representación de datos.

vector_table_name

<vector_index_name>$VECTAB (por defecto)

N.º

Especifica el nombre de la tabla o recopilación para almacenar incrustaciones de vectores y datos fragmentados.

Ejemplo: Especificar Ubicación de URI de Object Storage
En el siguiente ejemplo se muestra la creación de un índice vectorial con el almacén de vectores de OCI Generative AI.
BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
         index_name  => 'MY_INDEX',
         attributes  => '{"vector_db_provider": "oracle",
                          "location": "https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/my_namespace/my_bucket/my_data_folder",
                          "object_storage_credential_name": "OCI_CRED",
                          "profile_name": "OPENAI_ORACLE",
                          "vector_dimension": 1024,
                          "vector_distance_metric": "cosine",
                          "chunk_overlap":128,
                          "chunk_size":1024
      }');
END;
/                                                                 
/
Ejemplo: especificación de ubicación de URI de almacenamiento de objetos con patrón de comodín

En este ejemplo, se especifica un patrón de comodín (*) en el URI de almacenamiento de objetos como parámetro location. Carga todos los archivos CSV desde el URI de Object Storage.

BEGIN                                                               
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                
            index_name    => 'MY_INDEX',                                  
            attributes    => JSON_OBJECT(                                
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',             
                       'profile_name'      value 'OCIGENAI',        
                       'location'          value 'https://objectstorage.myregion.oraclecloud.com/n/my$namespace/b/bucketname/o/year=????/month=??/file*.csv)',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
Ejemplo: Especificación de Ubicación de Objeto de Directorio con Patrón de Comodín

En este ejemplo, se especifican objetos de directorio en el parámetro location mediante un patrón de comodín. Carga todos los archivos CSV en el directorio MY_DIR.

BEGIN                                                               
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                
            index_name    => 'MY_INDEX',                                  
            attributes    => JSON_OBJECT(                                
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',             
                       'profile_name'      value 'OCIGENAI',        
                       'location'          value 'MY_DIR:*.csv',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
Ejemplo: Especificación de Ubicación de Objeto de Directorio Sensible a Mayúsculas/Minúsculas con Patrón de Comodín

En este ejemplo se especifica un objeto de directorio sensible a mayúsculas/minúsculas en el parámetro location mediante un patrón de comodín. Carga todos los archivos CSV en el directorio My_Dir.

BEGIN                                                               
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                
            index_name    => 'MY_INDEX',                                  
            attributes    => JSON_OBJECT(                                
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',             
                       'profile_name'      value 'OCIGENAI',        
                       'location'          value '"My_Dir":*.csv',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
Ejemplo: Especificación de Objeto de Directorio Sensible a Mayúsculas/Minúsculas con Todos los Archivos como Patrón de Comodín

En este ejemplo, se especifica un objeto de directorio sensible a mayúsculas/minúsculas en el parámetro location mediante un patrón de comodín (*). Carga todos los archivos ubicados en el directorio My_Dir.

BEGIN                                                               
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                
            index_name    => 'MY_INDEX',                                  
            attributes    => JSON_OBJECT(                                
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',             
                       'profile_name'      value 'OCIGENAI',        
                       'location'          value '"My_Dir":*',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
Ejemplo: especificación de una coincidencia de nombre de archivo en el objeto de directorio

En este ejemplo se especifica un objeto de directorio y se utiliza un prefijo de nombre de archivo, como test, en el parámetro location. Carga todos los archivos en el directorio MY_DIR cuyos nombres empiezan por test.

BEGIN                                                               
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                
            index_name    => 'MY_INDEX',                                  
            attributes    => JSON_OBJECT(                                
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',             
                       'profile_name'      value 'OCIGENAI',        
                       'location'          value 'MY_DIR:test*',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/

CREATE_CONVERSATION Procedimiento

Este procedimiento permite crear una conversación y definir automáticamente conversation_id en el procedimiento.

Note:

Si utiliza el procedimiento DBMS_CLOUD_AI.CREATE_CONVERSATION, puede omitir la configuración de conversation_id, ya que el procedimiento la configura automáticamente.

Sintaxis

DBMS_CLOUD_AI.CREATE_CONVERSATION(
  attributes            IN CLOB DEFAULT NULL
);

Parámetros

parámetro Descripción

attributes

Atributos para la conversación en formato JSON. Consulte CREATE_CONVERSATION Attributes para obtener más información.

El valor por defecto es NULL.

Ejemplo

Ejemplo: Crear conversación

El siguiente ejemplo muestra cómo crear una conversación sin ninguna personalización.

EXEC DBMS_CLOUD_AI.CREATE_CONVERSATION;

Resultado:

PL/SQL procedure successfully completed.
Ejemplo: creación de conversaciones con atributos personalizados

En el siguiente ejemplo se muestra la creación de una conversación con parámetros personalizados como title, description, retention_days y conversation_length.

-- Create conversation with custom attributes
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
               attributes => '{"title":"Conversation 1",
                               "description":"this is a description",
                               "retention_days":5,
                               "conversation_length":5}')
     AS conversation_id FROM dual;

Función CREATE_CONVERSATION

Esta función crea una conversación y devuelve su valor conversation_id que se puede utilizar en otros procedimientos o funciones como DBMS_CLOUD_AI.SET_CONVERSATION_ID y DBMS_CLOUD_AI.GENERATE.

Oracle recomienda definir conversation_id para activar la conversación. Como alternativa, puede definir conversation_id en la función DBMS_CLOUD_AI.GENERATE.

Note:

Si utiliza el procedimiento DBMS_CLOUD_AI.CREATE_CONVERSATION, puede omitir la configuración de conversation_id, ya que el procedimiento la configura automáticamente.

Sintaxis

DBMS_CLOUD_AI.CREATE_CONVERSATION(
  attributes            IN CLOB DEFAULT NULL
) RETURN VARCHAR2;

Parámetros

parámetro Descripción

attributes

Atributos para la conversación en formato JSON. Consulte CREATE_CONVERSATION Attributes para obtener más información.

El valor por defecto es NULL.

Ejemplo

Ejemplo: Crear conversación

En el siguiente ejemplo se muestra el uso de la función DBMS_CLOUD_AI.CREATE_CONVERSATION para crear una conversación sin ninguna personalización.

SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION FROM DUAL;

Resultado:

CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
Ejemplo: creación de conversaciones con atributos personalizados

En el siguiente ejemplo se muestra el uso de la función DBMS_CLOUD_AI.CREATE_CONVERSATION para especificar atributos como title, retention_days y conversation_length.

SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
				attributes => '{"title":"This is a test conversation",
                               "retention_days":7,
                               "conversation_length":20}') 
FROM DUAL;

Atributos CREATE_CONVERSATION

Estos atributos gestionan el contexto de la conversación, incluido el tiempo que se debe retener, el número de peticiones de datos con respuestas para almacenar o mostrar, y metadatos como el título y la descripción como referencia. Algunos atributos son opcionales y tienen un valor por defecto.

Atributos

Nombre del atributo Valor por defecto Descripción

title

Nueva Conversación

Nombre asignado por el usuario para la conversación. Si no se proporciona, Select AI hará que el LLM genere uno cuando la conversación se utilice por primera vez con un mensaje.

description

NULL

Proporciona una descripción definida por el usuario que resume la finalidad o el contexto de la conversación. Si no se proporciona, el LLM genera uno cuando la conversación se utiliza por primera vez con un mensaje y lo actualiza de nuevo en el 5º uso para incluir información más precisa y relevante.

retention_days

7

Especifique el número de días que desea conservar el historial de conversaciones. Se almacena en la base de datos desde su fecha de creación. Si omite el valor, el sistema lo establece en el valor predeterminado 7. Si lo define en 0, el sistema retiene la conversación hasta que la suprima manualmente mediante el procedimiento DBMS_CLOUD_AI.DROP_CONVERSATION o DBMS_CLOUD.DELETE_ALL_OPERATIONS('CONVERSATION').

conversation_length

NULL

Especifique el número de peticiones de datos y respuestas recientes que se van a incluir con la petición de datos actual. El valor máximo permitido es 999. Puede sustituir este valor especificando el parámetro conversation_length en la función DBMS_CLOUD_AI.GENERATE o definiéndolo en el perfil AI mediante SELECT AI <ACTION> <PROMPT>. Aplique las siguientes reglas de prioridad para conversation_length:
  1. Valor del argumento de atributos en DBMS_CLOUD_AI.GENERATE
  2. El valor establecido en la conversación tiene la siguiente prioridad
  3. El valor definido en el perfil AI tiene la última prioridad

Si ninguno de ellos especifica conversation_length, el valor por defecto es 10.

En el siguiente ejemplo, se muestra cómo personalizar los atributos de conversación en el procedimiento DBMS_CLOUD_AI.CREATE_CONVERSATION.
-- Create conversation with custom attributes
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
               attributes => '{"title":"Conversation 1",
                               "description":"this is a description",
                               "retention_days":5,
                               "conversation_length":5}')
     AS conversation_id FROM dual;

UPDATE_CONVERSATION Procedimiento

Este procedimiento actualiza una conversación existente con un valor especificado de los atributos de conversación.

Sintaxis

DBMS_CLOUD_AI.UPDATE_CONVERSATION(
    conversation_id    IN VARCHAR2,
    attributes         IN CLOB
);

Parámetros

parámetro Descripción

conversation_id

Número único asignado a una conversación.

Este parámetro es obligatorio.

attributes

Atributos para la conversación en formato JSON. Consulte CREATE_CONVERSATION Attributes para obtener más información.

Ejemplo

EXEC DBMS_CLOUD_AI.UPDATE_CONVERSATION(
conversation_id => '30C9DB6E-EA4E-AFBA-E063-9C6D46644B92', 
attributes => '{"retention_days":20, 
		"description":"This a sample description", 
		"title":"Sample title", 
		"conversation_length":20}');

Resultado:

PL/SQL procedure successfully completed.

SET_CONVERSATION_ID Procedimiento

Este procedimiento establece la conversación actual en la ID. especificada. Los campos posteriores incluyen campos de conversación existentes basados en los atributos configurados de la conversación.

Sintaxis

DBMS_CLOUD_AI.SET_CONVERSATION_ID(
    conversation_id   IN VARCHAR2
);

Parámetros

parámetro Descripción

conversation_id

Número único asignado a una conversación en la sesión actual.

Este parámetro es obligatorio.

Ejemplo

EXEC DBMS_CLOUD_AI.SET_CONVERSATION_ID('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
   

Resultado:

PL/SQL procedure successfully completed.

Función GET_CONVERSATION_ID

Esta función devuelve el ID de conversación definido actualmente en la sesión mediante el procedimiento DBMS_CLOUD_AI.SET_CONVERSATION_ID o DBMS_CLOUS_AI.CREATE_CONVERSATION. Si no ha definido una conversación, la función devuelve NULL. Si se suelta la conversación, el sistema también la borra en la sesión. Consulte CLEAR_CONVERSATION_ID Procedure.

Sintaxis

DBMS_CLOUD_AI.GET_CONVERSATION_ID
RETURN VARCHAR2;

Ejemplo

En este ejemplo se muestra el ID de conversación definido en la sesión actual.

SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID;

Resultado:

--------------------------------------------------------------------------------
30C9DB6E-EA4F-AFBA-E063-9C6D46644B92

CLEAR_CONVERSATION_ID Procedimiento

Este procedimiento borra un ID de conversación definido en la sesión para desactivar la función de conversación para SELECT AI <ACTION> <PROMPT>. Si no ha establecido una conversación, el sistema no emite ningún error.

Sintaxis

DBMS_CLOUD_AI.CLEAR_CONVERSATION_ID;

Ejemplo

En este ejemplo, se muestra la visualización del ID de conversación actual en la sesión, la eliminación del ID y la verificación del cambio.

-- A conversation id is set in the session
SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID FROM dual;
 
GET_CONVERSATION_ID
--------------------------------------------------------------------------------
3A88BFF0-1D7E-B3B8-E063-9C6D46640ECD
 
 
-- Clear the conversation id
EXEC DBMS_CLOUD_AI.CLEAR_CONVERSATION_ID;
 
PL/SQL procedure successfully completed.
 
 
-- The conversation id is removed from the session
SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID FROM dual;
 
GET_CONVERSATION_ID
--------------------------------------------------------------------------------

DELETE_CONVERSATION_PROMPT Procedimiento

El procedimiento quita un campo determinado de la conversación.

Sintaxis

DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT(
    conversation_prompt_id  IN VARCHAR2,
    force                   IN BOOLEAN DEFAULT FALSE
);

Parámetros

parámetro Descripción

conversation_prompt_id

Número único asignado a un campo en una conversación. Puede encontrar el identificador de petición de datos consultando la vista DBA/USER_CLOUD_AI_CONVERSATION_PROMPTS. Consulte DBMS_CLOUD_AI Vistas.

Este parámetro es obligatorio.

force

Si es TRUE, el procedimiento ignora los errores si conversation_prompt_id no existe.

El valor predeterminado de este parámetro es FALSE.

Ejemplo

EXEC DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT('30C9DB6E-EA61-AFBA-E063-9C6D46644B92');

Resultado:

PL/SQL procedure successfully completed.

DROP_CONVERSATION Procedimiento

El procedimiento quita la conversación y todos sus campos asociados y las respuestas asociadas. Una vez borrado, conversation_id deja de ser válido. Si se borra una conversación mientras está definida en la sesión, se borra automáticamente.

Sintaxis

DBMS_CLOUD_AI.DROP_CONVERSATION(
    conversation_id  IN VARCHAR2,
    force            IN BOOLEAN  DEFAULT FALSE
);

Parámetros

parámetro Descripción

conversation_id

Número único asignado a una conversación.

Este parámetro es obligatorio.

force

Si es TRUE, el procedimiento ignora los errores si conversation_id no existe.

El valor predeterminado de este parámetro es FALSE.

Ejemplo

EXEC DBMS_CLOUD_AI.DROP_CONVERSATION('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');

Resultado:

PL/SQL procedure successfully completed.

Procedimiento FEEDBACK

Este procedimiento le permite proporcionar comentarios a Select AI para mejorar potencialmente la precisión de la generación de consultas. Tiene la opción de proporcionar comentarios positivos o negativos, así como comentarios textuales o consultas SQL revisadas.

Sintaxis

DBMS_CLOUD_AI.FEEDBACK(
      profile_name      IN  VARCHAR2,
      sql_id            IN  DBMS_ID,
      feedback_type     IN  VARCHAR2 DEFAULT NULL,
      response          IN  CLOB DEFAULT NULL,
      feedback_content  IN  CLOB DEFAULT NULL,   
      operation         IN  VARCHAR2 DEFAULT 'ADD'
  );
 
DBMS_CLOUD_AI.FEEDBACK(
      profile_name      IN  VARCHAR2,
      sql_text          IN  CLOB,
      feedback_type     IN  VARCHAR2 DEFAULT NULL,
      response          IN  CLOB DEFAULT NULL,
      feedback_content  IN  CLOB DEFAULT NULL,
      operation         IN  VARCHAR2 DEFAULT 'ADD'
  );

Parámetros

parámetro Descripción

profile_name

Especifica el perfil AI que se va a utilizar. Si no proporciona profile_name, Select AI utiliza el perfil por defecto definido en la sesión.

Este parámetro es obligatorio.

sql_id

Identifica la consulta SQL. Un sql_id solo puede tener una entrada de comentarios.

Este parámetro es obligatorio.

sql_text

Contiene el texto completo de la consulta SQL.

Este parámetro es obligatorio.

feedback_type

Permite especificar el tipo de comentario. Los valores disponibles son:
  • positive: acepte el SQL generado.
  • negative: proporcione las mejoras de consulta SQL necesarias mediante la identificación de errores en la consulta.

Note:

El procedimiento DBMS_CLOUD_AI.FEEDBACK permite especificar sql_id o sql_text, por lo tanto, feedback_type es necesario, mientras que si utiliza la acción feedback, el LLM determina o interpreta dinámicamente el tipo de comentarios.

Éste es un parámetro obligatorio cuando operation es add.

response

Representa el resultado de consulta SQL correcto que espera el usuario.

Éste es un parámetro obligatorio cuando operation es add y feedback_type es negative.

feedback_content

Captura los comentarios de lenguaje natural del usuario. Tiene la opción de utilizar este parámetro junto con response.

operation

Especifica la operación que se debe realizar. Los valores aceptados son:
  • add (valor por defecto): agregue sus comentarios especificando feedback_type.
  • delete: suprima sus comentarios proporcionando sql_id

Ejemplo

Ejemplo: proporcionar comentarios para el SQL generado mediante operaciones de adición o eliminación

En el siguiente ejemplo se muestra el uso del procedimiento DBMS_CLOUD_AI.FEEDBACK para aceptar o mejorar el SQL generado mediante la especificación de los parámetros del procedimiento.

EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_id=> '852w8u83gktc1',
                                   feedback_type=>'positive',
                                   operation=>'add');
EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_text=> 'select ai showsql how many movies',
                                   feedback_type=> 'negative',
                                   response=>'SELECT SUM(1) FROM "ADB_USER"."MOVIES"',
                                   feedback_content=>'Use SUM instead of COUNT');
EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_id=> '852w8u83gktc1',
                                   operation=>'delete');

Índice vectorial para FEEDBACK

Seleccionar AI crea un índice vectorial por defecto denominado <profile_name>_FEEDBACK_VECINDEX con atributos por defecto cuando utiliza la función de comentarios por primera vez.

Puede modificar sus atributos, como similarity_threshold y match_limit, mediante el procedimiento DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX. Este índice ayuda a acotar el SQL generado en el futuro en función de los comentarios proporcionados. Esta tabla se borra cuando se borra el perfil AI asociado. También puede borrar <profile_name>_FEEDBACK_VECINDEX. Cuando lo hace, Select AI ya no utiliza comentarios como indicaciones para las acciones runsql, showsql y explainsql. Sin embargo, si envía nuevos comentarios mediante la función Seleccionar comentarios de IA, Seleccionar IA crea automáticamente un nuevo índice de vector de comentarios.

Note:

El valor por defecto de match_limit para feedback es 3.

Nombre de tabla de vector

La tabla <profile_name>_FEEDBACK_VECINDEX$VECTAB contiene representaciones vectoriales (embeddings) de los comentarios del usuario junto con otros parámetros, que Select AI utiliza para mejorar la generación de SQL a lo largo del tiempo.

Parámetros

Columna Descripción

attributes

Incluye atributos de objeto JSON según el procedimiento FEEDBACK.

content

Contiene la petición del usuario.

embedding

Contiene representaciones vectoriales (embeddings) de la petición de datos del usuario.

Ejemplo

En el siguiente ejemplo se muestra el uso de la tabla de índice vectorial generada automáticamente para consultar y proporcionar comentarios.

SQL> select content, attributes from OCI_FEEDBACK1_FEEDBACK_VECINDEX$VECTAB where JSON_VALUE(attributes, '$.sql_text') = 'select ai showsql how many movies';
 
CONTENT                                                
----------------------------------------------------------------------------------------------------
how many movies                                             
ATTRIBUTES
----------------------------------------------------------------------------------------------------
 
{"response":"SELECT SUM(1) FROM \"ADB_USER\".\"MOVIES\"","feedback_type":"negative","sql_id":null,"sql_text":"select ai showsql how many movies","feedback_content":null}
DBMS_CLOUD_AI.feedback Procedure(Positive Feedback)