合成データ生成

ランダム・ジェネレータ、アルゴリズム、統計モデル、および大規模言語モデル(LLM)を使用して合成データを生成し、ソリューションを効果的に開発およびテストするための実データをシミュレートします。

合成データは、ソリューションを開発およびテストする際、特に実際のデータがまだ存在しない、または使用が許可されていない場合に、強力なツールになる可能性があります。合成的、または人工的に生成されたデータは、実データの多くの特性を持つことができます。合成データは、通常、ランダム・ジェネレータ、アルゴリズムまたは統計モデルを使用して作成され、実データの特性および分布をシミュレートします。ただし、これは複雑で、様々な高度な機能を備えたツールを生成したり、依存したりすることがあります。大規模言語モデル(LLM)の可用性により、自然言語で表現される特性を考慮した、より関連性の高いスキーマ固有のデータが生成される場合があります。

トピック

合成データ生成のメリット

合成データ生成により、元の表の機密データを使用せずに、データベース・メタデータ・クローンを移入し、開発、テストおよび機械学習プロジェクトをサポートできます。

合成データ生成には、次の利点があります。
  • メタデータ・クローンへの合成データの移入: メタデータ・クローンは、実際のデータを含めずにデータベースまたはスキーマの構造をレプリケートします。Select AIを使用すると、合成データ生成によってこれらのクローンが移入され、機密データが保護される一方で、開発、テストおよびテンプレートの作成が可能になります。この方法では、パフォーマンスおよびスケーラビリティのテストがサポートされます。

  • 新規プロジェクトの開始: 新規プロジェクトを開始するときに、実際のデータを使用できない場合があります。合成データは、概念を実証し、プロジェクトの提案をサポートするのに役立つ現実的なサンプルを提供します。

  • ユーザー・エクスペリエンスの検証: 合成データは、設計上の欠陥、パフォーマンスおよびスケーラビリティの問題を明らかにするための多様なデータ・セットを提供することで、ユーザー・インタフェースのテストに役立ちます。

  • AIおよび機械学習プロジェクトのサポート: 合成データは、実際のデータが使用できないか制限されている場合にAIおよび機械学習モデルのトレーニングに役立ちます。LLMは、モデルのトレーニングとスコアリングを容易にするために、特定のパターンでデータを生成できます。

合成データの生成

DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATAファンクションでは、AIの選択アクションを使用して合成データを生成し、データを問い合せます。

さらに学習するには、例: 合成データの生成を参照してください。

合成データ生成の監視およびトラブルシューティング

多数の表にわたって大量のデータを生成する場合、Select AIは、合成データ生成タスクを小さなチャンクに分割し、タスクを並行して実行します。各チャンクのステータスは、SYNTHETIC_DATA$<operation_id>_STATUS表で追跡されます。

合成データ生成操作は、表DBA_LOAD_OPERATIONSおよびUSER_LOAD_OPERATIONSに記録されます。これらの表を使用して、 DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA操作を監視します。詳細は、「DBMS_CLOUDロード操作の追跡」を参照してください。

特定のセッションで合成データ生成を実行した後、次のものを使用してUSER_LOAD_OPERATIONから最新の<operation_id>を取得できます。
SELECT max(id) FROM user_load_operations;

別のセッションで実行されている合成データ操作を表示するには、DBA_LOAD_OPERATIONSビューを使用します。

合成データ生成のステータスの表示

合成データ生成操作のステータス表には、各表の進行状況および対応するチャンクが表示されます。USER_LOAD_OPERATIONSまたはDBA_LOAD_OPERATIONSSTATUS_TABLE列には、ステータス表名が表示されます。表名はSYNTHETIC_DATA$<operation_id>_STATUSで、次の列があります。

名前 Datatype 説明

ID

NUMBER

レコードの一意識別子。

NAME

VARCHAR2

"ADB_USER"."EMPLOYEES"など、表の修飾名

BYTES

NUMBER

このデータ生成タスクに必要なレコード数

ROWS_LOADED

NUMBER

生成された実際のレコード数。

CHECKSUM

VARCHAR2

このデータ生成タスク中の主キーの開始値。

LAST_MODIFIED

TIMESTAMP WITH TIME ZONE

レコードが最後に変更された時間を示すタイムスタンプ。

STATUS

VARCHAR2

データ生成タスクのステータス。有効な値は次のとおりです。
  • COMPLETED
  • FAILED
  • PENDING
  • SKIPPED

ERROR_CODE

NUMBER

エラー・コード(データ生成タスクが失敗した場合)。

ERROR_MESSAGE

VARCHAR2

タスクが失敗した場合に指定されたエラー・メッセージ。

END_TIME

TIMESTAMP WITH TIME ZONE

データ生成タスクの終了を示すタイムスタンプ。
例: 各テーブルに対して生成されたレコード数の確認

各テーブルに対して生成されたレコード数を確認するには、次を発行します。

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

ROWS_LOADEDを問い合せて、各チャンクに対してロードされる行数を確認し、各表の行に対してSUM(ROWS_LOADED)を問い合せます。

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