OCI Autonomous Database Select AI検証(日本語で質問)

# 概要
[OCI Autonomous Database Select AI検証](https://qiita.com/tktk2712/items/70eea63557a5b0852e64)を行った当時のLLMは英語のみでしたが、日本語を含む多言語LLMに対応しましたので検証を行いました。

今回は、[OCI Autonomous Database Select AI検証](https://qiita.com/tktk2712/items/70eea63557a5b0852e64)の検証2についてLLMを変えて検証しました。
前回からの変更点は以下の通りです。
- SelectAIのAIプロファイルをCohere Command R+に変更
- 検索精度を上げるためカラムのコメント情報に日本語を追加
- 日本語で質問を実施

参考：
[Oracle Cloud Infrastructureドキュメント Select AIの使用例](https://docs.oracle.com/ja-jp/iaas/autonomous-database-serverless/doc/examples-using-select-ai.html)
[Oracle Cloud Infrastructureドキュメント DBMS_CLOUD_AIパッケージ](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/autonomous-database-serverless/doc/dbms-cloud-ai-package.html)

# Select AI検証
[OCI Autonomous Database Select AI検証](https://qiita.com/tktk2712/items/70eea63557a5b0852e64)の検証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>
```