DBMS_CLOUD_AI - Pacote

O pacote DBMS_CLOUD_AI, com o Select AI, facilita e configura a tradução de prompts de linguagem natural para gerar, executar e explicar instruções SQL. Além disso, permite geração aumentada de recuperação e interações baseadas em linguagem natural, incluindo bate-papo com LLMs.

DBMS_CLOUD_AI Visão Geral

Descreve o uso do pacote DBMS_CLOUD_AI.

Use o pacote DBMS_CLOUD_AI para criar perfis do AI e configurá-los para acesso a um LLM (Large Language Model). Defina o perfil do AI na sessão de usuário do banco de dados atual para executar tarefas como gerar, executar e explicar SQL. Além disso, habilite a geração aumentada de recuperação e interações baseadas em linguagem natural, incluindo bate-papo com LLMs.

Para saber mais sobre plataformas e LLMs suportados, consulte Sobre a Select AI.

Resumo dos Subprogramas DBMS_CLOUD_AI

Esta seção abrange os subprogramas DBMS_CLOUD_AI fornecidos com o Autonomous AI Database.

Subprograma Descrição

CREATE_PROFILE Procedimento

Este procedimento cria um novo perfil do AI para traduzir prompts de linguagem natural para instruções SQL.

Atributos de Perfil

Fornece atributos de perfil de IA que você pode configurar.

CLEAR_PROFILE Procedimento

Este procedimento limpa um perfil de AI ativo na sessão atual.

DISABLE_PROFILE Procedimento

Este procedimento desativa um perfil do AI no banco de dados atual.

DROP_PROFILE Procedimento

Este procedimento elimina um perfil AI existente.

ENABLE_PROFILE Procedimento

Este procedimento permite que um perfil do AI seja usado no banco de dados atual.

Função GERAR

Essa função permite que você use Selecionar IA de maneira sem monitoramento de estado com seu perfil existente.

Função GENERATE_SYNTHETIC_DATA

Esta função gera dados sintéticos.

Função GET_PROFILE

Esta função retorna o nome do perfil usado na sessão atual.

SET_ATTRIBUTE Procedimento

Este procedimento define atributos de perfil de IA.

SET_PROFILE Procedimento

Este procedimento define o perfil do AI para o banco de dados atual.

ENABLE_DATA_ACCESS Procedimento

Use este procedimento para permitir o envio de dados ao seu LLM.

DISABLE_DATA_ACCESS Procedimento

Use este procedimento para desativar o envio de dados para seu LLM.

Procedimento FEEDBACK

Use este procedimento para melhorar potencialmente a precisão da geração de consultas, fornecendo um feedback para Selecionar IA.

Índice de vetores para FEEDBACK

Esse é um índice de vetor padrão criado quando você usa feedback pela primeira vez.

CREATE_CONVERSATION Procedimento

Este procedimento ajuda a criar uma conversa.

Função CREATE_CONVERSATION

Essa função ajuda a criar uma conversa e usar o ID da conversa em outros procedimentos.

CREATE_CONVERSATION Atributos

Use os atributos da conversa para personalizar suas conversas.

UPDATE_CONVERSATION Procedimento

Este procedimento atualiza um procedimento existente com parâmetros especificados pelo usuário.

SET_CONVERSATION_ID Procedimento

Este procedimento define o suporte à conversa na sessão atual.

Função GET_CONVERSATION_ID

Este procedimento ajuda a obter o parâmetro conversation_id.

CLEAR_CONVERSATION_ID Procedimento

Este procedimento ajuda a limpar qualquer conversation_id definido na sessão atual.

DELETE_CONVERSATION_PROMPT Procedimento

Este procedimento exclui um prompt específico.

DROP_CONVERSATION Procedimento

Este procedimento exclui uma conversa inteira e seus metadados.

Função SUMMARIZE

Esta função resume seu conteúdo com base nos parâmetros.

Parâmetros SUMMARIZE

Use os atributos de resumo para personalizar a geração de resumo.

CREATE_VECTOR_INDEX Procedimento

Este procedimento cria um índice vetorial no banco de dados vetorial especificado e o preenche com dados de um armazenamento de objetos usando um job do scheduler assíncrono.

DROP_VECTOR_INDEX Procedimento

Este procedimento remove um índice de armazenamento de vetores. Normalmente, ele remove o objeto de índice de armazenamento de vetores e exclui o banco de dados vetorial.

DISABLE_VECTOR_INDEX Procedimento

Este procedimento desativa um objeto de índice vetorial no banco de dados atual. Quando desativado, um perfil AI não pode usar o índice de vetores e o sistema não carrega dados no armazenamento de vetores.

ENABLE_VECTOR_INDEX Procedimento

Este procedimento ativa ou ativa um objeto de índice de vetor desativado anteriormente.

UPDATE_VECTOR_INDEX Procedimento

Este procedimento atualiza um índice de armazenamento de vetores existente com um valor especificado do atributo de índice de vetores.

Atributos de Índice de Vetor

Fornece atributos de perfil de índice vetorial que você pode configurar.

CREATE_PROFILE Procedimento

O procedimento cria um novo perfil do AI para traduzir prompts de linguagem natural para a instrução SQL.

Sintaxe

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 Descrição

profile_name

Um nome para o perfil do AI. O nome do perfil deve seguir as regras de nomenclatura do identificador Oracle SQL. O tamanho máximo do nome do perfil é 125 caracteres.

Este é um parâmetro obrigatório.

attributes

Atributos de perfil no formato JSON. Consulte Atributos de Perfil do AI para obter mais detalhes.

O valor default é NULL.

status

Status do perfil.

O valor default é ativado.

description

Descrição do perfil de IA.

O valor default é NULL.

Exemplo

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

Atributos de Perfil

Os atributos de um perfil do AI ajudam a gerenciar e configurar o comportamento do perfil do AI. Alguns atributos são opcionais e têm um valor padrão.

Atributos

Nome do Atributo Descrição

annotations

Fornece metadados adicionais sobre suas tabelas e colunas de banco de dados usando o recurso de anotações 26ai.

Os valores inválidos são TRUE ou FALSE. O valor padrão é FALSE. Os Valores não diferenciam maiúsculas/minúsculas.

TRUE: Aumenta o prompt do usuário com anotações no nível da tabela e da coluna, além de outros metadados para o LLM.

FALSE: Não inclui anotações como parte dos metadados de prompt aumentado.

azure_deployment_name

Nome do modelo implantado do Azure OpenAI Service. O nome só pode incluir caracteres alfanuméricos, caractere de sublinhado (_) e um hífen (-). O nome não pode terminar com um sublinhado (_) ou um hífen (-). Para saber como obter o azure_deployment_name, consulte Criar e implantar um recurso do Azure OpenAI Service.

azure_embedding_deployment_name

Nome do modelo de incorporação implantado do Azure OpenAI.

O nome só pode incluir caracteres alfanuméricos, sublinhado e hífen. O nome não pode começar ou terminar com um hífen ou sublinhado.

azure_resource_name

Nome do recurso do Serviço OpenAI do Azure. O nome do recurso só pode incluir caracteres alfanuméricos e hifens e não pode começar ou terminar com um hífen. Para saber como obter o azure_resource_name, consulte Criar e implantar um recurso do Azure OpenAI Service.

case_sensitive_values

Especifica se Selecionar IA deve instruir o LLM a gerar SQL sem distinção entre maiúsculas e minúsculas para colunas que contenham string ou valores de texto.

Os valores compatíveis são:

  • true: Indica o LLM para gerar consultas SQL com valores de string com distinção entre maiúsculas e minúsculas.

  • false: Indica o LLM para gerar consultas SQL que ignoram maiúsculas e minúsculas para valores de string.

O valor padrão é false.

comments

Inclui comentários de tabela e coluna nos metadados usados para traduzir prompts de linguagem natural usando o AI. O tipo de dados BOOLEAN é suportado. Os valores válidos são TRUE ou FALSE para uma string com tipo de dados VARCHAR2. Os valores não fazem distinção entre maiúsculas/minúsculas.

constraints

Gerencia se deseja incluir restrições de integridade referencial, como chaves primárias e estrangeiras, nos metadados enviados ao LLM.

Os valores inválidos são TRUE ou FALSE. O valor padrão é FALSE. Os Valores não diferenciam maiúsculas e minúsculas.

TRUE: Inclui restrições referenciais nos metadados de prompt aumentado enviados ao LLM.

FALSE: Não inclui restrições de integridade referencial.

conversation

Um atributo VARCHAR2 que indica se o histórico de conversas está ativado para um perfil. Os valores válidos são true ou false. O valor padrão é false. Os Valores não diferenciam maiúsculas e minúsculas.

credential_name

O nome da credencial para acessar as APIs do provedor de IA.

A credencial que usa tokens do portador pode ser criada usando o nome do provedor como o nome do usuário e o token do portador como a senha.

As credenciais do Segredo do Vault também são suportadas.

A autenticação principal, por exemplo, principal de serviço do Azure, também é suportada. Para obter mais informações sobre como configurá-lo, consulte Usar o Principal de Serviço do Azure para Acessar Recursos do Azure.

É um atributo obrigatório. Consulte CREATE_CREDENTIAL Procedure.

embedding_model

O modelo de incorporação definido no perfil de IA. Veja a seguir os provedores de IA suportados para os modelos de incorporação com seus valores padrão:

  • 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
Observação

  • O parâmetro embedding_model não é aplicável para Anthropic e Hugging Face.

  • Para modelos no banco de dados, especifique o nome do modelo importado para o banco de dados se quiser usar o Select AI com o modelo de transformador no banco de dados. Você pode obter o nome do modelo consultando USER_MINING_MODELS.

    Sintaxe:

    Esta é a sintaxe para usar o modelo de transformador no banco de dados para embedding_model:

    "embedding_model": "[<model_schema>.]<model_name>"

enforce_object_list

Especifica se o LLM deve ser restrito para gerar SQL que use apenas tabelas cobertas pela lista de objetos.

Os valores compatíveis são:

  • true: Impõe o uso somente das tabelas especificadas na lista de objetos.

  • false: Permite que o LLM use tabelas acessíveis ao usuário.

Os Valores não diferenciam maiúsculas e minúsculas. O valor padrão é false.

max_tokens

Indica o número de tokens a serem previstos por geração. O padrão é 1024. Consulte Tokens e Tokenizadores para obter mais detalhes.

model

O nome do modelo de IA que está sendo usado para gerar respostas.

Consulte Selecionar seu Provedor de IA e LLMs e especifique o nome do modelo.

Observação

  • Cohere: Modelos menores e "leves" são mais rápidos, enquanto modelos maiores têm melhor desempenho. Modelos personalizados também podem ser fornecidos com seu ID completo.
  • OCI Generative AI: Os Modelos de Chat são suportados para todas as ações Selecionar AI, como runsql, showsql, explainsql, narrate e chat.

    A Select AI suporta modelos pré-treinados para a OCI Generative AI. Os modelos personalizados também podem ser fornecidos com seus OCIDs completos. Se você estiver fornecendo o OCID ou oci_endpoint_id, certifique-se de fornecer oci_runtimetype ou oci_apiformat, dependendo dos modelos do OCI Chat.

    Para saber mais sobre modelos suportados na OCI Generative AI, consulte Pretrained Foundational Models in Generative AI.

  • Esse parâmetro não é usado para o Azure, pois o modelo é determinado quando você cria sua implantação no portal do Serviço OpenAI do Azure.

  • AWS: Os modelos básicos do Amazon Bedrock exigem permissões de acesso por meio do console do Amazon Bedrock. Consulte a documentação da AWS para obter o modelID.
  • OpenAI compatível: Consulte a documentação do provedor de IA para obter os nomes de modelo suportados.

object_list

Array de objetos JSON que especificam o proprietário e os nomes de objetos elegíveis para tradução de linguagem natural para SQL. Para incluir todos os objetos de um determinado usuário, omita o "nome" e especifique apenas a chave "proprietário" no objeto JSON.

Os seguintes tipos de objetos podem ser usados:

  • tabelas
  • exibições
  • views materializadas
  • tabelas temporárias globais
  • tabelas externas
  • sinônimos dos tipos de objeto acima

Para traduzir linguagem natural para SQL, o nome do objeto, o proprietário do objeto, as colunas do objeto e os comentários são enviados ao provedor de IA usando solicitações HTTPS. Evite especificar objetos com nome de objeto confidencial, nomes de coluna ou comentários na lista de objetos.

Os provedores de IA podem ter limite no tamanho dos metadados permitidos nas solicitações de tradução. Considere limitar a lista de objetos adequados aos prompts de linguagem natural pelos usuários do aplicativo.

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

As tabelas externas criadas usando a sincronização do OCI Data Catalog ou AWS Glue também podem ser usadas na lista de objetos. Isso ajuda a gerenciar metadados em Catálogos de Dados centrais e usar os metadados diretamente para traduzir prompts de linguagem natural usando IA.

object_list_mode

Especifica se os metadados das tabelas mais relevantes ou de todas as tabelas devem ser enviados para o LLM.

Os valores suportados são:

  • automated: Envia metadados somente para as tabelas específicas identificadas como mais relevantes para a consulta.

  • all: Envia metadados para todas as tabelas acessíveis ao usuário.

Quando object_list_mode é definido como automated, o Select AI cria automaticamente um índice vetorial, chamado <profile_name>_OBJECT_LIST_VECINDEX, com atributos padrão. Consulte

oci_apiformat

Especifica o formato no qual a API espera que os dados sejam enviados e recebidos. Use este atributo para gerar respostas de texto. Este atributo se aplica aos Modelos de Chat do OCI Generative AI em um cluster de IA dedicado. Especifique esse atributo quando você especificar um OCID de modelo no atributo model ou fornecer um ponto final no atributo oci_endpoint_id.

Os valores suportados são:
  • COHERE
  • GENERIC
Observação

Use este atributo para Modelos de Chat do OCI Generative AI

oci_compartment_id

Especifica o OCID do compartimento que você tem permissão para acessar ao chamar o serviço OCI Generative AI. O ID do compartimento pode conter caracteres alfanuméricos, hifens e pontos.

O padrão é o ID do compartimento do PDB.

oci_endpoint_id

Esses atributos indicam o OCID do ponto final do cluster de hospedagem de IA dedicado da Oracle. O ID do ponto final pode conter caracteres alfanuméricos, hifens e pontos. Para localizar o OCID do ponto final, consulte Obtendo Detalhes de um Ponto Final no Serviço Generative AI.

Quando quiser usar o cluster de IA dedicado da Oracle, forneça o OCID do ponto final do cluster de hospedagem.

Por padrão, o ID do ponto final está vazio e o modelo é sob demanda em uma infraestrutura compartilhada.

oci_runtimetype

Este atributo indica o tipo de runtime do modelo fornecido. Esse atributo é aplicável aos modelos do OCI Generate Text em um cluster de IA dedicado. Especifique esse atributo quando você especificar um OCID de modelo no atributo model ou fornecer um ponto final no atributo oci_endpoint_id.

Todos os valores permitidos podem ser encontrados no OCI Generative AI runtimeType. Consulte a Referência LlmInferenceRequest.

Os valores compatíveis são:
  • COHERE
  • LLAMA
Observação

Este atributo está obsoleto. Use oci_apiformat.

provider

Provedor de IA para o perfil de IA.

Provedores suportados:

  • openai
  • Coerência
  • azul
  • banco de dados
  • oci
  • google
  • antrópico
  • rosto abraçado
  • aws

É um atributo obrigatório.

provider_endpoint

Especifica o ponto final da API para provedores compatíveis com o OpenAI. Este atributo é específico apenas para provedores compatíveis com OpenAI. Especifique provider_endpoint como um atributo no procedimento DBMS_CLOUD_AI.CREATE_PROFILE em vez do atributo provider. Consulte Usar Provedores Compatíveis com OpenAI para saber como obter o parâmetro.

Exemplo: api.fireworks.ai/inference

region

Este atributo indica o local do cluster de IA Generativa que você deseja usar. A região pode conter caracteres alfanuméricos e hífen.
Observação

O cluster do Oracle Generative AI está disponível em Chicago, Frankfurt, Londres e outras regiões selecionadas. Consulte Regiões com IA Generativa para saber mais.

A região padrão da AWS é us-east-1.

A região padrão é us-chicago-1.

stop_tokens

O texto gerado será encerrado no início da primeira sequência de interrupção. A sequência será incorporada ao texto. O valor do atributo deve ser um array válido de valores de string no formato JSON. stop_tokens usa um array JSON como entrada. Para saber mais sobre tokens de parada ou sequências de parada, consulte a documentação OpenAI ou Cohere.

temperature

A amostragem a partir de modelos Gerar Texto incorpora aleatoriedade, de modo que o mesmo prompt pode gerar saídas diferentes cada vez que você clicar em "gerar". Temperatura é um número flutuante não negativo usado para ajustar o grau de aleatoriedade. Temperaturas mais baixas significam gerações menos aleatórias. Consulte Temperatura para obter mais detalhes. Este parâmetro é aplicável a todos os prestadores de serviço suportados.

vector_index_name

Nome do índice do vetor. O nome do índice do vetor deve seguir as regras de nomeação do identificador do Oracle SQL. O tamanho máximo do nome do armazenamento de vetores é de 125 caracteres.

source_language

O idioma do texto de entrada enviado ao provedor para tradução. Aceita o nome completo do idioma ou o código do idioma (language_code) suportado pelos provedores. Os Valores não diferenciam maiúsculas e minúsculas.

target_language

O idioma no qual o profissional de saúde traduz o texto. Aceita o nome completo do idioma ou o código do idioma (language_code) suportado pelos provedores. Os valores não fazem distinção entre maiúsculas/minúsculas.

O exemplo a seguir está usando a Cohere como provedor e exibe 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,
	 "source_language": "en",
	 "target_language": "french"
       }');
END;
/

O exemplo a seguir mostra atributos de perfil personalizados usando o 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_apiformat": "COHERE"            
       }');                                                                  
END;                                                                         
/ 

CLEAR_PROFILE Procedimento

Este procedimento limpa todos os perfis ativos do AI definidos na sessão atual. Depois de limpar um perfil ativo, você não poderá mais usar SELECT AI na linha de comando SQL ou usar o perfil definido do AI ao chamar DBMS_CLOUD_AI.GENERATE. Este procedimento não elimina o perfil.

Sintaxe

DBMS_CLOUD_AI.CLEAR_PROFILE;

Exemplo


   BEGIN
        DBMS_CLOUD_AI.CLEAR_PROFILE;
   END;
   /

DROP_PROFILE Procedimento

O procedimento elimina um perfil AI existente. Se o perfil não existir, o procedimento gerará um erro.

Sintaxe

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

Parâmetros

Parâmetro Descrição

profile_name

Nome do perfil de IA

force

Se TRUE, o procedimento ignorará erros se o perfil do AI não existir.

O valor default para esse parâmetro é FALSE.

Exemplo

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

Observações de Uso

Use force para eliminar um perfil e ignorar erros se o perfil do AI não existir.

ENABLE_PROFILE Procedimento

Este procedimento ativa o perfil do AI que o usuário especifica. O procedimento altera o status do perfil do AI para ENABLED.

Sintaxe

DBMS_CLOUD_AI.ENABLE_PROFILE(
     profile_name         IN   VARCHAR2
 );

Parâmetros

Parâmetro Descrição

profile_name

Nome do perfil do AI a ser ativado

Este parâmetro é obrigatório.

Exemplo para Ativar Perfil de IA

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

DISABLE_PROFILE Procedimento

Este procedimento desativa o perfil do AI no banco de dados atual. O status do perfil do AI é alterado para DISABLED por este procedimento.

Sintaxe

DBMS_CLOUD_AI.DISABLE_PROFILE(
      profile_name  IN  VARCHAR2
);

Parâmetros

Parâmetro Descrição

profile_name

Nome do perfil do AI.

Este parâmetro é obrigatório.

Exemplo

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

Procedimento FEEDBACK

Este procedimento permite fornecer feedback para Selecionar IA para melhorar a precisão da geração de consultas. Você tem a opção de fornecer feedback positivo ou negativo, bem como comentários textuais ou consultas SQL revisadas.

Sintaxe

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 Descrição

profile_name

Especifica o perfil AI a ser usado. Se você não fornecer um profile_name, o Select AI usará o conjunto de perfis padrão na sessão.

Este é um parâmetro obrigatório.

sql_id

Identifica a consulta SQL. Um sql_id pode ter apenas uma entrada de feedback.

Este é um parâmetro obrigatório.

sql_text

Contém o texto completo da consulta SQL.

Este é um parâmetro obrigatório.

feedback_type

Especifica o tipo de feedback. Os valores disponíveis são:
  • positive: Aceite a SQL gerada.
  • negative: Forneça as melhorias necessárias na consulta SQL, identificando erros na consulta.
Observação

O procedimento DBMS_CLOUD_AI.FEEDBACK permite que você especifique sql_id ou sql_text; portanto, o feedback_type será necessário, enquanto se você estiver usando a ação feedback, o LLM determinará ou interpretará dinamicamente o tipo de feedback.

Esse é um parâmetro obrigatório quando operation é add.

response

Representa o resultado correto da consulta SQL que o usuário espera.

Esse é um parâmetro obrigatório quando operation é add e feedback_type é negative.

feedback_content

Captura o feedback de linguagem natural do usuário. Você tem a opção de usar esse parâmetro junto com response.

operation

Especifica a operação a ser executada. Os valores aceitos são:
  • add (padrão): Adicione seu feedback especificando o feedback_type.
  • delete: Exclua seu feedback fornecendo o sql_id

Exemplo

Exemplo: Fornecer Feedback para o SQL Gerado Usando Operações de Adição ou Exclusão

O exemplo a seguir demonstra como usar o procedimento DBMS_CLOUD_AI.FEEDBACK para aceitar ou melhorar a SQL gerada especificando os parâmetros do procedimento.

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 de vetores para FEEDBACK

Selecione AI para criar um índice vetorial padrão chamado <profile_name>_FEEDBACK_VECINDEX com atributos padrão quando você usar o recurso de feedback pela primeira vez.

Você pode modificar seus atributos como similarity_threshold e match_limit usando o procedimento DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX. Esse índice ajuda a refinar o SQL gerado no futuro com base no feedback fornecido. Esta tabela é eliminada quando o perfil do AI associado é eliminado. Você também pode soltar <profile_name>_FEEDBACK_VECINDEX. Quando você faz isso, Selecionar AI não usa mais feedback como dicas para as ações runsql, showsql e explainsql. No entanto, se você enviar um novo feedback usando o recurso Selecionar feedback de IA, o Select AI criará automaticamente um novo índice de vetor de feedback

Observação

O valor padrão de match_limit para feedback é 3.

Nome da Tabela de Vetores

A tabela <profile_name>_FEEDBACK_VECINDEX$VECTAB contém representações vetoriais (incorporações) de feedback do usuário junto com outros parâmetros, que o Select AI usa para melhorar a geração de SQL ao longo do tempo.

Parâmetros

Coluna Descrição

attributes

Inclui atributos de objeto JSON de acordo com o Procedimento FEEDBACK.

content

Contém o prompt do usuário.

embedding

Contém representações vetoriais (incorporações) do prompt do usuário.

Exemplo

O exemplo a seguir demonstra como usar a tabela de índice vetorial gerada automaticamente para consultar e fornecer feedback.

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)

Função GET_PROFILE

Esta função retorna o nome do perfil do AI definido na sessão atual.

Sintaxe

DBMS_CLOUD_AI.GET_PROFILE
;

Exemplo

Este exemplo mostra como você pode exibir o nome do perfil na sessão atual.


   SELECT DBMS_CLOUD_AI.GET_PROFILE
   from DUAL;

SET_ATTRIBUTE Procedimento

Este procedimento permite definir atributos de perfil do AI. É sobrecarregado para aceitar valores de atributo de vários tipos.

Sintaxe

DBMS_CLOUD_AI.SET_ATTRIBUTE(
      profile_name         IN   VARCHAR2,
      attribute_name       IN   VARCHAR2,
      attribute_value      IN   {BOOLEAN|VARCHAR2}
);

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

Parâmetros

Somente o proprietário pode definir ou modificar os atributos do perfil do AI. Para obter uma lista de atributos suportados, consulte Atributos de Perfil.

Parâmetro Descrição

profile_name

Nome do perfil do AI para o qual você deseja definir os atributos.

Este parâmetro é obrigatório.

attribute_name

Nome do atributo de perfil do AI

Este parâmetro é obrigatório.

attribute_value

Valor do atributo de perfil. O valor pode ser do tipo BOOLEAN, CLOB, NUMBER ou VARCHAR2.

O valor default é NULL.

Exemplos

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

O exemplo a seguir aceita o tipo NUMBER como attribute_value.

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OCI_PROFILE',
   attribute_name  => 'temperature',
   attribute_value => 0.5
 );
END;
/

O exemplo a seguir aceita o tipo BOOLEAN como attribute_value.

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OCI_PROFILE',
   attribute_name  => 'comments',
   attribute_value => 'true'
 );
END;
/

O exemplo a seguir aceita o tipo VARCHAR2 como attribute_value.

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OCI_PROFILE',
   attribute_name  => 'model',
   attribute_value => 'meta.llama-3.3-70b-instruct'
 );
END;
/

Função GERAR

Esta função fornece tradução do AI ao usar uma conexão de banco de dados sem monitoramento de estado. Com seu perfil de IA existente, você pode usar essa função para executar as ações suportadas, como showsql, runsql, explainsql, narrate, summarize e chat. A ação padrão é showsql.

A substituição de alguns ou de todos os atributos do perfil também é possível usando essa função.

Sintaxe

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

Parâmetros

Parâmetro Descrição

prompt

Prompt de linguagem natural para traduzir usando IA.

O prompt pode incluir SELECT AI <action> como prefixo. A ação também pode ser fornecida separadamente como um parâmetro "action". O action fornecido no prompt substitui o parâmetro action. A ação padrão é showsql.

Este parâmetro é obrigatório.

profile_name

Nome do perfil de IA. Esse parâmetro será opcional se um perfil do AI já estiver definido na sessão usando DBMS_CLOUD_AI.SET_PROFILE.

O valor default é NULL.

As condições a seguir se aplicam:
  • Se um perfil for definido na sessão atual, o usuário poderá omitir o argumento profile_name na função DBMS_CLOUD_AI.GENERATE.
  • Se o argumento profile_name for fornecido na função DBMS_CLOUD_AI.GENERATE, ele substituirá qualquer valor definido na sessão usando o procedimento DBMS_CLOUD_AI.SET_PROFILE.
  • Se não houver um perfil definido na sessão usando o procedimento DBMS_CLOUD_AI.SET_PROFILE, o argumento profile_name deverá ser fornecido na função DBMS_CLOUD_AI.GENERATE.
Observação

Para o Database Actions, você pode especificar o argumento profile_name em DBMS_CLOUD_AI.GENERATE ou executar duas etapas como um script PL/SQL: DBMS_CLOUD_AI.SET_PROFILE e DBMS_CLOUD_AI.GENERATE.
EXEC DBMS_CLOUD_AI.set_profile('OPENAI');

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

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       => 'explainsql')
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 Executando Instruções SQL no Code Editor para obter mais informações.
action
Ação para traduzir prompt natural usando IA. As ações com suporte incluem:
  • runsql(padrão)

  • showsql

  • explainsql

  • narrate

  • summarize

  • translate

  • chat

As descrições das ações estão incluídas em Usar Palavra-chave AI para Inserir Prompts.

attributes Substitua atributos específicos de perfil do AI fornecendo atributos no formato JSON. Consulte Atributos de Perfil para obter mais detalhes.
params

Especificar parâmetros de conversa. Consulte CREATE_CONVERSATION Atributos. Você pode especificar apenas os seguintes parâmetros:

  • conversation_id: O valor padrão é o id da conversa definido na sessão atual. Este não é um parâmetro obrigatório.
  • conversation_length: Você pode alterar o valor existente para um valor adequado para seu caso de uso. Este não é um parâmetro obrigatório.

Exemplos

Exemplo: Usando a Função GENERATE para Selecionar Ações AI

Os exemplos a seguir ilustram as ações runsql, showsql, explainsql, narrate, summarize, translate e chat que podem ser usadas com a função DBMS_CLOUD_AI.GENERATE. Consulte também Usar Palavra-chave AI para Inserir Prompts para obter mais detalhes.

Um exemplo com a ação runsql é o seguinte:

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

Um exemplo com a ação showsql é o seguinte:

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

Um exemplo com a ação explainsql é o seguinte:

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

Um exemplo com a ação narrate é o seguinte:

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

Um exemplo com a ação chat é o seguinte:

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;
Um exemplo com a ação summarize é o seguinte:
SELECT DBMS_CLOUD_AI.GENERATE(
                prompt => TO_CLOB(
                            DBMS_CLOUD.GET_OBJECT(
                             credential_name => 'STORE_CRED',
                             object_uri => 'https://objectstorage.ca-toronto-1.oraclecloud.com' ||
                                '/n/namespace-string/b/bucketname/o/data_folder/' ||
                                'summary/test_4000_words.txt')),
                profile_name => 'GENAI_LLAMA',
                action => 'SUMMARIZE')
from DUAL;

Resultado:

The music streaming industry, led by Spotify, has revolutionized the way
people consume music, with streaming accounting for 80% of the American
recording industry's revenue. However, this shift has also complicated the
lives of artists trying to survive in an on-demand, hyper-abundant present.
Spotify's business model, which pays royalties based on an artist's
popularity, has led to concerns about the fairness of the system, with some
artists earning little to no royalties. The company's dominance has also
changed the way people listen to music, with a focus on convenience and
personalized playlists. Liz Pelly's book, "Mood Machine: The Rise of Spotify
and the Costs of the Perfect Playlist," explores the impact of Spotify's rise
on the music industry and listeners, arguing that the platform's emphasis on
affect and mood has led to a homogenization of music and a loss of autonomy
for listeners. As the music industry continues to evolve, questions remain
about the future of music creation and consumption, and whether artists will
be able to thrive in a system that prioritizes convenience and profit over
artistic expression.

Estes exemplos mostram a ação translate:

Os exemplos a seguir mostram como usar a ação translate no prompt.
Observação

Seu perfil de IA deve especificar o idioma de destino.
SELECT DBMS_CLOUD_AI.GENERATE('select ai translate text to be translated')
          FROM dual;
   

O exemplo a seguir mostra a ação translate fornecida na função DBMS_CLOUD_AI.GENERATE junto com target_language e source_language. Este exemplo usa tradução de IA generativa. O texto de entrada this is a document em inglês (source_language: "en") é traduzido para o francês (target_language: "fr").

DECLARE
         l_attributes  clob := '{"target_language": "fr", "source_language": "en"}';
         output clob;
      BEGIN
         output := DBMS_CLOUD_AI.GENERATE(
                        prompt            => 'this is a document',
                        profile_name      => 'oci_translate',
                        action            => 'translate',
                        attributes        => l_attributes
                     );
Usando a Função GENERATE em um Procedimento

Você pode usar DBMS_CLOUD_AI.GENERATE em um procedimento e executar a função. O exemplo a seguir usa uma ai_prompt, profile_name e action como parâmetros de entrada e chama DBMS_CLOUD_AI.GENERATE

create or replace FUNCTION call_select_ai (ai_prompt  IN VARCHAR2, 
                                           ai_profile IN VARCHAR2,
                                           ai_action  IN VARCHAR2) -- valid for 'chat', 'narrate', 'showsql'
                                           RETURN CLOB AS sai_resp clob;
BEGIN
  sai_resp := DBMS_CLOUD_AI.GENERATE(prompt       => ai_prompt,
                                     profile_name => ai_profile,
                                     action       => ai_action);  
  return(sai_resp);
END call_select_ai;
Exemplo: Usando a Função GENERATE para Conversas

O exemplo a seguir mostra como usar a função DBMS_CLOUD_AI.GENERATE em uma configuração de conversa. Este exemplo pressupõe que uma conversa já tenha sido criada.

SELECT DBMS_CLOUD_AI.GENERATE(
        prompt       =>  'What is the difference in weather between Seattle and San Francisco?',
        profile_name =>  'GENAI',
        action       =>  'CHAT',
        params       =>  '{"conversation_id":"30C9DB6E-EA4D-AFBA-E063-9C6D46644B92"}') AS RESPONSE;

Resultado:

RESPONSE
--------------------------------------------------------------------------------
Seattle and San Francisco, both located in the Pacific Northwest and Northern 
California respectively, experience a mild oceanic climate. However, there are 
some notable differences in their weather patterns:
 
1. **Temperature**: San Francisco tends to be slightly warmer than Seattle, 
especially during the summer months. San Francisco's average temperature ranges 
from 45?F (7?C) in winter to 67?F (19?C) in summer, while Seattle's average 
temperature ranges from 38?F (3?C) in winter to 64?F (18?C) in summer.
 
2. **Rainfall**: Seattle is known for its rainy reputation, with an average 
annual rainfall of around 37 inches (94 cm). San Francisco receives less rainfall, 
with an average of around 20 inches (51 cm) per year. However, San Francisco's 
rainfall is more concentrated during the winter months, while Seattle's rainfall 
is more evenly distributed throughout the year.
 
......

SET_PROFILE Procedimento

Este procedimento define o perfil de IA para a sessão atual.

Depois de definir um perfil do AI para a sessão do banco de dados, qualquer instrução SQL com o prefixo SELECT AI será considerada um prompt de linguagem natural. Dependendo da ação especificada com o prefixo AI, uma resposta será gerada usando o AI. Para usar o prefixo AI, consulte Exemplos de Uso do Select AI e Usar Palavra-chave AI para Inserir Prompts. Opcionalmente, é possível substituir os atributos de perfil ou modificar os atributos especificando-os no formato JSON. Consulte SET_ATTRIBUTE Procedures para definir os atributos.

O perfil do AI só poderá ser definido para a sessão atual se o proprietário do perfil do AI for o usuário da sessão.

Para definir um perfil do AI para todas as sessões de um usuário de banco de dados específico ou todas as sessões de usuário no banco de dados, considere o uso de um trigger de evento de banco de dados para o evento AFTER LOGON no usuário específico ou em todo o banco de dados. Consulte Instrução CRIAR TRIGGER para obter mais detalhes.

Sintaxe

DBMS_CLOUD_AI.SET_PROFILE(
    profile_name      IN  VARCHAR2,
);

Parâmetros

Parâmetro Descrição

profile_name

Um nome para o perfil do AI na sessão atual.

Este parâmetro é obrigatório.

Exemplo


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

CREATE_CONVERSATION Procedimento

Este procedimento permite criar uma conversa e definir automaticamente o conversation_id dentro do procedimento.

Observação

Se você estiver usando o procedimento DBMS_CLOUD_AI.CREATE_COVERSATION, poderá ignorar a definição do conversation_id, pois o procedimento o define automaticamente.

Sintaxe

DBMS_CLOUD_AI.CREATE_COVERSATION(
  attributes            IN CLOB DEFAULT NULL
);

Parâmetros

Parâmetro Descrição

attributes

Atributos para conversa no formato JSON. Consulte CREATE_CONVERSATION Atributos para obter mais detalhes.

O valor default é NULL.

Exemplo

Exemplo: Criar Conversa

O exemplo a seguir mostra como criar uma conversa sem qualquer personalização.

EXEC DBMS_CLOUD_AI.CREATE_COVERSATION;

Resultado:

PL/SQL procedure successfully completed.
Exemplo: Criar Conversa com Atributos Personalizados

O exemplo a seguir mostra como criar uma conversa com parâmetros personalizados, como title, description, retention_days e conversation_length.

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

Função CREATE_CONVERSATION

Essa função cria uma conversa e retorna seu conversation_id que pode ser usado em outros procedimentos ou funções, como DBMS_CLOUD_AI.SET_CONVERSATION_ID e DBMS_CLOUD_AI.GENERATE.

A Oracle recomenda definir conversation_id para ativar a conversa. Como alternativa, você pode definir conversation_id na função DBMS_CLOUD_AI.GENERATE.

Observação

Se você estiver usando o procedimento DBMS_CLOUD_AI.CREATE_COVERSATION, poderá ignorar a definição do conversation_id, pois o procedimento o define automaticamente.

Sintaxe

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

Parâmetros

Parâmetro Descrição

attributes

Atributos para conversa no formato JSON. Consulte CREATE_CONVERSATION Atributos para obter mais detalhes.

O valor default é NULL.

Exemplo

Exemplo: Criar Conversa

O exemplo a seguir mostra como usar a função DBMS_CLOUD_AI.CREATE_COVERSATION para criar uma conversa sem qualquer personalização.

SELECT DBMS_CLOUD_AI.CREATE_COVERSATION FROM DUAL;

Resultado:

CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
Exemplo: Criar Conversa com Atributos Personalizados

O exemplo a seguir mostra como usar a função DBMS_CLOUD_AI.CREATE_COVERSATION para especificar atributos como title, retention_days e conversation_length.

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

CREATE_CONVERSATION Atributos

Esses atributos gerenciam o contexto da conversa, incluindo quanto tempo ela deve ser mantida, quantos prompts com respostas para armazenar ou exibir e metadados como título e descrição para referência. Alguns atributos são opcionais e têm um valor padrão.

Atributos

Nome do Atributo Valor Padrão Descrição

title

Nova Conversa

O nome atribuído pelo usuário para a conversa. Se não for fornecido, o Select AI fará com que o LLM gere um quando a conversa for usada pela primeira vez com um prompt.

description

NULL

Fornece uma descrição definida pelo usuário que resume a finalidade ou o contexto da conversa. Se não for fornecido, o LLM gerará um quando a conversa for usada pela primeira vez com um prompt e o atualizará novamente no 5º uso para incluir informações mais precisas e relevantes.

retention_days

7

Especifique a quantidade de dias para manter o histórico de conversas. Isso é armazenado no banco de dados a partir de sua data de criação. Se o valor for omitido, o sistema o define como o valor padrão 7. Se você defini-la como 0, o sistema manterá a conversa até que você a exclua manualmente usando o procedimento DBMS_CLOUD_AI.DROP_CONVERSATION ou DBMS_CLOUD.DELETE_ALL_OPERATIONS('CONVERSATION').

conversation_length

NULL

Especifique o número de prompts e respostas recentes a serem incluídos com o prompt atual. O valor máximo permitido é 999. Você pode substituir esse valor especificando o parâmetro conversation_length na função DBMS_CLOUD_AI.GENERATE ou definindo-o no perfil do AI usando SELECT AI <ACTION> <PROMPT>. Aplique as seguintes regras de precedência para conversation_length:
  1. Valor do argumento de atributos em DBMS_CLOUD_AI.GENERATE
  2. O conjunto de valores na conversa tem a próxima prioridade
  3. O valor definido no perfil de IA tem a última prioridade

Se nenhum deles especificar o conversation_length, o valor padrão será 10.

O exemplo a seguir mostra como você pode personalizar atributos de conversa no procedimento 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 Procedimento

Este procedimento atualiza uma conversa existente com um valor especificado dos atributos da conversa.

Sintaxe

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

Parâmetros

Parâmetro Descrição

conversation_id

Número exclusivo atribuído a uma conversa.

Este é um parâmetro obrigatório.

attributes

Atributos para conversa no formato JSON. Consulte CREATE_CONVERSATION Atributos para obter mais detalhes.

Exemplo

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 Procedimento

Este procedimento define a conversa atual para o ID especificado. Os prompts subsequentes incluem prompts de conversa existentes com base nos atributos configurados da conversa.

Sintaxe

DBMS_CLOUD_AI.SET_CONVERSATION_ID(
    conversation_id   IN VARCHAR2
);

Parâmetros

Parâmetro Descrição

conversation_id

Número exclusivo atribuído a uma conversa na sessão atual.

Este parâmetro é obrigatório.

Exemplo

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

Resultado:

PL/SQL procedure successfully completed.

Função GET_CONVERSATION_ID

Esta função retorna o ID da conversa definido no momento na sessão usando o procedimento DBMS_CLOUD_AI.SET_CONVERSATION_ID ou DBMS_CLOUS_AI.CREATE_CONVERSATION. Se você não definiu uma conversa, a função retorna NULL. Se você soltar a conversa, o sistema a limpará na sessão como well.See ProcedimentoCLEAR_CONVERSATION_ID.

Sintaxe

DBMS_CLOUD_AI.GET_CONVERSATION_ID
RETURN VARCHAR2;

Exemplo

Este exemplo exibe o ID da conversa definido na sessão atual.

SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID;

Resultado:

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

CLEAR_CONVERSATION_ID Procedimento

Este procedimento limpa um ID de conversa definido na sessão para desativar o recurso de conversa para SELECT AI <ACTION> <PROMPT>. Se você não definiu uma conversa, o sistema não gera nenhum erro.

Sintaxe

DBMS_CLOUD_AI.CLEAR_CONVERSATION_ID;

Exemplo

Este exemplo demonstra a exibição do ID da conversa atual na sessão, a limpeza do ID e a verificação da alteração.

-- 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 Procedimento

O procedimento remove um determinado prompt da conversa.

Sintaxe

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

Parâmetros

Parâmetro Descrição

conversation_prompt_id

Número exclusivo atribuído a um prompt em uma conversa. Você pode localizar o ID do prompt consultando a view DBA/USER_CLOUD_AI_CONVERSATION_PROMPTS. Consulte DBMS_CLOUD_AI Views.

Este é um parâmetro obrigatório.

force

Se TRUE, o procedimento ignorará erros se o conversation_prompt_id não existir.

O valor default para esse parâmetro é FALSE.

Exemplo

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

Resultado:

PL/SQL procedure successfully completed.

DROP_CONVERSATION Procedimento

O procedimento remove a conversa e todos os prompts associados e as respostas associadas. Uma vez eliminado, o conversation_id se torna inválido. Se uma conversa for eliminada enquanto estiver definida na sessão, ela será limpa automaticamente.

Sintaxe

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

Parâmetros

Parâmetro Descrição

conversation_id

Número exclusivo atribuído a uma conversa.

Este é um parâmetro obrigatório.

force

Se TRUE, o procedimento ignorará erros se o conversation_id não existir.

O valor padrão para esse parâmetro é FALSE.

Exemplo

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

Resultado:

PL/SQL procedure successfully completed.

Função SUMMARIZE

Esta função resume seu conteúdo com base nas opções de personalização fornecidas como parâmetros.

Sintaxe

DBMS_CLOUD_AI.SUMMARIZE(
  content         IN  CLOB     DEFAULT NULL,
  credential_name IN  VARCHAR2 DEFAULT NULL,
  location_uri    IN  VARCHAR2 DEFAULT NULL,
  profile_name    IN  VARCHAR2 DEFAULT NULL,
  user_prompt     IN  CLOB     DEFAULT NULL,
  params          IN  CLOB     DEFAULT NULL
) RETURN CLOB;

Parâmetros

Parâmetro Descrição

content

Especifica o texto que você deseja resumir. content ou location_uri deve ser especificado.

Este não é um parâmetro obrigatório.

credential_name

Identifica o objeto de credencial usado para autenticação com o armazenamento de objetos. Você deve criar esta credencial usando DBMS_CLOUD.CREATE_CREDENTIAL.
Observação

Use esse parâmetro somente quando fornecer location_uri.

location_uri

Fornece o URI no qual o texto é armazenado ou o caminho para um arquivo local. content ou location_uri deve ser especificado.

Por exemplo:

Armazenamento de objetos: https://objectstorage.ca-toronto-1.oraclecloud.com/n/namespace-string/b/bucketname/o/data_folder/summary/test_file.txt

Arquivo local: summary_gobject:test_file.txt

profile_name

Especifica o perfil AI a ser usado. Se você não fornecer um profile_name, o Select AI usará o conjunto de perfis padrão na sessão. Se nenhum perfil padrão for definido, ele retornará o erro: ORA-20046: O perfil do AI não está ativado na sessão.

O valor default é NULL.

user_prompt

Fornece um prompt de linguagem natural para orientar ou personalizar o resumo. Você pode incluir instruções adicionais além dos parâmetros de resumo.

Por exemplo, O resumo deve começar com ''O resumo do artigo é: '''

Este parâmetro não é obrigatório.

params

Define parâmetros de sumariação. Consulte Parâmetros de SUMMARIZE.

Exemplo

Consulte Exemplo: Selecionar Resumo de IA para explorar.

Parâmetros SUMMARIZE

Esses atributos gerenciam a geração de resumo com parâmetros personalizados. Alguns atributos são opcionais e têm um valor padrão.

Atributos

Nome do Atributo Valor Padrão Descrição

min_words

0

Especifica o número mínimo aproximado de palavras que o resumo gerado deve conter.

Observação

Esse parâmetro atua como uma diretriz em vez de um limite estrito: o tamanho real do resumo pode variar dependendo do conteúdo fornecido e da interpretação do modelo.

max_words

200

Especifica o número máximo aproximado de palavras que o resumo gerado deve conter.
Observação

Esse parâmetro atua como uma diretriz, e não como um limite estrito. O tamanho real do resumo pode variar dependendo do conteúdo fornecido e da interpretação do modelo.

summary_style

Parágrafo
Especifica o estilo de formato do resumo. Estas são as opções de formato de resumo disponíveis:
  • paragraph: o resumo é apresentado em um ou mais parágrafos.
  • list: o resumo é uma lista de pontos-chave do texto.

chunk_processing_method

map_reduce
Quando o texto excede o limite de token que o LLM pode processar, ele deve ser dividido em partes gerenciáveis. Esse parâmetro permite que você escolha o método para processar esses blocos. As seguintes opções são fornecidas:

extractiveness_level

low Determina o quão próximo o resumo segue a redação original da entrada. Ele controla o grau em que o modelo extrai versus refrases. As opções estão a seguir:
  • High: O resumo permanece próximo da frase original, reutilizando frases e expressões sempre que possível.
  • Medium: Uma mistura equilibrada de extração e parafraseamento.
  • Low: Permite mais liberdade para reformular, reestruturar ou simplificar a entrada, concentrando-se no significado em vez de fraseação exata.
Observação

Essa configuração serve como orientação para o comportamento de sumarização do modelo, não impõe uma regra estrita. O estilo e a redação reais do resumo podem variar com base no conteúdo de entrada e nas decisões do modelo.

Função TRANSLATE

Essa função permite que você traduza seu texto no target_language especificado.

Você pode fornecer os parâmetros source_language e target_language na função ou eles podem ser tirados do perfil de IA do usuário. Se o seu perfil de IA não incluir um atributo source_language, o provedor de IA generativa detectará automaticamente a linguagem de entrada. Se o atributo target_language estiver ausente, Selecionar AI retornará um erro.

Sintaxe

DBMS_CLOUD_AI.TRANSLATE(
   profile_name      IN VARCHAR2,
   text              IN CLOB,
   source_language   IN VARCHAR2 DEFAULT NULL,
   target_language   IN VARCHAR2 DEFAULT NULL
) RETURN CLOB;

Parâmetros

Parâmetro Descrição

profile_name

Especifica o perfil AI a ser usado.

Este não é um parâmetro obrigatório.

text

Especifica o texto que você deseja traduzir.

Este é um parâmetro obrigatório.

source_language

Idioma do texto de entrada

target_language

Idioma para o qual o texto é traduzido.

Exemplo

Consulte Exemplo: Selecionar Tradução de IA para explorar.

Função GENERATE_SYNTHETIC_DATA

Use este procedimento para gerar dados sintéticos para uma única tabela, várias tabelas ou um esquema completo.

Veja a seguir a sintaxe para gerar dados sintéticos para uma única tabela.

Sintaxe

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
);

Veja a seguir a sintaxe para gerar dados sintéticos para várias tabelas.

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

Se você não quiser que os dados da tabela ou os documentos de pesquisa vetorial sejam enviados para um LLM, um usuário com privilégios de administrador poderá desativar esse acesso para todos os usuários do banco de dados fornecido. Isso, na verdade, desativa a ação narrate.

Parâmetros

Parâmetro Obrigatório Descrição

profile_name

Sim

O perfil de IA que contém as informações necessárias do serviço LLM. Isso pode ser criado pelo CREATE_PROFILE Procedure.

object_name

Sim Especifique um nome de tabela para preencher dados sintéticos.
  • Os privilégios SELECT e INSERT nos objetos de tabela são necessários para o usuário que os está usando.
  • A tabela está vazia ou contém registros.
owner_name Não

Especifique o usuário do banco de dados que possui o objeto referenciado. Se nenhum proprietário específico for fornecido, o procedimento utilizará como padrão o esquema do usuário que o está executando.

record_count Não

O número de registros a serem gerados sinteticamente.

user_prompt

Não Informações adicionais que um usuário pode mencionar para gerar dados sintéticos. Por exemplo, para gerar um registro para uma tabela chamada MOVIE com uma coluna release_date, a user_prompt pode ser:

a data de lançamento dos filmes deve ser em 2019

params

Não

Atributos opcionais fornecidos no formato de string do objeto JSON para modificar o comportamento de uma API. Consulte Parâmetros Opcionais.

object_list

Sim Use este parâmetro para gerar dados sintéticos em várias tabelas. Esse parâmetro recebe informações do objeto da tabela junto com seus argumentos e contém os mesmos argumentos fornecidos na tabela única. Consulte object_list Parâmetros.

Parâmetros Opcionais

Parâmetro Tipo de Dados do Valor Valor Descrição

sample_rows

Número

0 <= sample_rows <= 100

Especifique o número de linhas da tabela a serem usadas como amostra para orientar o LLM na geração de dados.

O valor 0 significa que nenhuma linha de amostra será usada. O valor padrão é 0.

table_statistics

Booliano

  • True
  • False

Ative ou desative o uso de informações de estatísticas de tabela.

O valor padrão é False.

priority

String

Valores válidos:

  • HIGH
  • MEDIUM
  • LOW

Atribua um valor de prioridade que defina o número de solicitações paralelas enviadas ao LLM para gerar dados sintéticos. Tarefas com maior prioridade consumirão mais recursos de banco de dados e serão concluídas com mais rapidez.

O valor padrão é HIGH

  • HIGH: Especifica o número de solicitações paralelas do LLM com base na contagem de ECPUs do banco de dados (ou contagem de OCPUs se o banco de dados usar OCPUs).

  • MEDIUM: Define o número de processos simultâneos de acordo com o limite de simultaneidade para o serviço Médio. O valor padrão é 4.

  • LOW: Executa o job do pipeline em uma ordem serial, sem processamento paralelo.

O número máximo de processos paralelos simultâneos usados para geração de dados sintéticos é limitado a 64.

comments

Booliano
  • True
  • False

Ative ou desative o envio de comentários ao LLM para orientar a geração de dados.

O valor padrão é False.

object_list Parâmetros

Parâmetro Tipo de Dados do Valor Obrigatório Descrição

owner

String

Sim

Especifica o usuário do banco de dados que possui o objeto que está sendo referenciado. Se nenhum proprietário específico for fornecido, o procedimento será padronizado para usar o esquema do usuário que o está executando.

name

String

Não

Especifique um nome de tabela para preencher dados sintéticos. Os privilégios SELECT e INSERT nos objetos de tabela são necessários para que o usuário que usa a tabela it.The esteja vazio ou tenha registros nela.

record_count

Número

Não

O número de registros a serem gerados sinteticamente. Forneça um número maior que 0.

Forneça record_count ou record_count_percentage.

record_count_percentage

Número

Não

A porcentagem do número de registros a serem gerados sinteticamente. Forneça um número maior que 0.

Para um banco de dados de Clone de Metadados, no qual os metadados da tabela, incluindo estatísticas, são preservados, o parâmetro record_count_percentage é suportado.

Forneça record_count ou record_count_percentage.

Ao usar o parâmetro record_count_percentage, a contagem final de registros na tabela é calculada da seguinte forma:
Original_Num_Rows *
      record_count_percentage

user_prompt

String Não Igual a user_prompt em Parâmetros. O user_prompt está associado a um objeto de tabela específico.

Exemplos

Os exemplos a seguir mostram a função DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA para gerar dados sintéticos para uma única tabela e várias tabelas. Para obter um exemplo completo e ver mais exemplos, consulte Exemplo: Gerar Dados Sintéticos.

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 Procedimento

Este procedimento permite o envio de dados para o LLM para os recursos Select AI aplicáveis, que é o comportamento padrão. Somente um administrador pode executar este procedimento.

Este procedimento controla o acesso aos dados para os seguintes recursos do Select AI:

  • Ação narrate
  • Geração Aumentada de Recuperações (RAG)
  • Geração de Dados Sintéticos

Sintaxe

DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();

Parâmetros

Este procedimento não requer nenhum parâmetro.

Exemplo para Ativar o Acesso aos Dados

BEGIN
  DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();
END;
/

DISABLE_DATA_ACCESS Procedimento

Este procedimento desativa o envio de dados ao LLM para os recursos Select AI aplicáveis. Somente um administrador pode executar este procedimento.

Este procedimento limita os seguintes recursos do Select AI:

  • Ação narrate
  • Geração Aumentada de Recuperações (RAG)
  • Geração de Dados Sintéticos

Sintaxe

DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();

Parâmetros

Este procedimento não requer nenhum parâmetro.

Exemplo para Desativar o Acesso aos Dados

BEGIN
  DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();
END;
/

CREATE_VECTOR_INDEX Procedimento

Este procedimento cria um índice vetorial no banco de dados vetorial especificado e o preenche com dados de um armazenamento de objetos usando um job do scheduler assíncrono.

Sintaxe

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 Descrição

index_name

Nome do índice do vetor. O nome do índice do vetor deve seguir as regras de nomeação do identificador do Oracle SQL. O tamanho máximo do nome do armazenamento de vetores é de 125 caracteres.

Este é um parâmetro obrigatório.

attributes

Atributos personalizados para o índice vetorial no JSON. Para ver uma lista de parâmetros configuráveis, consulte Atributos de Índice de Vetor.

O valor default é NULL.

status
Status do índice do vetor. Os valores possíveis são:
  • Enabled
  • Disabled

O valor padrão é Desabilitado.

description

Descrição do índice do vetor.

O valor default é NULL.

Exemplo

O exemplo a seguir demonstra como criar um índice de vetor e configurar os 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 Procedimento

Este procedimento remove um índice de armazenamento de vetores. Normalmente, ele remove o objeto de índice de armazenamento de vetores e exclui o armazenamento de vetores. Se definido como FALSE, o argumento include_data garantirá que o procedimento só remova o objeto de índice do armazenamento de vetores enquanto mantém o armazenamento de vetores.

Sintaxe

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

Parâmetros

Parâmetro Descrição

index_name

Nome do índice do vetor. O nome do índice do vetor deve seguir as regras de nomeação do identificador do Oracle SQL. O tamanho máximo do nome do armazenamento de vetores é de 125 caracteres.

Este é um parâmetro obrigatório.

include_data

Indica se o armazenamento de vetores e o índice de vetores do cliente devem ser excluídos juntamente com o objeto de índice de vetores.

Os valores possíveis:

  • TRUE
  • FALSE

O valor-padrão é TRUE.

force

Indica se devem ser ignorados os erros que ocorrerem se o índice do vetor não existir.

Os valores possíveis:

  • TRUE
  • FALSE

Se definido como TRUE, esse parâmetro ignorará todos os erros que ocorrerem se o índice do vetor não existir.

O valor padrão é FALSE.

Exemplo

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

DISABLE_VECTOR_INDEX Procedimento

Este procedimento desativa um objeto de índice vetorial no banco de dados atual. Quando desativado, um perfil AI não pode usar o índice de vetores e o sistema não carrega dados no armazenamento de vetores à medida que novos dados são adicionados ao armazenamento de objetos e não executa indexação, pesquisa ou consulta com base no índice.

Sintaxe

DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(                                              
   index_name       IN  VARCHAR2                                            
);

Parâmetros

Parâmetro Descrição

index_name

Nome do índice do vetor. O nome do índice do vetor deve seguir as regras de nomeação do identificador do Oracle SQL. O tamanho máximo do nome do armazenamento de vetores é de 125 caracteres.

Este é um parâmetro obrigatório.

Exemplo

Você pode desativar um índice vetorial fornecendo o nome do índice vetorial.

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

ENABLE_VECTOR_INDEX Procedimento

Este procedimento ativa ou ativa um objeto de índice de vetor desativado anteriormente. Geralmente, quando você cria um índice vetorial, por padrão ele é ativado de forma que o perfil do AI possa usá-lo para executar indexação e pesquisa.

Quando ativado, um índice de vetores permite que um perfil de IA o use para carregar novos dados de um armazenamento de objetos em um armazenamento de vetores em uma taxa de atualização especificada pelo usuário. Você pode especificar o parâmetro refresh_rate por meio da lista de objetos JSON. Para configurar os atributos JSON, consulte Atributos de Índice de Vetor.

Sintaxe

DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(                                              
   index_name       IN  VARCHAR2                                            
);

Parâmetros

Parâmetro Descrição

index_name

Nome do índice do vetor. O nome do índice do vetor deve seguir as regras de nomeação do identificador do Oracle SQL. O tamanho máximo do nome do armazenamento de vetores é de 125 caracteres.

Este é um parâmetro obrigatório.

Exemplo

Você pode ativar ou ativar um índice de vetor especificando o nome do índice de vetor da seguinte forma:

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

UPDATE_VECTOR_INDEX Procedimento

Este procedimento atualiza um índice de armazenamento de vetores existente com um valor especificado do atributo de índice de vetores. É sobrecarregado para aceitar valores de atributo de vários tipos.

Sintaxe

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 Descrição

index_name

Nome do índice do vetor. O nome do índice do vetor deve seguir as regras de nomeação do identificador do Oracle SQL. O tamanho máximo do nome do armazenamento de vetores é de 125 caracteres.

Este é um parâmetro obrigatório.

attribute_name

Nome dos atributos personalizados especificados como parâmetros JSON no procedimento CREATE_VECTOR_INDEX.

Você não pode modificar os seguintes atributos:

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

Este é um parâmetro obrigatório.

attribute_value

Valor especificado pelo usuário para o attribute_name personalizado. O valor pode ser do tipo CLOB, NUMBER ou VARCHAR2.

O valor default é NULL.

Exemplo

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

O exemplo a seguir aceita o tipo NUMBER como attribute_value.

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

O exemplo a seguir aceita o 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;                                                                 
/

Atributos de Índice de Vetor

Os atributos de um índice vetorial ajudam a gerenciar e configurar o comportamento do índice vetorial. Você pode adicionar atributos de índice personalizados conforme necessário. Alguns atributos são opcionais e têm um valor padrão.

Atributos

Nome do Atributo Valor Obrigatório Descrição
chunk_size 1024 (padrão) Não

Tamanho do texto da divisão em blocos dos dados de entrada.

Para dados de texto, isso significa o número de caracteres.

chunk_overlap 128 (padrão) Não

Especifica a quantidade de caracteres sobrepostos entre partes adjacentes do texto. Esse atributo é útil para garantir a continuidade contextual e a precisão no processamento de texto, permitindo sobreposições entre segmentos, o que ajuda a evitar a perda de informações contextuais nos limites do bloco.

location

Não Aplicável Sim

Este parâmetro especifica URI ou diretórios de arquivo de origem e arquivos de origem.

Padrões curinga são suportados para URIs e diretórios de arquivo de origem.

URIs do arquivo de origem em nuvem:

Você pode especificar um URI de arquivo de origem para bucket ou subpasta. É possível usar curingas para especificar subpastas ou nomes de arquivo. O caractere "*" pode ser usado como curinga para vários caracteres, e o caractere "?" pode ser usado como curinga para um único caractere.

Exemplo usando curingas:

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

O formato dos URIs depende do serviço do Cloud Object Storage que você estiver usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

Diretório:

Você pode especificar um diretório e um nome de arquivo. O formato para especificar um diretório é: MY_DIR:filename.ext. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O arquivo faz distinção entre maiúsculas e minúsculas.

Você só pode usar curingas para especificar nomes de arquivo em um diretório. O caractere * pode ser usado como caractere curinga para vários caracteres e o caractere ? pode ser usado como caractere curinga para um único caractere. Por exemplo: MY_DIR:* ou MY_DIR:test?.

Use aspas duplas para especificar um nome de diretório com distinção entre maiúsculas e minúsculas. Por exemplo: "my_dir1":*, "my_dir2":Test?

Para incluir um caractere de aspas, use duas aspas. Por exemplo: MY_DIR:''filename.ext. Isso especifica que o nome do arquivo começa com uma aspa (').

Os arquivos neste local podem ser documentos em formatos como PDF, DOC, JSON, XML ou HTML. Consulte Formatos de Documento Suportados.

match_limit

5 (padrão) Não

Especifica o número máximo de resultados a serem retornados em uma consulta de pesquisa vetorial, controlando o tamanho da saída e melhorando a eficiência das operações de recuperação de dados.

object_storage_credential_name

Não Aplicável Sim

Especifica o nome das credenciais para acessar um armazenamento de objetos.

pipeline_name

<vector_index_name>$VECPIPELINE Não

Especifica o nome do pipeline de carregamento de dados do índice do vetor. Este atributo é definido automaticamente para o índice do vetor, não é possível especificar ou modificar. O nome do pipeline pode ser usado para monitorar a carga de dados do índice vetorial usando o serviço Monitor and Troubleshoot Pipelines.

profile_name

Não Aplicável Sim

Nome do perfil do AI que é usado para incorporar dados de origem e prompts do usuário.

refresh_rate

1440 minutos (padrão) Não

Intervalo de atualização de dados no armazenamento de vetores. A unidade é de minutos.

similarity_threshold

0 (padrão) Não

Define o nível mínimo de similaridade necessário para que dois itens sejam considerados uma correspondência, útil para filtrar resultados em algoritmos de correspondência para garantir a relevância.

vector_distance_metric

Uma string correspondente a um dos valores especificados na descrição.

Não

Especifica o tipo de cálculo de distância usado para comparar vetores em um banco de dados, determinando como a similaridade entre itens é quantificada.

Valores válidos para o Oracle 23ai:

  • EUCLIDEAN
  • L2_SQUARED (EUCLIDEAN_SQUARED)
  • COSINE (padrão)
  • DOT
  • MANHATTAN
  • HAMMING

vector_db_provider

oracle

Sim

Especifica o nome do provedor que gerencia e serve como armazenamento de vetores.

vector_dimension

Não Aplicável Não

Especifica o número de elementos em cada vetor dentro do armazenamento de vetores, definindo o tamanho e a estrutura da representação de dados.

vector_table_name

<vector_index_name>$VECTAB (padrão)

Não

Especifica o nome da tabela ou coleção para armazenar incorporações de vetor e dados em blocos.

Exemplo: Especificar Localização do URI do Serviço Object Storage
O exemplo a seguir demonstra a criação de um índice vetorial com o armazenamento de vetores da 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;
/                                                                 
/
Exemplo: Especificar Localização do URI de Armazenamento de Objetos com Padrão de Curinga

Este exemplo especifica um padrão de curinga (*) no URI do Object Storage como o parâmetro location. Ele carrega todos os arquivos CSV do URI do 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;                                                                
/
Exemplo: Especificar Localização do Objeto de Diretório com Padrão de Curinga

Este exemplo especifica objetos de diretório no parâmetro location usando um padrão curinga. Ele carrega todos os arquivos CSV no diretório 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;                                                                
/
Exemplo: Especificar Localização do Objeto de Diretório com Distinção entre Maiúsculas e Minúsculas com Padrão Curinga

Este exemplo especifica objetos de diretório com distinção entre maiúsculas e minúsculas no parâmetro location usando um padrão de curinga. Ele carrega todos os arquivos CSV no diretório 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;                                                                
/
Exemplo: Especificar Objeto de Diretório com Diferenciação de Maiúsculas/Minúsculas com todos os Arquivos como Padrão de Caractere Curinga

Este exemplo especifica um objeto de diretório com distinção entre maiúsculas e minúsculas no parâmetro location usando um padrão curinga (*). Ele carrega todos os arquivos localizados no diretório 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;                                                                
/
Exemplo: Especificar uma Correspondência de Nome de Arquivo no Objeto de Diretório

Este exemplo especifica um objeto de diretório e usa um prefixo de nome de arquivo, como test, no parâmetro location. Ele carrega todos os arquivos no diretório MY_DIR cujos nomes começam com 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;                                                                
/