OCI入門(2) OCI 生成AIエージェントを使ったRAGを作成してみた

# はじめに
　OCIでは、AI に関する機能が豊富に用意されており、RAG についても簡単に作成できます。今回は、以前に  [AWS Bedrock のナレッジベースを使ったRAGを検証](https://qiita.com/tech-nami/items/fd1cacc5815cba178f38) にて検証したデータを使って、OCI にてナレッジベースと生成AIエージェントを作成して、同様の検証をしてみたいと思います。

# RAG 用文書のストレージへのアップロード
　まず、RAG の作成の前に、ストレージに RAG 対象文書を準備します。ナビゲーションメニューボタン（三本線）をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/e68a32fa-565e-49c8-a614-2e3893e14f32.png" width=80%>

　ナビゲーションメニューが表示されるので、「ストレージ」「バケット」の順でクリックします。
 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/70ce26dc-1865-41de-a523-cc7e60f53050.png" width=80%>

 オブジェクト・ストレージの画面が表示されるので、「バケットの作成」ボタンを押します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/6968fd27-4d2b-47e9-a6bc-6e56bb5e496b.png" width=80%>

 バケットの作成画面が表示されるので、「バケット名」に適当な名前を入力します。
 その他の設定はそのままとして、「作成」ボタンを押します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/7fb6c9c6-4f40-49c9-857e-b741fd1593b9.png" width=80%>

 バケットが作成されます。作成したバケット名のリンクをクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/38c41435-b057-4d21-afcc-90c86c67c556.png" width=80%>

 バケット内のオブジェクト一覧の画面になりますので、「アップロード」ボタンを押します。　

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/500a6c7c-43a9-4b9e-8c04-5855e20737b8.png" width=80%>

 アップロードするファイルを選択してアップロードすると、オブジェクト一覧にアップロードしたファイルが表示されます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/9f9fcfeb-9ea4-470f-9cdb-151ed9bc4456.png" width=80%> 

（なお、Excel のファイルをアップロードしようとしましたが、今回の生成AIエージェントで扱えるのが PDF かテキストのみとのことで、Excel を PDF にして読み込ませました）

# 生成AIエージェントの作成
　続けて、生成AIエージェントの作成を行います。ナビゲーション・メニューより、「アナリティクスとAI」「生成AIエージェント」の順でクリックします。
 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/8ccd61fe-73bd-41b2-94a4-6041ec7709a2.png" width=80%>

　生成AIエージェント画面が表示されるので、「エージェントの作成」ボタンを押します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/6aaffdb8-6836-4db9-bb83-1a59a8db168a.png" width=80%>

　エージェントの作成画面では、エージェントの名前を入力します。（他の項目はデフォルトで設定されているままとしますが、もちろん指定も可能です）「次」ボタンを押します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/daaafe65-ddac-450d-bd3b-707f2f3b2ae9.png" width=80%>

　次に、ツールの追加画面になります。「ツールの作成」ボタンを押します。
 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/4523fe66-a5f9-497a-920e-f513fdbc629b.png" width=80%>

　ツールの作成画面になります。「RAG」を選択します。
 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/183a6082-064d-4525-bbb4-1004be44366a.png" width=80%>

　RAGの構成画面になります。RAGの「名前」と「説明」を入力し、「ナレッジ・ベースの追加」ボタンを押します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/6105dd01-a12b-470c-ac6d-45121403ecb3.png" width=80%>

　新規ナレッジ・ベース画面になります。ナレッジベースの「名前」を入力、データ・ストア・タイプに「オブジェクト・ストレージ」を選択、ハイブリッド検索の有効化にチェックをして、「データ・ソースの指定」ボタンを押します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/e0ce0f62-b276-44ae-a8ed-7083401ac194.png" width=80%>

　データ・ソースの指定画面になります。データ・ソースの「名前」を入力し、マルチモーダル解析の有効化をチェック、データ・バケットを選択（作成したバケット名を選択）、アップロードした RAG 用ファイルを選択（チェック）し、「作成」ボタンを押します。
 　
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/057c0887-41d0-44b2-b067-d863d88af3a2.png" width=80%>

　ナレッジ・ベースの追加画面に戻り、ナレッジ・ベースの作成に入ります（私の場合概ね20分程度かかりました）
 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/1c28fd7e-43ee-42e4-8199-49cd061e49c7.png" width=80%>

　ナレッジ・ベースの作成が完了すると、ライフサイクルの状態が「アクティブ」になります。ナレッジベースのチェックボックスをチェックし、「ツールの作成」ボタンを押します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/b90ccef7-d44d-47e6-93bd-d11a1813539a.png" width=80%>

　ツールの作成が終わると、エージェントの作成画面に戻ります。ツール一覧に、作成したツールが表示されていることを確認し、「次」ボタンを押します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/218c27d3-95d3-4b98-9bf5-abd4aaa3b47c.png" width=80%>

　エージェント・エンドポイントの設定画面になります。ここでは、主にガードレールの設定を行います。今回は実験なので、この設定は特に変更せず、「次」ボタンを押します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/ef7b8623-a2d1-4c13-b536-5d23f9e57beb.png" width=80%>

　最後に、確認および作成画面になります。設定した内容が表示されますので、確認の上「エージェントの作成」ボタンを押します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/06bdc518-941f-48ed-afb1-54f64e09bd1e.png" width=80%>

　あまりこれまでに触れられていませんが、この RAG では Llama3 を使っているらしく、ライセンスの確認画面が表示されますので、同意にチェックし「送信」してください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/0137ba41-5b14-4de0-b44c-ff37fa611124.png" width=80%>

　いよいよエージェントの作成に入ります。（私の環境では10-15分程度かかりました）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/d7e2598e-9ff4-495f-8fd7-87bf42883be8.png" width=80%>

　エージェントの作成が完了すると、ライフサイクルの状態が「アクティブ」になりますので、「チャット」をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/be03f7de-908f-40b4-9fc7-175339fd4a67.png" width=80%>

　チャット画面になります。まずエージェントを選択します。
 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/2c8ff6e8-2b41-4f4c-91b4-e3e9d0e609f2.png" width=80%>

　続けてエージェント・エンドポイントを選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/13fa1ca8-32df-4149-8cd3-f9735b913b47.png" width=80%>

# エージェントを試してみよう
　チャットを試してみましょう。今回の RAG では、以前の記事 [AWS Bedrock のナレッジベースを使ったRAGを検証](https://qiita.com/tech-nami/items/fd1cacc5815cba178f38)にて検証したクラスの成績表データを使用しています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/3405dadc-fb80-47d2-b3ba-2a0239062194.png" width=80%>

　RAG を用いた質問への回答ができました。今回その他にも、以前の記事の際の AWS からの請求書も読み込ませていますので、それらの質問についても行ってみました。（下記のやり取りはよくわからないとは思いますが、全問正解でした！）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/df67539c-4fa3-427c-a6ec-0dcab6d59831.png" width=80%>

以上になります。最後まで見ていただき、ありがとうございました。

# まとめ
　今回は、以前に [AWS Bedrock のナレッジベースを使ったRAGを検証](https://qiita.com/tech-nami/items/fd1cacc5815cba178f38) にて検証したデータを使って、OCI にてナレッジベースとエージェントを作成して、同様の検証をしてみました。Excelがダイレクトに読み込めないところは少し残念ですが、PDF変換したデータを使って、おそらくチャンクを跨っているのではないかと思うような質問を行っても適切に回答されました。結構使えるのでは？と思いましたので、引き続き調査していきたいと思います。
　もし参考になったと思われた場合は、是非「いいね」を押してもらえると励みになります。
 
# 続き・・・Webアプリにしてみた
　今回は OCIの生成AIエージェントのチャットからエージェントを試すところまででしたが、コンピュートで Webサーバを作成して、Webからこのエージェントを使ってみるところまで実験できましたので、今後公開していきます。
 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822494/c96cad49-8e94-4db1-8f46-9fa8da805214.png" width=90%>