OCI GoldenGateでのAIモデルの使用によるベクトル埋込みの作成
GoldenGate 26ai以上を使用して、データ・レプリケーション・デプロイメントでAIサービスを使用してベクトル埋込みを生成する方法について学習します。
概要
OCI GoldenGateには、GoldenGateプロセスが様々なプロバイダ(OCI Generative AI、OpenAI、Google Gemini、Voyage AI)のAIモデルと対話して、データ・レプリケーション・パイプライン内にベクトル埋込みを直接生成できるAIサービスが含まれています。
次のステップでは、AIモデルへの接続を設定し、それらを使用してReplicatでベクトル埋込みを生成する方法について説明します。
開始する前に
続行するには、次が必要です:
-
既存のソース・データベース
-
Oracle Autonomous AI Lakehouseなどのベクトルをサポートする既存のターゲットOracle AI Database。
-
Oracle Autonomous AI Databaseを使用する場合は、GGADMINユーザーをロック解除します。
-
ソース・データベースとターゲット・データベースは、同一のテナンシおよびリージョンに存在する必要があります。
-
サンプル・データが必要な場合は、Archive.zipをダウンロードし、ラボ1、タスク3: ATPスキーマのロードの手順に従います。
-
既存のOCIAPIキー。
-
プライベートAPIキー・コンテンツを含む既存のOCI Vault。
-
OCI GoldenGateを使用するための最小推奨ポリシー。
-
OCI生成AIを使用するための最小推奨ポリシー。
タスク1: 環境の設定
-
ソースOracle Autonomous AI Transaction Processing (ATP)接続を作成します。
-
SQLツールを使用して、ソース・データベースでサプリメンタル・ロギングを有効にします。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; -
次の問合せをSQLツールで実行して、ソース・データベース内のすべての表のsupport_mode=FULLを確認します:
select * from DBA_GOLDENGATE_SUPPORT_MODE where owner = 'SRC_OCIGGLL'; -
OpenAI text-embedding-3-smallモデルを使用して作成されるベクトル埋込みを格納するターゲットALKデータベースに次の表を作成します。
CREATE TABLE "SRCMIRROR_OCIGGLL"."SRC_CITY_VECTOR" ( "CITY_ID" NUMBER(10,0), "CITY" VARCHAR2(50 BYTE), "REGION_ID" NUMBER(10,0), "POPULATION" NUMBER(10,0), "CITY_EMBED" VECTOR(1536,FLOAT32) );
タスク2: AIモデルの構成
-
AIモデル接続の作成
-
名前: OCI_GenAI_TextEmbeddingSmall
-
タイプ: AIモデル
-
プロバイダ・タイプ: OCI生成AI
-
認証タイプ: OCI生成AI
-
ユーザー: 現在のテナンシおよびユーザーの使用
-
リージョンの指定
-
OCI APIキーを含むシークレットを指定または作成します
-
APIキーのフィンガープリントの入力
-
openai.text-embedding-3-smallなどの埋込みモデルをリストから選択します
-
「作成」を選択します
-
-
接続の詳細の確認
-
AIモデル接続をデプロイメントに割り当てます:
-
デプロイメントの詳細ページに移動し、「割り当てられた接続」を選択します
-
「Assigned AI model connections」セクションで「Assign connection」を選択し、AI Model接続を選択します。
-
「接続の割当て」を選択して割当てを確認します
-
-
新しいAIモデル接続が「Assigned AI model connections」セクションにリストされていることを確認します。
-
デプロイメントへのAIモデル接続の割当てにより、GoldenGateでAIサービスが自動的に構成されます
-
OCI GoldenGateコンソールにログインし、「AIモデル」に移動して、AIモデルのリストを確認します。
-
Replicatで@AISERVICE関数を使用してベクトル埋込みを作成する必要があるため、モデル名をノートにとります。
-
@AISERVICE関数のモデル名は、OCI GoldenGate AIモデルに表示されるモデル名と一致する必要があります。接続名と異なる場合があります。
-
タスク3: 統合Extractの作成
統合Extractは、ソース・データベースに対する継続的な変更を取得します。
-
デプロイメントの詳細ページで、「コンソールの起動」を選択します。
-
必要に応じて、ユーザー名およびデプロイメントの作成時に使用したパスワードにoggadminと入力し、「サインイン」を選択します。
-
トランザクション データとチェックポイント テーブルを追加します。
-
ナビゲーション・メニューを開き、「DB接続」を選択します。
-
「Connect to database SourceDB」を選択します。
-
ナビゲーション・メニューで、「Trandata」を選択し、「Add Trandata」(プラス・アイコン)を選択します。
-
「スキーマ名」に
SRC_OCIGGLLと入力し、「送信」を選択します。 -
確認するには、「検索」フィールドに
SRC_OCIGGLLと入力し、「検索」を選択します。 -
ナビゲーション・メニューを開き、「DB接続」を選択します。
-
「Connect to database TargetDB」を選択します。
-
ナビゲーション・メニューで、「チェックポイント」を選択し、「チェックポイントの追加」(プラス・アイコン)を選択します。
-
「チェックポイント表」に
"SRCMIRROR_OCIGGLL"."CHECKTABLE"と入力し、「発行」を選択します。
-
-
ノート:ソース表を指定するために使用できるパラメータの詳細は、追加の抽出パラメータ・オプションを参照してください。
「Extractパラメータ」ページで、
EXTTRAIL <trail-name>の下に次の行を挿入します:-- Capture DDL operations for listed schema tables ddl include mapped -- Add step-by-step history of to the report file. Useful when troubleshooting. ddloptions report -- Write capture stats per table to the report file daily. report at 00:01 -- Rollover the report file weekly. Useful when IE runs -- without being stopped/started for long periods of time to -- keep the report files from becoming too large. reportrollover at 00:01 on Sunday -- Report total operations captured, and operations per second -- every 10 minutes. reportcount every 10 minutes, rate -- Table list for capture table SRC_OCIGGLL.*; -
長時間実行トランザクションを確認します。ソース・データベースで次のスクリプトを実行します:
select start_scn, start_time from gv$transaction where start_scn < (select max(start_scn) from dba_capture);問合せでなんらかの行が返された場合は、トランザクションのSCNを特定してから、トランザクションをコミットまたはロールバックする必要があります。
タスク4: 非統合Replicatの追加および実行
-
「パラメータ・ファイル」画面で、
MAP *.*, TARGET *.*;を次のスクリプトに置き換えます:-- Capture DDL operations for listed schema tables ddl include mapped -- -- Add step-by-step history of ddl operations captured -- to the report file. Very useful when troubleshooting. ddloptions report -- -- Write capture stats per table to the report file daily. report at 00:01 -- -- Rollover the report file weekly. Useful when PR runs -- without being stopped/started for long periods of time to -- keep the report files from becoming too large. reportrollover at 00:01 on Sunday -- -- Report total operations captured, and operations per second -- every 10 minutes. reportcount every 10 minutes, rate -- -- Table map list for apply MAP SRC_OCIGGLL.SRC_CITY, TARGET SRCMIRROR_OCIGGLL.SRC_CITY_VECTOR, COLMAP ( USEDEFAULTS, CITY_EMBED = @AISERVICE(embed,'OCI_GenAI_TextEmbeddingSmall',CITY) );ノート
@AISERVICE関数は、前に定義したAIモデル接続を使用して、CITY列に格納されたデータからベクトル埋込みを作成します。
-
ソース・データベースへの挿入の実行:
-
Oracle Cloudコンソールに戻り、ナビゲーション・メニューを使用して「Oracle AI Database」、「Autonomous AI Transaction Processing」、「SourceDB」の順に戻ります。
-
SourceDBの詳細ページで、「データベース・アクション」、「SQL」の順に選択します。
-
次の挿入を入力し、「スクリプトの実行」を選択します。
Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002); -
OCI GoldenGateデプロイメント・コンソールで、「Extract name (UAEXT)」を選択し、「Statistics」を選択します。SRC_OCIGGLL.SRC_CITYが10個の挿入とともにリストされていることを確認します。
-
「概要」画面に戻り、Replicat名(REP)を選択し、「統計」を選択します。SRCMIRROR_OCIGGLL.SRC_CITYが10個の挿入とともにリストされていることを確認します。
-
ターゲットのAutonomous AI Lakehouseの詳細ページに移動し、「データベース・アクション」、「SQL」の順に選択します
-
SQLで
select * from SRCMIRROR_OCIGGLL.SRC_CITY_VECTOR;を実行し、AIサービスを使用してOCI GoldenGateによって作成されたベクトル埋込みを含む結果を確認します。
-
SRCMIRROR_OCIGGLL.SRC_CITY_VECTOR表にはSRC_OCIGGLL.SRC_CITYからレプリケートされた行が含まれ、CITY_EMBED列には各都市に対して生成されたベクトル埋込みが含まれます。
トラブル・シューティング
-
Replicatがモデルをコールできない場合は、AIモデル接続がデプロイメントに正常に割り当てられていることを確認します。
-
認証に失敗した場合は、OCI APIキー・シークレット、フィンガープリント、ユーザー、テナンシおよびリージョンを確認します。
-
行はレプリケートされますが、埋込みが生成されない場合は、
@AISERVICEのモデル名がOCI GoldenGate AIモデルにリストされているモデル名と一致することを確認します。 -
ターゲット表でReplicatが失敗した場合は、ターゲット・データベースでベクトル列がサポートされ、選択した埋込みモデルと互換性のあるディメンションで
CITY_EMBEDが定義されていることを確認します。 -
取得が失敗した場合、または表がスキップされた場合、サプリメンタル・ロギングが有効で、ソース表サポート・モードが
FULLであることを確認します。