概要
OCI Autonomous Database Select AI検証を行った当時のLLMは英語のみでしたが、日本語を含む多言語LLMに対応しましたので検証を行いました。
今回は、OCI Autonomous Database Select AI検証の検証2についてLLMを変えて検証しました。
前回からの変更点は以下の通りです。
- SelectAIのAIプロファイルをCohere Command R+に変更
- 検索精度を上げるためカラムのコメント情報に日本語を追加
- 日本語で質問を実施
参考:
Oracle Cloud Infrastructureドキュメント Select AIの使用例
Oracle Cloud Infrastructureドキュメント DBMS_CLOUD_AIパッケージ
Select AI検証
OCI Autonomous Database Select AI検証の検証2の差分について記述します。
サンプルデータ準備
前回と同じです。
SelectAIを行うための設定
日本語が表示できるSQLクライアントからADBに接続します。
クレデンシャル(genai_cred.sql)は前回と同じです。
genai_cred.sql
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'GENAI_CRED',
user_ocid => 'ocid1.user.oc1..',
tenancy_ocid => 'ocid1.tenancy.oc1..',
private_key => '-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwaaSiAgEAAoIBAQDhxvD/oKFor6h5
:
SAA6TtWn9AD1zRu5raux/w==
-----END PRIVATE KEY-----',
fingerprint => '49:82:………3s:fb:8e'
);
END;
/
AIプロファイルはLLMにCohere Command R+を指定します。
aiprofile_command_r_plus.sql
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OCI_COHERE_COMMAND_R_PLUS',
attributes => '{"provider": "oci",
"credential_name": "GENAI_CRED",
"comments":"true",
"object_list": [
{"owner": "ADMIN", "name": "MEMBER_PROFILE"},
{"owner": "ADMIN", "name": "MEMBER_USAGE"}
],
"model": "cohere.command-r-plus"
}');
END;
/
[user@linux] $ sqlplus admin/【パスワード】@genaidemo_low
SQL> @genai_cred
PL/SQLプロシージャが正常に完了しました。
SQL> @aiprofile_command_r_plus
PL/SQLプロシージャが正常に完了しました。
検索精度を上げるためにカラムへコメントを追加します。
COMMENT ON TABLE ADMIN.MEMBER_PROFILE IS 'メンバープロファイル';
COMMENT ON COLUMN ADMIN.MEMBER_PROFILE.MEMBER_ID IS 'メンバーID';
COMMENT ON COLUMN ADMIN.MEMBER_PROFILE.LAST_NAME_JP IS '漢字名前';
COMMENT ON COLUMN ADMIN.MEMBER_PROFILE.LAST_NAME IS 'ローマ字名前';
COMMENT ON COLUMN ADMIN.MEMBER_PROFILE.MAIL_ID IS 'メールアドレス';
COMMENT ON TABLE ADMIN.MEMBER_USAGE IS 'メンバー使用量';
COMMENT ON COLUMN ADMIN.MEMBER_USAGE.MEMBER_ID IS 'メンバーID';
COMMENT ON COLUMN ADMIN.MEMBER_USAGE.USAGE IS '使用量';
SelectAI実施
usage合計が50000を超えるユーザー情報を抽出しました。
SQL> EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_COHERE_COMMAND_R_PLUS');
PL/SQLプロシージャが正常に完了しました。
SQL> SELECT AI 合計使用量が50,000を超えるメンバーの名前、メールアドレスと合計使用量を教えて;
名前 メールアドレス 合計使用量
---------- ------------------------- -----------
shimizu shimizu@example.com 59169
kobayashi kobayashi@example.com 57460
tanaka tanaka@example.com 59261
nakamura nakamura@example.com 58101
matsumoto matsumoto@example.com 61715
yamaguchi yamaguchi@example.com 58876
yamada yamada@example.com 56477
yoshida yoshida@example.com 59913
hayashi hayashi@example.com 123701
kimura kimura@example.com 57349
takahashi takahashi@example.com 60071
11行が選択されました。
SQL> SELECT AI SHOWSQL 合計使用量が50,000を超えるメンバーの名前、メールアドレスと合計使用量を教えて;
RESPONSE
--------------------------------------------------------------------------------
SELECT a."LAST_NAME" 名前, a."MAIL_ID" メールアドレス, SUM(b."USAGE") 合計使用量
FROM "ADMIN"."MEMBER_PROFILE" a
JOIN "ADMIN"."MEMBER_USAGE" b ON a."MEMBER_ID" = b."MEMBER_ID"
GROUP BY a."LAST_NAME", a."MAIL_ID"
HAVING SUM(b."USAGE") > 50000
抽出したデータを昇順に並べることも可能です。
SQL> SELECT AI 合計使用量が50,000を超えるメンバーの名前、メールアドレスと合計使用量を教えて。合計使用量の多い順に並べて;
メンバー名 メールアドレス 合計使用量
---------- ------------------------- -----------
hayashi hayashi@example.com 123701
matsumoto matsumoto@example.com 61715
takahashi takahashi@example.com 60071
yoshida yoshida@example.com 59913
tanaka tanaka@example.com 59261
shimizu shimizu@example.com 59169
yamaguchi yamaguchi@example.com 58876
nakamura nakamura@example.com 58101
kobayashi kobayashi@example.com 57460
kimura kimura@example.com 57349
yamada yamada@example.com 56477
11行が選択されました。
SQL>