はじめに
本記事は、無償の学習コンテンツであるOracle Live Labsの以下ワークショップをもとにした内容となります。
Develop AI RAG Apps with Autonomous Database Select AI
少し長くなるので、前編と後編で分けております。今回は前編の内容です。
<ワークショップのシナリオ>
サブスクの動画配信サービスのような架空のOracle MovieStreamというサービスにおけるユースケースを想定しています。サービス利用者向けのサポートサイトへの問い合わせをより簡単にできるように、Select AI with RAGを使用して簡易的なRAGアプリを作成します。
目次
1.前提事項
2.プロファイルの作成
3.ベクトル索引の作成
1. 前提事項
上記ワークショップ内 "Lab 1: Set up Your Workshop Environment" の手順を参考に、以下は済ませてある状態です。
【前提条件】
・OCI Generative AIにアクセスするためのポリシー作成
・Autonomous Database(以下、ADB略)インスタンス作成
【使用リージョン】
・ロンドン(OCI Generative AIサービスが利用可能なリージョンを使用する必要があるため)
※ワークショップで必要となるリソースを含む事前定義済みのテンプレートが用意されており、OCI Resource Managerを使用してデプロイするというシンプルな流れです。
デプロイが完了すると、以下が済んだ状態となります。
・MovieStreamWorkshop という名前のADB作成(独自の名前に変更可)
・moviestream という名前の新しいユーザー作成
・moviestreamスキーマでのムービー関連のテーブルとビューの作成
・ワークショップで様々なアクションを実行するために必要な権限付与
・Autonomous Database Select AI APEXアプリケーションのダウンロード
2. プロファイルの作成
2-1. moviestreamユーザーでSQLワークシートにログイン
OCIコンソールより事前に作成済みのADBインスタンス MovieStreamWorkshop の詳細画面に飛び、「すべてのデータベースアクションの表示」からDatabase Actionsにアクセスします。
デフォルトではADMINユーザーでログインされた状態になっているため、一度サインアウトしてmoviestreamユーザーでログインし直します。
ログインできたら、「開発」→「SQL」から右下の「開く」を選択し、SQLワークシートを開きます。
表示言語は、右上ユーザー名をクリック→「プリファレンス」より変更可能です。
今回は英語表示で進めております。
2-2. moviestreamユーザーでSQLワークシートにログイン
今回参考にしているワークショップでは、以下 Movie Stream Troubleshooting という静的WebサイトがOCI Object Storageで公開されているため、そちらを使用します。
以下を実行し、DBMS_CLOUD.LIST_OBJECTS でバケット内のオブジェクトを表示します。
SELECT object_name, bytes
FROM dbms_cloud.list_objects(
location_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/c4u04/b/building_blocks_utilities/o/support-site/'
);
2-3. AIプロファイルの作成
今回はOCI Generative AIを使用します。
※前提でADBの構成をした際にOCI Generative AIに接続するためのクレデンシャルは作成済みの状態となっており、ポリシーの作成も済んでいます。
以下を実行し、SUPPORT_SITE という名前のAIプロファイルを作成します。
BEGIN
dbms_cloud_ai.create_profile (
profile_name => 'SUPPORT_SITE',
description => 'contains customer support information about using the moviestream application, including managing the account, playback, network and device compatibility issues',
attributes =>
'{
"provider": "oci",
"credential_name": "OCI$RESOURCE_PRINCIPAL",
"region": "uk-london-1",
"vector_index_name": "SUPPORT"
}'
);
END;
※今回ロンドンを使用するため、リージョンは uk-london-1 としていますが、参考にする場合は使用するリージョンに合わせて書き換える必要があります。
2-4. 作成したSelect AIプロファイルの確認
2-3で作成した SUPPORT_SITE プロファイルを確認するために、以下を実行します。
SELECT *
FROM user_cloud_ai_profiles;
事前準備の際に作成済みのGENAIプロファイルとともに SUPPORT_SITE プロファイルが表示されているので、無事作成されたことが確認できました。
また、以下を実行することでプロファイル属性を確認することができます。
SELECT *
FROM user_cloud_ai_profile_attributes;
3. ベクトル索引の作成
3-1. 作成するベクトル索引の作成
dbms_cloud_ai.create_vector_index プロシージャを使用し、2-2. moviestreamユーザーでSQLワークシートにログイン で確認したWebサイトのファイルを含むObject StorageのURIをロケーションとして指すベクトル索引を作成します。
BEGIN
dbms_cloud_ai.create_vector_index(
index_name => 'SUPPORT',
attributes => '{"vector_db_provider": "oracle",
"location": "https://objectstorage.us-ashburn-1.oraclecloud.com/n/c4u04/b/building_blocks_utilities/o/support-site/",
"profile_name": "SUPPORT_SITE",
"vector_table_name":"support_site_vector",
"vector_distance_metric": "cosine"
}'
);
END;
/
3-2. パイプラインの確認
先ほどのステップで、索引を最新の状態に保つパイプラインも作成されます。
以下SELECT文で確認します。
SELECT pipeline_id, pipeline_name, status, last_execution, status_table
FROM user_cloud_pipelines;
3-3. STATUS_TABLEの名前をコピー
実行したSQL文の結果から、STATUS_TABLEの名前をコピーします。
3-4. STATUS_TABLEをクエリする
コピーしたSTATUS_TABLEの名前を以下のSELECT文に当てはめて実行します。
SELECT *
FROM PIPELINE$5$21_STATUS;
ステータスを確認すると、全てCOMPLETEDであることがわかります。
3-5. パイプライン属性情報を取得する
以下SELECT文を実行し、作成されたパイプラインの属性情報を確認します。
SELECT *
FROM user_cloud_pipeline_attributes;
3-6. パイプライン履歴の表示
以下SELECT文でパイプライン履歴を確認します。
SELECT *
FROM user_cloud_pipeline_history;
USER_CLOUD_PIPELINE_HISTORYには実行中のジョブの状態が表示され、パイプラインの状態をモニターすることができます。
ステータスを確認すると、SUCCEEDEDであることがわかります。
3-7. support_site_vector表の確認
以下を実行し、チャンクとベクトル埋め込みが含まれるベクトル表のテーブル構造を確認します。
desc support_site_vector;
以下SELECT文でベクトル表の中身を確認します。
SELECT *
FROM support_site_vector;
前編は以上となります。後編では、今回構築したアプリを実際に使ってみます。
参考情報
Oracle LiveLabs
・Develop AI RAG Apps with Autonomous Database Select AI
Speaker Deck
・Oracle Autonomous Databaseを使ったAI活用入門
OCIチュートリアル
・108 : SELECT AI with RAGを試してみよう
Oracle Autonomous Databaseドキュメント
・検索拡張生成(RAG)でのSelect AI
オラクルエンジニア通信
・Autonomous Databaseでの検索拡張生成(RAG)を使用したSelect AIの発表