[Oracle Cloud] Autonomous Database ) Oracle Database 23ai表データをEmbeddingをGUIを使ってやってみた。 (2025/05/20)

# はじめに

Autonomous Databaseの付属ツールの１つであるデータ変換（Data Transforms）がOCI生成AIサービスを利用したベクトル埋め込みとの統合がサポートされました。
これにより、データ変換のデータフロー機能をつかってGUIでベクトル埋め込みの作業を行うことができるようになりました。


# 事前作業

- Oracle Database 23aiベースのAutonomous Database
- ネットワークACLの設定
    データベースユーザーにホストに対する接続権限を付与
```sql
BEGIN
 DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
 host => '*',
 ace => xs$ace_type(privilege_list => xs$name_list('connect'),
 principal_name => 'admin',
 principal_type => xs_acl.ptype_db));
END;
/
```
- サンプル表、データの作成
    作業用の表を作成しデータを格納します。また、Embedding結果を格納するためにVector型の列を持つ表を作成します。
```sql
create table wikisample (title varchar2(30),TEXT CLOB);
insert into wikisample (title,text) values('San Francisco','San Francisco is in California.');
-- 省略
commit;

create table wikisample_v (title varchar2(30),TEXT CLOB,v vector);
```

# データ変換（ Data Transforms ) の起動とログイン
データ変換（Data Transforms)はデータベース・アクションから起動できます。
起動しているAutonomous Databaseの詳細から、「データベース・アクション」の「すべてのデータベース・アクションの表示」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/48933a0f-8a1e-45bf-a84a-e3df8bb6611c.png)
データベース・アクション起動パッド
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/e0dd8970-a02d-456d-959f-0dfd23811f6e.png)
データベース・アクションのメニューから「データ変換」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/53fae059-3dcc-4e10-ad85-4bf91ef9b6f1.png)
データ変換（Data Transforms)にログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/c6698d71-4eee-4a51-97a2-be04053c9a6c.png)
データ変換に関連付けられたVMがプロビジョニングされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/e32286f0-5f61-48d2-ba76-ac904ac79538.png)
プロビジョニングされるVMのサイズはOCI WebコンソールのAutonomous Databaseの詳細の「ツール構成」から確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/74741d65-65e0-4aaf-a028-140143d0487c.png)
Data Transformsの起動の確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/173fed85-bd95-4a73-b278-6a011b3f426b.png)

# 接続の作成
Embeddingデータを格納するAutonomous DatabaseとOCI 生成AIへの接続を作成します。
データ変換（Data Transforms)から「Connections」を選択
Autonomos Databaseへの接続が確認できます。
「Create Connection」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/c4b0cacf-4998-4a3f-a08a-67fbdef55499.png)
Service Typeから「Services」～「OCI Generative AI」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/ac02829b-1af3-4426-ab04-c50d4829b57a.png)
接続の名前とOCI生成AIを利用するためのクレデンシャル情報を入力し「Create」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/f44069b7-326c-4d11-a5f0-01d0f0f2437b.png)

# プロジェクトとデータフローの作成
Embeddingを実施するデータフローとそのデータフローを格納するプロジェクトを作成します。
データ変換（Data Transforms)から「Projects」を選択
「Create Data Flow」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/395baf44-05f0-4b83-b970-230a4211bfda.png)
「Create Data Flow」の画面で、データフローの名前を入力
「Create New Project」を選択し、プロジェクトの名前を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/339eabfe-cc24-4661-aac6-3226fef4c475.png)
データフローの画面で「Add a Schema」をクリックして、Autonomous Databaseの接続とスキーマを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/55f9eaa0-5d19-46d3-bc1e-b2d51fd85196.png)
接続したスキーマが所持する表のリストからEmbedding対象とする表を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/edd25e82-9212-4161-931f-144beb48cc7c.png)
データベース機能ツールバーから「MACHINE LERNING」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/4d7ef399-34d3-4f8b-8372-a46e2038cf02.png)
「Text Embedding Vector」をデザイン・キャンバスにドラッグし、最初に選択した表から「コネクタ」アイコン(「コネクタ」アイコン)をドラッグして、コンポーネントを接続
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/742f5d40-06ae-4cf5-b3b1-ce672bc98131.png)
デザイン・キャンパス内の「Text Embedding Vector」をクリックし、OCI生成AIに関する情報を入力
- AI Service:「OCI Generative AI」
- Connection: 接続の名前（例：OCI_GENAI_CONN）
- AI Model:Embeddingに使用するモデルをリストから選択（例：cohere.embed-multilingual-v3.0）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/d70507f3-3423-4b8d-a768-8091abd9c8da.png)

「Column Mapping」（列マッピング）でinput_textの編集アイコンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/444c0548-41e6-47d8-93c5-8bcc071a5e5f.png)
「Expression」（式）列にEmbedding対象とするテキスト列をドラッグ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/f304c888-829c-4b66-ba75-13f17e5cd3f8.png)
デザイン・キャンバスにEmbeddin結果を格納する表をドラッグ（例：WIKISAMPLE_V）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/c905080b-2bc5-456c-9440-e51a572d4b24.png)
選択した表の編集から「Column Mapping」（列マッピング）でベクトル列の編集アイコンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/4e62223b-a6f2-48d5-bc08-aa56318f4378.png)
「Expression」（式）列にTextEmbeddingVectorのVECTOR_EMBEDDINGをドラッグ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/58aaed38-f101-44bd-9d47-829e78aa2314.png)
列マッピングの確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/9a33f7a0-c64e-4e90-8c2d-39e877fed52f.png)

# Embeddingの実施と確認
データ・フローを保存して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/3e26d1a8-39bd-4ac5-aa30-3cd837d71607.png)
保存していない場合ダイアログが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/a2ee717f-ea7f-42c1-9ca1-0c7a48e0fb11.png)
データフローを開始
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/b6a3171f-3b10-4497-90d2-4bcdb2f82830.png)
ジョブの確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/cdb84fff-188a-4af9-ae4a-0144c52a9078.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/363cb6b6-55fd-4aae-bf86-5e7c8c14eb34.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/66cf8a56-2282-4cae-a1f7-5b906c051607.png)
Embedding結果をSQLで確認（例：データベース・アクションSQL）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/e3607cee-c1d6-4523-aa5e-00b099dd395b.png)
ベクトル列の値
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/0c03f8d7-ae4e-4f60-9df6-db7d9856b3ef.png)


# おわりに

Autonomous Databaseのデータ変換を使うことでGUIベースにEmbeddingのフロー作成・実行ができました。
データ変換の使用を開始すると、ツールに関連付けられたVMがプロビジョニングされ、データベースECPU数に加えてツールに割り当てられたECPU数の時間課金が発生します。
データベースインスタンスが停止または終了した場合、またはデータ変換が指定された最大アイドル時間（デフォルト10分）を超えるアイドル状態の場合、データ変換に割当て済ECPUの請求が停止します。 


# 参考情報

- [Use Text Embedding Vector in a Data Flow](https://docs.oracle.com/en/database/oracle/sql-developer-web/sdwad/work-with-data-flow.html#GUID-4E4C693D-177B-4B30-8943-3DDF5AA408B1)
- [組込みツールのコンピュート・リソース制限の構成について](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/autonomous-database-serverless/doc/autonomous-tools.html)
- [「データ変換」ページ](https://docs.oracle.com/ja-jp/iaas/autonomous-database-serverless/doc/data-transforms.html)
- [403 : Data Transformsを使ってみよう](https://oracle-japan.github.io/ocitutorials/adb/adb403-data-transforms/)
- [[Oracle Cloud]OCI Generative AI EmbeddingモデルでOracle Database 23ai表データをEmbeddingしてみた。(2024/05/05)](https://qiita.com/kenwatan/items/d1bc626ab18628c84958)