はじめに
Autonomous DatabaseのSELECT AI(自然言語によるクエリ実行)機能で、AIプロバイダとしてOCI生成AIサービスが利用できるようになったので、早速試してみました。
1. クレデンシャルの作成
Autonomous Databaseに接続します。
接続ユーザには予めDBMS_CLOUDパッケージ、DBMS_CLOUD_AIパッケージの実行権限を付与しておきます。
今回は、こちらのLiveLabsをデプロイした際に作成されるMOVIESTREAMユーザを使用しました。
[opc@tools ~]$ sql MOVIESTREAM/watchS0meMovies#@ADB
SQLcl: Release 23.3 Production on Wed Feb 07 05:04:54 2024
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.22.0.1.0
SQL>
DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、OCI生成AIサービスに接続するためのクレデンシャルを作成します。
今回はクレデンシャル名をOCI_GENAI_CREDとしました。
OCI生成AIサービスをSELECT AIのLLMとして使用する場合、クレデンシャルにはOCI生成AIサービスを利用可能なOCIユーザのAPIキーの情報を設定します。
※クレデンシャルとしてAutonomous Databaseのリソース・プリンシパルも利用可能です。
SQL> BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OCI_GENAI_CRED',
user_ocid => 'ocid1.user.oc1..axxxxxxxxxxxxxxxxq',
tenancy_ocid => 'ocid1.tenancy.oc1..aaxxxxxxxxxxxxa',
private_key => '-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCegvX4x7E8zpi3
<中略>
1D3iheu1ct50SB0aIQz9Ow==
-----END PRIVATE KEY-----',
fingerprint => 'xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx'
);
END;
/
PL/SQL procedure successfully completed.
SQL>
2. AIプロファイルの作成
DBMS_CLOUD_AI.CREATE_PROFILEプロシージャを使用して、AIプロファイルを作成します。
今回はプロファイル名をOCI_GENAIとしました
AIプロバイダとしてOCI生成AIサービスを使用する場合はパラメータproviderにociを指定します。
今回は、AIプロファイルで使用するスキーマ・オブジェクトとして、MOVIESTREAMスキーマ内の、GENRE、CUSTOMER、PIZZA_SHOP、STREAMS、MOVIES、ACTORSの6つの表を指定しました。
providerにociを設定しモデルを指定しない場合、デフォルトではモデルとしてcohere.commandが使用されます。
SQL> BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
'OCI_GENAI',
'{"provider": "oci",
"credential_name": "OCI_GENAI_CRED",
"object_list": [
{"owner": "MOVIESTREAM", "name": "GENRE"},
{"owner": "MOVIESTREAM", "name": "CUSTOMER"},
{"owner": "MOVIESTREAM", "name": "PIZZA_SHOP"},
{"owner": "MOVIESTREAM", "name": "STREAMS"},
{"owner": "MOVIESTREAM", "name": "MOVIES"},
{"owner": "MOVIESTREAM", "name": "ACTORS"}
]
}'
);
END;
/
PL/SQL procedure successfully completed.
SQL>
3. SELECT AIの実行
DBMS_CLOUD_AI.SET_PROFILEプロシージャを使用して、セッションで使用するAIプロファイルとしてOCI_GENAIを指定します。
SQL> EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_GENAI');
PL/SQL procedure successfully completed.
SQL>
SELECT AIを実行してみます。
SQL> SELECT AI how many customers exist;
NUM_CUSTOMERS
________________
148129
SQL>
結果が妥当かを確認するために、customer表の件数を確認してみます。
SQL> SELECT COUNT(*) FROM customer;
COUNT(*)
___________
148129
SQL>
SELECT AIの結果とcustomer表の件数が一致していることが確認できました。
SELECT AI SHOWSQLで生成されたSQLを確認してみます。
SQL> SELECT AI SHOWSQL how many customers exist;
RESPONSE
_____________________________________________________________
SELECT COUNT(*) AS num_customers
FROM MOVIESTREAM.CUSTOMER
SQL>
SELECT AIで日本語で問合せを実行してみます。
SQL> SELECT AI 顧客は何人いますか;
CUSTOMER_COUNT
_________________
148129
SQL>
日本語で問合せした場合でも、SQLが実行されることが確認できました。
参考情報
・生成AIリソースへのアクセス
・Create and Set an AI Profile
・DBMS_CLOUD_AI Package