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.
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.
-
-
- 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.
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.
-
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.
-
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>
-
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'}
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.
- Criar um vault.
- Crie uma chave de criptografia principal.
- 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:
- Faça download da wallet e crie uma senha da wallet. Consulte Fazer Download das Credenciais do Cliente (Wallets).
- No zip da wallet baixado, extraia o arquivo
ewallet.p12
e coloque-o de lado. Você precisa da walletPKCS#12
para criar a conexão de ferramentas de banco de dados.
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 documentoBODY
: O conteúdo real que você deseja que o agente pesquiseVECTOR
: O vetor gerado de um modelo de incorporação com base no conteúdobody
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údobody
PAGE_NUMBERS
: Os números de página do conteúdo, se disponível.
- 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 consultatop_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
eSCORE
) e opcionais (CHUNKID
,TITLE
eURL
).O conteúdo
BODY
é processado por um modelo de incorporação para produzir umVECTOR
para cada conteúdo. A função calcula as distâncias entre o vetor de consulta e cadaVECTOR
, retornando as linhastop_k
. O campoSCORE
representa as distâncias entre o vetor de consulta e oVECTOR
doBODY
. -
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;
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.
-
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)))
-
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.
- Selecione Oracle Base Database.
- Selecione o sistema de banco de dados, o home do banco de dados e o banco de dados.
- 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.
- Use a opção Selecionar banco de dados para selecionar um banco de dados.
-
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çãoSYSDBA
. - 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).
- Informe o nome de usuário e selecione a atribuição do usuário.
-
- 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.
-
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.
- Na lista de nomes de TNS, localize o nome de TNS que termina com
-
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.
- Selecione Oracle Autonomous Database.
- 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.
- Use a opção Selecionar banco de dados para selecionar um banco de dados.
-
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)))
- Banco de dados de acesso privado: Reduza
- 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.
- Para um banco de dados que não está ativado para autenticação mTLS, selecione
-