はじめに
本記事は、無償の学習コンテンツであるOracle Live Labsの以下ワークショップをもとにした内容の後編となります。
Develop AI RAG Apps with Autonomous Database Select AI
前回、Select AI with RAGを使ってRAGアプリを作成ために、AIプロファイルやベクトル索引の作成をしました。
目次
1. Select AI APIを使って質問をする
Select AIでは、自然言語プロンプトを使用してデータベースと対話するために使用できるactionパラメータがいくつかあります。
| パラメータ | 用途 |
|---|---|
| runsql | (デフォルト)自然言語プロンプトからSQLコマンドを実行 |
| showsql | 自然言語プロンプトのSQL文を表示 |
| explainsql | プロンプトから生成されたSQLを自然言語で説明 |
| narrate | 結果を会話形式で生成 |
| chat | 一般的なAIチャット(データベースへの問い合わせはせず、LLMに直接プロンプトを渡す) |
詳細は、以下のドキュメントをご参照ください。
Select AIでは、以下の図の例のようなイメージでRAGを実装しています。
<narrateパラメータを使用した場合の例>
※[OCI Technical Deep Dive] Autonomous Database 技術アップデートより抜粋
1-1. 会話形式の回答生成
Select AIのnarrateオプションを使って会話形式の回答を取得します。
select dbms_cloud_ai.generate (
profile_name => 'support_site',
action => 'narrate',
prompt => 'how do I unsubscribe from the service?'
) as support_question;
回答として以下の結果が表示されました。
To unsubscribe from the service, log in to your account and navigate to the subscription or billing section. Look for an option to cancel your subscription and follow the prompts. Ensure you read and understand any terms regarding cancellation, such as potential fees or loss of access to services. If you encounter any issues, contact customer support for assistance.
Sources:
- account-billing-issues.html (https://objectstorage.us-ashburn-1.oraclecloud.com/n/c4u04/b/building_blocks_utilities/o/support-site/account-billing-issues.html)
- subscription-login-issues.html (https://objectstorage.us-ashburn-1.oraclecloud.com/n/c4u04/b/building_blocks_utilities/o/support-site/subscription-login-issues.html)
1-2. チャンクの類似度を確認
runsqlアクションを実行し、各チャンクとその類似度(またはベクトル距離)スコアを確認します。
select dbms_cloud_ai.generate (
profile_name => 'support_site',
action => 'runsql',
prompt => 'how do I unsubscribe from the service?'
);
1-3. SQL文の確認
showsqlアクションを実行し、ベクトル検索を実行するために使用されたSQLコマンドを確認します。
select
dbms_cloud_ai.generate (
profile_name => 'support_site',
action => 'showsql',
prompt => 'how do I unsubscribe from the service?'
) as support_question;
2. Select AIデモアプリを使う
前編の前提において、Resource ManagerでSelect AI APEXデモアプリがインストールされている状態です。このステップでは、デモアプリに対して質問をしてみます。
2-1. Select AIデモアプリにアクセスする
OCIコンソールから「リソース・マネージャ」→「スタック」→「スタックの詳細」→「ジョブの詳細」→「出力」からデモアプリのリンク、ADBユーザー名およびパスワードが確認できます。
APEXのデモアプリのリンクをコピーしてアクセスします。
2-2. AIプロファイルの選択
ADB Chatページに飛ぶと、AI設定パネルが表示されます。
ドロップダウンのリストから、使用するAIプロファイルを選択します。前編で作成したSUPPORT_SITEプロファイルを選択して閉じます。
プロファイルを選択すると、チャットが使用できるようになります。
データベースにあるデータを元に回答を取得したい場合はページ下部の Ask your database チェックをオンにし、インターネットの情報をもとにした一般的な回答を取得したい場合はオフにして使用します。
2-3. デモアプリで質問をする (一般的な回答)
例えば、ワークショップの例にならって以下の問い合わせを、Ask your databaseがオフの状態で投げてみます。
"My movie is frozen on the opening scene"
(「最初のシーンで映画の映像がフリーズしてしまう」という内容)
インターネット上の情報を元にした回答なので、一般的に考え得る策が生成されました。
ちなみに、試しに日本語でも聞いてみたところ以下の回答が出ました。
2-4. デモアプリで質問をする (DBのデータを元にした回答)
全く同じ問い合わせを、Ask your databaseがオンの状態で投げてみます。
MOVIESTREAMのサービスに特化した、具体的な回答が得られました。
また、ソースのリンク(以下)も提示してくれているのでそちらも併せて確認できます。
リンク先を確認すると、"Issue: Video Not Playing at All" の項目に記載されている内容を元にした回答であることがわかります。
<応用>
回答の内容で対応しても解決しなかった場合を想定して、いくつか追加で質問をしてみます。
2つ追加で質問をしましたが、2つ目では最終的にはカスタマーサポートに問い合わせるようにガイドされています。
まとめ
今回はOracle LiveLabsのワークショップの内容に沿って、Select AI with RAGを使った簡易的なRAGアプリを作成しました。
自然言語でデータベース内のデータに対して問い合わせができるSelect AIの機能とRAGの仕組みを組み合わせることで、ハルシネーションのリスクを軽減することができます。
参考情報
OCIチュートリアル
・111: SELECT AIを試してみよう












