Geração de Dados Sintéticos

Gere dados sintéticos usando geradores aleatórios, algoritmos, modelos estatísticos e Modelos de Linguagem Grande (LLMs) para simular dados reais para desenvolver e testar soluções de forma eficaz.

Os dados sintéticos podem ser uma ferramenta poderosa ao desenvolver e testar soluções, especialmente quando os dados reais ainda não existem ou não podem ser usados. Dados sintéticos, ou gerados artificialmente, podem ter muitas das características de dados reais. Os dados sintéticos são normalmente criados usando geradores aleatórios, algoritmos ou modelos estatísticos para simular as características e distribuições de dados reais. No entanto, isso pode ser complexo para produzir ou confiar em ferramentas com recursos de sofisticação variada. Com a disponibilidade de Modelos de Linguagem Grande (LLMs), podem ser gerados dados mais relevantes e específicos do esquema que considerem características expressas em linguagem natural.

Tópicos

Benefícios da Geração de Dados Sintéticos

A geração de dados sintéticos permite preencher clones de metadados do banco de dados, dar suporte a projetos de desenvolvimento, teste e machine learning sem usar dados confidenciais de tabelas originais.

A Geração de Dados Sintéticos oferece os seguintes benefícios:
  • Preenchendo clones de metadados com dados sintéticos: Um clone de metadados replica a estrutura de um banco de dados ou esquema sem incluir dados reais. O Select AI permite que a geração de dados sintéticos preencha esses clones, protegendo dados confidenciais e permitindo o desenvolvimento, o teste e a criação de modelos. Essa abordagem suporta testes de desempenho e escalabilidade.

  • Iniciando novos projetos: Ao iniciar um novo projeto, os dados reais podem não estar disponíveis. Os dados sintéticos fornecem amostras realistas para ajudar a demonstrar conceitos e obter suporte para propostas de projetos.

  • Validação da experiência do usuário: Os dados sintéticos auxiliam no teste de interfaces do usuário, fornecendo diversos conjuntos de dados para descobrir falhas de design, desempenho e problemas de escalabilidade.

  • Suporte a projetos de IA e machine learning: Os dados sintéticos são úteis para treinar modelos de IA e machine learning quando dados reais estão indisponíveis ou restritos. Os LLMs podem gerar dados com padrões específicos para facilitar o treinamento e a pontuação do modelo.

Gerar Dados Sintéticos

Use a função DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA para gerar dados sintéticos e consultar os dados usando ações Selecionar AI.

Monitorar e Solucionar Problemas de Geração de Dados Sintéticos

Ao gerar grandes volumes de dados em muitas tabelas, o Select AI divide as tarefas de geração de dados sintéticos em partes menores e executa tarefas em paralelo. O status de cada bloco é rastreado na tabela SYNTHETIC_DATA$<operation_id>_STATUS.

As operações de geração de dados sintéticos são registradas nas tabelas DBA_LOAD_OPERATIONS e USER_LOAD_OPERATIONS. Use essas tabelas para monitorar a operação DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA. Consulte Rastrear Operações de Carga DBMS_CLOUD para obter mais detalhes.

Depois de executar a geração de dados sintéticos em uma determinada sessão, você pode obter o <operation_id> mais recente de USER_LOAD_OPERATION usando o seguinte:
SELECT max(id) FROM user_load_operations;

Para exibir as operações de dados sintéticos em execução em outra sessão, use a view DBA_LOAD_OPERATIONS.

Exibir Status da Geração de Dados Sintéticos

A tabela de status da operação de geração de dados sintéticos mostra o andamento de cada tabela e seu bloco correspondente. A coluna STATUS_TABLE em USER_LOAD_OPERATIONS ou DBA_LOAD_OPERATIONS mostra o nome da tabela de status. O nome da tabela é SYNTHETIC_DATA$<operation_id>_STATUS e tem as seguintes colunas:

Nome Tipo de dados Descrição

ID

NUMBER

Identificador exclusivo do registro.

NAME

VARCHAR2

Nome qualificado da tabela, como "ADB_USER"."EMPLOYEES"

BYTES

NUMBER

Número desejado de registros para esta tarefa de geração de dados

ROWS_LOADED

NUMBER

Número real de registros gerados.

CHECKSUM

VARCHAR2

Valor inicial da chave primária durante esta tarefa de geração de dados.

LAST_MODIFIED

TIMESTAMP WITH TIME ZONE

Timestamp indicando quando o registro foi modificado pela última vez.

STATUS

VARCHAR2

Status da tarefa de geração de dados. Os valores válidos são:
  • COMPLETED
  • FAILED
  • PENDING
  • SKIPPED

ERROR_CODE

NUMBER

Código de erro, se a tarefa de geração de dados falhar.

ERROR_MESSAGE

VARCHAR2

Mensagem de erro fornecida se a tarefa falhar.

END_TIME

TIMESTAMP WITH TIME ZONE

Timestamp marcando o fim da tarefa de geração de dados.
Exemplo: Verificar o Número de Registros Gerados para Cada Tabela

Para verificar o número de registros gerados para cada tabela, execute o seguinte:

SELECT name, SUM(rows_loaded) FROM synthetic_data$<operation_id>_status group by name;

Consulte ROWS_LOADED para confirmar o número de linhas carregadas para cada bloco e SUM(ROWS_LOADED) para linhas de cada tabela.

BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_list => '[{"owner": "ADB_USER", "name": "DIRECTOR","record_count":150},
                         {"owner": "ADB_USER", "name": "MOVIE_ACTOR","record_count":300},
                         {"owner": "ADB_USER", "name": "CLASSES", "user_prompt":"all in fall semester","record_count":5},
                         {"owner": "ADB_USER", "name": "ACTOR","record_count":220},
                         {"owner": "ADB_USER", "name": "MOVIE","record_count":50}]'
    );
END;
/
 
 
-- Check loaded rows for each chunk
SQL> SELECT name, rows_loaded FROM synthetic_data$141_status order by name;
NAME                           ROWS_LOADED
------------------------------------------
"ADB_USER"."ACTOR"                        188
"ADB_USER"."ACTOR"                         32
"ADB_USER"."CLASSES"                        5
"ADB_USER"."DIRECTOR"                     150
"ADB_USER"."MOVIE"                         50
"ADB_USER"."MOVIE_ACTOR"                   38
"ADB_USER"."MOVIE_ACTOR"                  114
"ADB_USER"."MOVIE_ACTOR"                  148
 
 
 
-- Check loaded rows for each table
SQL> SELECT name, SUM(rows_loaded) FROM synthetic_data$141_status group by name;
 
NAME                      SUM(ROWS_LOADED)
------------------------------------------
"ADB_USER"."DIRECTOR"                     150
"ADB_USER"."MOVIE_ACTOR"                  300
"ADB_USER"."CLASSES"                        5
"ADB_USER"."ACTOR"                        220
"ADB_USER"."MOVIE"                         50