Diretrizes do Oracle Database para Agentes de IA Generativa da Ferramenta RAG

Você pode trazer suas próprias incorporações de vetores (BYO) de um Oracle Database versão 23ai para OCI Generative AI Agents.

Este tópico descreve informações de suporte, tarefas de pré-requisito e diretrizes para usar o Oracle Database 23ai como uma opção de dados para Agentes de IA Generativa. As informações fornecidas pressupõem que você esteja familiarizado com redes e sub-redes virtuais na nuvem (VCNs), o Oracle Database 23ai e o serviço Database Tools.

Etapa 1. Revisar Informações de Suporte do Banco de Dados

Antes de usar um armazenamento de vetores do Oracle Database versão 23ai como opção de dados para Agentes de IA Generativa, certifique-se de entender o que é suportado e concluir todas as tarefas necessárias.

Tipos de Banco de Dados

Agentes de IA generativa suportam incorporações de vetores BYO de:

  • Oracle Base Database 23ai: O banco de dados pode ser configurado em uma rede privada. Consulte Criar um Sistema de Banco de Dados.

  • Somente o Oracle Autonomous Database 23ai dos seguintes tipos de acesso de rede:

    • Somente acesso de ponto final privado: A autenticação mTLS (TLS mútuo) pode ser ativada para autenticar conexões com seu banco de dados. Marque a caixa de seleção Exigir autenticação mTLS (TLS mútuo) para ativar a autenticação mTLS.

    • Acesso seguro de qualquer lugar: a autenticação mTLS é ativada por padrão e é necessária.

    Consulte Criar uma Instância do Autonomous Database.

Autonomous Databases Ativados para Autenticação mTLS

Se o banco de dados autônomo estiver ativado para autenticação mTLS, faça download da wallet, crie uma senha da wallet e extraia um arquivo da wallet. Consulte Requisitos de Segurança de Wallet na Etapa 3. Configurar Requisitos de Rede e Segurança.

Suporte ao Banco de Dados entre Regiões e entre Tenancies

O suporte a banco de dados entre regiões e tenancies só está disponível para o Oracle Database 23ai com acesso à rede privada. Isso inclui o Oracle Base Database e o Oracle Autonomous Database configurados pelo tipo de acesso de rede Somente acesso de ponto final privado. Não há suporte para bancos de dados autônomos com acesso público.

Ao usar Agentes de IA Generativa em uma região hospedada, você pode estabelecer conexão com um banco de dados de acesso privado que reside em:
  • Outra região na mesma tenancy. Ative a conectividade criando uma conexão de ferramentas de banco de dados na região em que o serviço do agente está disponível.
  • Outra tenancy. Ative a conectividade criando uma conexão de ferramentas de banco de dados na tenancy em que o serviço de agente está disponível.

Para configurar as definições de rede, consulte Requisitos de Rede (banco de dados entre regiões e entre tenancies) na Etapa 3. Configurar Requisitos de Rede e Segurança.

Para criar uma conexão, informe a string de conexão manualmente, conforme descrito na Etapa 5. Crie Conexões do Serviço Database Tools.

Etapa 2. Adicionar Grupo Dinâmico e Políticas

Além de conceder ao usuário acesso a todos os recursos dos Agentes de IA Generativa, conforme descrito em Adicionando Políticas Antes de Usar o Serviço, você precisa criar um grupo dinâmico com acesso a segredos do vault e Ferramentas de Banco de Dados.

  1. Crie um grupo dinâmico e adicione a regra de correspondência a seguir.

    ALL {resource.type='genaiagent'}

    Se precisar de ajuda, consulte Criando um Grupo Dinâmico.

  2. Conceda permissões ao grupo dinâmico.

    • Escreva as seguintes políticas, que podem ser usadas com o domínio de identidades Padrão:

      allow dynamic-group <dynamic-group-name> 
      to read database-tools-family in compartment <compartment-name>
      
      allow dynamic-group <dynamic-group-name> 
      to read secret-bundle in compartment <compartment-name>
      
    • Use as seguintes políticas com um domínio de identidades que não seja Padrão, fornecendo o nome de domínio do Oracle Identity Cloud Service (IDCS) e o nome do grupo dinâmico:

      allow dynamic-group '<idcs-domain-name>/<dynamic-group-name>' 
      to read database-tools-family in compartment <compartment-name>
      
      allow dynamic-group '<idcs-domain-name>/<dynamic-group-name>' 
      to read secret-bundle in compartment <compartment-name>
      
Dica

Se a conexão das ferramentas de banco de dados estiver inacessível após gravar as políticas anteriores, pode haver um problema com o token de sessão do controlador de recursos. Tente usar as seguintes definições de política sem depender de grupos dinâmicos:

allow any-user to read database-tools-family in compartment <compartment-name> where any {request.principal.type='genaiagent'}

allow any-user to read secret-bundle in compartment <compartment-name> where any {request.principal.type='genaiagent'}
Etapa 3. Configurar Requisitos de Rede e Segurança

Execute essas tarefas se você ainda não tiver configurado ou criado os recursos necessários.

Requisitos de Rede
  • Adicione o banco de dados à sub-rede privada de uma VCN.
  • Configure as seguintes propriedades para a regra de entrada da sub-rede:
    • Tipo de Origem: CIDR
    • CIDR de Origem: O Bloco IPv4 CIDR da VCN (como 10.0.0.0/16)
    • Protocolo IP: TCP
    • Intervalo de Portas de Origem: Tudo
    • Intervalo de Porta de Destino: 1521-1522
Requisitos de Rede (banco de dados entre regiões e entre tenancies)

Os requisitos a seguir só são aplicáveis ao Oracle Database 23ai com acesso à rede privada. Isso inclui o Oracle Base Database e o Oracle Autonomous Database configurados pelo tipo de acesso de rede Somente acesso de ponto final privado. Não há suporte para bancos de dados autônomos com acesso público.

Definições da rede

  • Configure duas VCNs com CIDRs não sobrepostos. Para definir as definições de rede, consulte Pareamento Remoto de VCN.
  • Na VCN do banco de dados, certifique-se de adicionar a regra de entrada para o CIDR da VCN da conexão de ferramentas de banco de dados para acessar as portas de banco de dados 1521-1522.

Exemplo de banco de dados entre regiões: Você pode estabelecer conexão com um banco de dados que está em uma região diferente da qual o serviço Agentes de IA Generativa está em execução. Por exemplo:

  • O serviço do agente está em execução na tenancy A na região ORD.

  • O Oracle Base Database ou o Oracle Autonomous Database com acesso à rede privada é implantado na região PHX.

  • Para acessar o banco de dados privado, configure gateways de roteamento dinâmico (DRGs) em ambas as regiões e configure uma conexão de ferramentas de banco de dados no ORD para estabelecer conexão com o banco de dados no PHX.

Exemplo de banco de dados entre tenancies: Você pode estabelecer conexão com um banco de dados localizado em outra tenancy do serviço Agentes de IA Generativa. Por exemplo:

  • O serviço do agente está em execução na tenancy A na região ORD.

  • O Oracle Base Database ou o Oracle Autonomous Database com acesso à rede privada é implantado na tenancy B na região PHX.

  • Para acessar o banco de dados privado, configure gateways de roteamento dinâmico (DRGs) em tenancies e configure uma conexão de ferramentas de banco de dados na tenancy A (região ORD) para estabelecer conexão com o banco de dados na tenancy B (região PHX).

A configuração de rede entre tenancies se aplica independentemente de o serviço de banco de dados e o serviço de agente estarem na mesma região ou em regiões diferentes.

Requisitos de Segurança do Vault

Um vault no OCI Vault é necessário para armazenar segredos do banco de dados, como a senha do banco de dados.

Crie o vault no mesmo compartimento da conexão de ferramentas de banco de dados. Isso se aplica a bancos de dados na mesma região do serviço Generative AI Agents e a bancos de dados entre regiões ou entre tenancies.

  1. Criar um vault.
  2. Crie uma chave de criptografia principal.
  3. No vault, crie um segredo para a senha do banco de dados.
Requisitos de Segurança da Wallet

Se o banco de dados autônomo estiver ativado para autenticação mTLS, execute as seguintes tarefas:

  1. Faça download da wallet e crie uma senha da wallet. Consulte Fazer Download das Credenciais do Cliente (Wallets).
  2. No zip da wallet baixado, extraia o arquivo ewallet.p12 e coloque-o de lado. Você precisa da wallet PKCS#12 para criar a conexão de ferramentas de banco de dados.
Etapa 4. Configurar uma Tabela de Banco de Dados e uma Função

No banco de dados que você criou para usar com Agentes do Generative AI, crie uma tabela de banco de dados com determinados campos obrigatórios e configure uma função de banco de dados que retorne resultados de pesquisa vetorial de consultas.

Tabela de Banco de Dados
Crie uma tabela do Oracle Database 23ai com os seguintes campos:

Campos Obrigatórios

  • DOCID: Um ID atribuído a cada registro ou documento
  • BODY: O conteúdo real que você deseja que o agente pesquise
  • VECTOR: O vetor gerado de um modelo de incorporação com base no conteúdo body

Campos Opcionais

  • CHUNKID: Um id para o documento dividido, caso o documento seja maior que 512 tokens.
  • URL: Uma referência de URL para o conteúdo, se disponível.
  • TITLE: O título do conteúdo body
  • PAGE_NUMBERS: Os números de página do conteúdo, se disponível.
Dica

Você pode criar incorporações de texto na OCI Generative AI.
Função do Banco de Dados

Função é um subprograma que pode obter parâmetros e retornar um valor. Você precisa configurar uma função de banco de dados que possa retornar resultados de pesquisa vetorial de cada consulta. Aqui estão os requisitos:

Parâmetros de Entrada

  • p_query: A string de consulta
  • top_k: Número dos principais resultados

Retornar Tipo

  • SYS_REFCURSOR

Requisitos

  • O modelo de incorporação que você usa para o campo de consulta da função deve ser o mesmo que o modelo de incorporação que transforma o conteúdo BODY da tabela em incorporações de vetor.

  • Os campos de retorno da função devem corresponder aos campos obrigatórios da tabela (DOCID, BODY e SCORE) e opcionais (CHUNKID, TITLE e URL).

    O conteúdo BODY é processado por um modelo de incorporação para produzir um VECTOR para cada conteúdo. A função calcula as distâncias entre o vetor de consulta e cada VECTOR, retornando as linhas top_k. O campo SCORE representa as distâncias entre o vetor de consulta e o VECTOR do BODY.

  • Se os nomes dos campos de retorno da função não corresponderem aos nomes dos campos da tabela, você deverá usar aliases na função.

Exemplo

Veja a seguir um exemplo de função de banco de dados:

create or replace FUNCTION RETRIEVAL_FUNC (p_query IN VARCHAR2,top_k IN NUMBER) RETURN SYS_REFCURSOR IS
    v_results SYS_REFCURSOR;
    query_vec VECTOR;
BEGIN
    query_vec := dbms_vector.utl_to_embedding(
        p_query,
        json('{
            "provider": "OCIGenAI",
            "credential_name": "OCI_VECTOR_CREDENTIAL",
            "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText",
            "model": "cohere.embed-english-v3.0"
        }')
    );

    OPEN v_results FOR
        select l.id as DOCID, lv.chunk_id as CHUNKID, l.file_name as TITLE, 
        'https://objectstorage.us-chicago-1.oraclecloud.com/n/{namespace}/b/{bucket_name}/o/' || l.file_name as URL,
        lv.chunk_txt as BODY, vector_distance(embed_vector, query_vec) AS SCORE
        from legislation_vector lv, legislation l
        where l.id = lv.id
        order by SCORE 
        fetch first top_k rows only;

    RETURN v_results;
END;
Etapa 5. Criar Conexões do Serviço Database Tools

Você pode criar conexões reutilizáveis com um banco de dados Oracle no OCI usando o serviço Database Tools.

Siga estas diretrizes para criar uma conexão para seu banco de dados.

Diretrizes para Conexão do Oracle Base Database 23ai

Os Agentes de IA Generativa podem acessar um Oracle Base Database 23ai por meio de um ponto final privado. Execute estas tarefas para estabelecer a conexão do banco de dados.

  1. Obtenha as seguintes informações:

    Na Console, abra o menu de navegação , selecione Oracle Database e, em seguida, selecione Oracle Base Database Service. Selecione o nome do sistema de banco de dados e, em seguida, o nome do banco de dados. Copie as seguintes propriedades a serem usadas para as informações de conexão na próxima etapa:

    • Sistema de Banco de Dados
    • Database
    • Home do Banco de Dados
    • No lado esquerdo, selecione Bancos de Dados Plugáveis e selecione o nome do banco de dados plugável. Selecione Conexão do PDB e copie a string de conexão com o formato Longo.

      Exemplo de string de conexão com um formato longo:

      (DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
      (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.62)(PORT=1521)))
      (CONNECT_DATA=(SERVICE_NAME=xxx_pdb1.xxx.dbsvcn.oraclevcn.com)))
  2. Em Ferramentas de Banco de Dados, crie uma conexão usando uma das seguintes opções:

    • Use a opção Selecionar banco de dados para selecionar um banco de dados.
      1. Selecione Oracle Base Database.
      2. Selecione o sistema de banco de dados, o home do banco de dados e o banco de dados.
      3. Selecione o banco de dados plugável.
    • Use a opção Informar informações do banco de dados para um banco de dados entre regiões ou entre tenancies e especifique as informações de conexão manualmente. Para Tipo de conexão, selecione Oracle Database.
  3. Preencha o restante das informações com as seguintes propriedades:

    • Informe o nome de usuário e selecione a atribuição do usuário.

      Certifique-se de que o usuário do banco de dados tenha as permissões necessárias e possa executar a função do banco de dados que foi preparada na Etapa 4. Configure uma Tabela de Banco de Dados e uma Função e receba uma atribuição apropriada. Por exemplo, para o usuário SYS, designe a atribuição SYSDBA.

    • Para Segredo da senha do usuário, selecione o segredo se ele já tiver sido criado. Caso contrário, selecione Criar segredo de senha e crie um segredo para armazenar a senha no vault que você criou.
    • Para String de conexão, cole o formato longo do banco de dados plugável que você copiou na etapa 1 deste procedimento.

      Para um banco de dados entre regiões ou entre tenancies, informe a string de conexão.

    • Marque a caixa de seleção Acessar banco de dados por meio de uma rede privada.
    • Para Ponto final privado, execute um dos seguintes procedimentos:
      • Clique em Selecionar ponto final privado e selecione o ponto final.
      • Selecione Criar ponto final privado e crie o ponto final. Para Sub-rede, selecione a sub-rede privada do banco de dados. Certifique-se de criar o ponto final privado usando a mesma VCN e sub-rede do banco de dados.
    • Para Formato de wallet, selecione None para criar uma conexão sem autenticação mTLS (TLS mútuo).
Diretrizes para Conexão do Autonomous Database 23ai

Os Agentes de IA Generativa podem acessar um Autonomous Database 23ai por meio de um ponto final privado com uma conexão configurada para autenticação mTLS (TLS mútuo). Execute estas tarefas para estabelecer uma conexão de banco de dados.

  1. Obtenha as seguintes informações:

    Na Console, abra o menu de navegação . Selecione Oracle Database e, em seguida, selecione Autonomous Database. Selecione o banco de dados. Na página de detalhes do banco de dados, copie as seguintes propriedades a serem usadas para as informações de conexão na próxima etapa:

    • Nome do banco de dados
    • (Para acesso de rede somente para acesso de ponto final privado) Na seção Rede:
      • IP de ponto final privado
      • URL de ponto final privado
    • Selecione Conexão de banco de dados e faça o seguinte:
      • Na lista de nomes de TNS, localize o nome de TNS que termina com _high e copie sua string de conexão.
      • Somente para um banco de dados que exija autenticação mTLS (TLS Mútuo): Faça download da wallet. Consulte Requisitos de Segurança de Wallet na Etapa 3. Configurar Requisitos de Rede e Segurança.
  2. Em Ferramentas de Banco de Dados, crie uma conexão usando uma das seguintes opções:

    • Use a opção Selecionar banco de dados para selecionar um banco de dados.
      1. Selecione Oracle Autonomous Database.
      2. Selecione o banco de dados.
    • Use a opção Informar informações do banco de dados para um banco de dados entre regiões ou entre tenancies e informe a string de conexão manualmente. Para Tipo de conexão, selecione Oracle Database.
  3. Preencha o restante das informações com as seguintes propriedades:

    • Para Nome do Usuário, informe o usuário que tem as permissões necessárias e pode executar a função de banco de dados que foi preparada na Etapa 4. Configurar uma Tabela de Banco de Dados e uma Função.
    • Para Segredo da senha do usuário, selecione o segredo se ele já tiver sido criado. Caso contrário, selecione Criar segredo de senha e crie um segredo para armazenar a senha no vault que você criou.
    • Para String de conexão, cole a string de conexão que termina com _high, a string que você copiou da seção Conexão de banco de dados da página de detalhes do banco de dados.
      Em seguida, dependendo do tipo de banco de dados, atualize a string da seguinte forma:
      • Banco de dados de acesso privado: Reduza retry_count de 20 para 3 e substitua o URL do ponto final privado do host pelo endereço IP do ponto final privado.

        Exemplo de string de conexão:

        (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)
        (host=<private-endpoint-URL>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com))
        (security=(ssl_server_dn_match=no)))

        Exemplo de string de conexão atualizado:

        (description= (retry_count=3)(retry_delay=3)(address=(protocol=tcps)(port=1522)
        (host=<private-endpoint-IP>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com))
        (security=(ssl_server_dn_match=no)))

      • Banco de dados de acesso público: Reduza retry_count de 20 para 3.

        Exemplo de string de conexão atualizado:

        (description= (retry_count=3)(retry_delay=3)(address=(protocol=tcps)(port=1522)
        (host=<name>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com))
        (security=(ssl_server_dn_match=yes)))
    • Para Ponto final privado:
      • Para bancos de dados de acesso público, um ponto final privado não deve ser configurado.
      • Para Somente acesso de ponto final privado, marque a caixa de seleção Acessar banco de dados por meio de uma rede privada. Em seguida, selecione o ponto final privado ou selecione Criar ponto final privado para criar um ponto final, certificando-se de usar a mesma VCN e sub-rede privada do banco de dados.
    • Para Formato de wallet:
      • Para um banco de dados que não está ativado para autenticação mTLS, selecione None.
      • Para um banco de dados ativado para autenticação mTLS, selecione PKCS#12 wallet(e.g., ewallet.p12). Em seguida, crie o segredo de conteúdo da wallet e o segredo de senha da wallet ou selecione-os se você já tiver criado os segredos.