はじめに
Oracle DatabaseのAutoREST機能を使用して、SELECT AI RAGをREST API経由で使用する方法を検証してみました。
ここでの検証では、Sharepoint上のファイルに対するSELECT AI RAGを対象としていますが、クラウド・ストレージ上のファイルに対するSELECT AI RAGや通常のSELECT AIでも、同様の手法でREST API経由での利用が可能になります。
注意
こちらの記事の内容はあくまで個人のメモ的な内容のため、こちらの内容を利用した場合のトラブルには一切責任を負いません。
また、こちらの記事の内容を元にしたOracleサポートへの問い合わせはご遠慮ください。
0. 前提条件
こちらの2つの記事を参考にして、以下の準備をしておきます。
・リソース・プリンシパルの有効化
・Sharepointにアクセスするためのクレデンシャルの作成
・AIプロファイルの作成
・ベクトル索引の作成
1. ORDSの有効化
使用するDBユーザ(スキーマ)に対してORDSが有効化されていない場合にはをORDSを有効化します。
BEGIN
ORDS.ENABLE_SCHEMA(
p_enabled => TRUE,
p_schema => 'SELECTAIUER',
p_url_mapping_type => 'BASE_PATH',
p_url_mapping_pattern => 'selectai',
p_auto_rest_auth => FALSE
);
COMMIT;
END;
/
今回は検証を簡易にするために、認証なしでのアクセスを可能に設定しています。
(p_auto_rest_auth => FALSE)
実際の環境で使用する場合は、必要に応じて認証が必要なように設定してください。
1. ラッパーPL/SQLファンクションの作成
SELECT AIを実行するファンクションDBMS_CLOUD_AI.GENERATEのラッパーPL/SQLファンクションselect_ai_procを作成します。
ファンクションselect_ai_procは、自然言語プロンプト(in_prompt)と使用するAIプロファイルの名前(in_profile)をパラメータとして受け取り、actionに”NARRATE”を指定してDBMS_CLOUD_AI.GENERATEファンクションを実行した結果を返します。
CREATE OR REPLACE PROCEDURE select_ai_proc (in_prompt IN VARCHAR2,
in_profile IN VARCHAR2
response OUT VARCHAR2 )
AS
BEGIN
response := DBMS_CLOUD_AI.GENERATE(
prompt => in_prompt,
profile_name => in_profile,
action => 'NARRATE'
);
END;
2. 作成したファンクションに対するAuto PL/SQLの有効化
ORDS.ENABLE_OBJECTプロシージャを使用して、PL/SQLファンクションselect_ai_procに対してAuto PL/SQLを有効化します。
BEGIN
ORDS.ENABLE_OBJECT(
p_enabled => TRUE,
p_schema => 'SELECTAIUSER',
p_object => 'SELECT_AI_PROC',
p_object_type => 'PROCEDURE',
p_object_alias => 'select_ai_proc'
);
COMMIT;
END;
/
3. 動作確認
curlコマンドでREST APIにPOSTリクエストを送信して、動作を確認してみます。
この例では、リクエストボディにin_prompt(自然言語プロンプト)、in_profile(使用するAIプロファイル名)をJSON形式で記述しています。
curl -X POST -H "Content-Type: application/json" -d '{"in_prompt":"どの記事のPVが一番多いですか","in_profile":"RAG_PROFILE"}' https://sya6vphk3pzlkhq-**********.adb.ap-tokyo-1.oraclecloudapps.com/ords/selectai/select_ai_proc/
user@mymac ~ % curl -X POST -H "Content-Type: application/json" -d '{"in_prompt":"どの記事のPVが一番多いですか","in_profile":"RAG_PROFILE"}' https://sya6vphk3pzlkhq-**********.adb.ap-tokyo-1.oraclecloudapps.com/ords/admin/select_ai_proc/
{"response":"記事のPVが一番多いのは、[OCI]Autonomous AI DatabaseからQiita APIをコールして、自分が投稿した記事のPVトップ10を調査してみたで、3913PVです。\n\nSources:\n - MainSite/Shared Documents/FY26_Qiita_Result.xlsx (https://xxxxxxxxxx.sharepoint.com/sites/MainSite/Shared Documents/FY26_Qiita_Result.xlsx)"}% user@mymac ~ %
REST API経由でSELECT AIを使用できることが確認できました。
参考情報
・ORDS PL/SQL Package Reference
・DBMS_CLOUD_AI.GENERATEファンクション