5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Autonomous Database:SELECT AI(自然言語によるクエリ実行)がOCI生成AIサービスに対応したので試してみた

Last updated at Posted at 2024-02-07

はじめに

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

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?