はじめに
生成AIを使ったアプリケーションを作る際、よく登場する構成の一つが RAG(Retrieval-Augmented Generation) です。
RAGを利用すると、LLMがもともと持っている知識だけではなく、自分たちが用意したドキュメントやナレッジを検索し、その内容をもとに回答を生成できるようになります。
一方、RAG環境を自分で一から構築しようとすると、
- ドキュメントの取り込み
- Embedding
- Vector Search
- LLMとの連携
- Agentの実装
など、いくつかのコンポーネントを組み合わせる必要があります。
今回は Oracle AI Data Platform のVisual Builderを使って、プログラムを書かずにRAGを利用するAgentを作成してみます。
また、動作確認用のサンプルとして、架空のロケットエンジン「OraBooster」について記載したテキストファイル rocket.txt をRAGの検索対象として利用します。
公式ドキュメントはこちらです。
今回作るもの
今回は、以下のようなシンプルなRAG構成を作ります。
ユーザー
↓
Chat Trigger
↓
Agent
↓
RAG Tool
↓
rocket.txt
ユーザーがOraBoosterについて質問すると、AgentがRAG Toolを利用して rocket.txt の内容を検索し、その情報をもとに回答する、という構成です。
例えば、
OraBoosterの姿勢制御にはどのような技術が使われていますか?
と質問すると、rocket.txt から関連情報を検索し、その内容をもとに回答してもらいます。
今回は LLMがもともと知っているはずのない架空の製品情報をサンプルにすることで、RAGから取得した情報を使って回答できているか確認しやすくしています。
今回使用するサンプルデータ
RAGの検索対象として、rocket.txt というテキストファイルを用意しました。
内容としては、架空のロケットエンジン OraBooster の技術について記載しています。
主に以下のような情報が含まれています。
- 量子ダイナミックス・プラズマ・ブースター
- ナノファイバー製の外殻
- ハイパーフォトン・ジャイロスコープ
- バイオニック・リアクション・レスポンダー
例えば、推進機構については「量子ダイナミックス・プラズマ・ブースター」が使われており、プラズマを生成して超高速で加速させるという設定になっています。
また、ロケットの姿勢維持には「ハイパーフォトン・ジャイロスコープ」、異常な振動や動きの検知と自己修復には「バイオニック・リアクション・レスポンダー」が使われている、という内容になっています。
このファイルをOracle AI Data Platformへ登録し、RAGから検索できるようにします。
rocket.txtの内容
当社が開発したロケットエンジンである OraBooster は、次世代の宇宙探査を支える先進的な推進技術の象徴です。その独自の設計は、高性能と革新性を融合させ、人類の宇宙進出を加速させるための革命的
な一歩となります。
このエンジンの核となるのは、量子ダイナミックス・プラズマ・ブースターです。このブースターは、量子力学の原理に基づいてプラズマを生成し、超高速で加速させます。その結果、従来の化学反応よりもはるかに高い推力を発生し、遠く離れた惑星や星系への探査を可能にします。
さらに、エンジンの外殻にはナノファイバー製の超軽量かつ超強度の素材が使用されています。この素材は、宇宙空間の過酷な環境に耐え、高速での飛行中に生じる熱や衝撃からロケットを守ります。また、ハイパーフォトン・ジャイロスコープが搭載されており、極めて高い精度でロケットの姿勢を維持し、目標を追跡します。これにより、長時間にわたる宇宙飛行中でも安定した飛行軌道を維持し、ミッションの成功を確保します。
さらに、バイオニック・リアクション・レスポンダーが統合されています。このシステムは、人工知能と生体認識技術を組み合わせ、ロケットの異常な振動や動きを検知し、自己修復機能を活性化します。
総じて、この新開発のロケットエンジンは、革新的な技術と未来志向の設計によって、宇宙探査の新たな時代を切り開くことでしょう。その高い性能と信頼性は、人類の夢を実現するための力強い支援となることでしょう。
Agentを作成する
まずOracle AI Data PlatformのWorkspaceを開きます。
左側のメニューから Agents を選択し、Create Agent をクリックします。
Agentの名前とDescriptionを入力します。
今回は例えば以下のようにしました。
Name:
RAG_DEMO_AGENT
Description:
rocket.txtの内容をRAGで検索して回答するAgent
Agent flow authoring modeでは Visual builder を選択します。
これで、Pythonなどのプログラムを書くのではなく、Visual Builderを使ってAgentを構築できます。
Visual Builderを確認する
Agentを作成するとVisual BuilderのCanvasが表示されます。
Visual Builderでは、左側のPaletteから必要なNodeやToolを配置し、それらを接続することでAgentの処理を構成できます。
今回はRAGの基本的な動作を確認したいので、シンプルに以下の構成を作ります。
Chat Trigger
↓
Agent
↓
RAG Tool
Chat Triggerを配置する
最初に Chat Trigger をCanvasへ配置します。
Chat Triggerはユーザーからのメッセージを受け取るAgent Flowの入口です。
ユーザー
↓
Chat Trigger
Visual Builder上では「Message」と表示されます。
Agentを配置する
続いて Agent をCanvasへ配置します。
Chat TriggerとAgentを接続します。
Chat Trigger
↓
Agent
Agentでは利用するRegionやModel、AgentへのInstructionsなどを設定します。
今回はRAGを使って rocket.txt の内容から回答してほしいため、例えば以下のようなInstructionsを設定します。
あなたはロケットエンジンに関する質問に回答するアシスタントです。
ユーザーから質問を受け取ったら、RAG Toolを使用して関連する情報を検索してください。
取得したドキュメントの情報をもとに回答してください。
ドキュメントから回答を判断できない場合は推測せず、
情報が見つからなかったことを回答してください。
これによって、Agentに「自分の知識だけで回答するのではなく、RAG Toolを使って情報を確認してほしい」という役割を与えます。
RAG Toolを追加する
続いて今回のメインとなる RAG Tool を追加します。
Visual BuilderのTool一覧からRAG ToolをCanvasへ配置し、Agentから利用できるように接続します。
Chat Trigger
↓
Agent
↓
RAG Tool
RAG Toolでは、検索対象となるデータとして先ほどの rocket.txt を利用できるように設定します。
これで、
ユーザーの質問
↓
Agent
↓
関連情報が必要
↓
RAG Tool
↓
rocket.txtを検索
↓
検索結果をAgentへ返す
↓
回答を生成
という流れになります。
Playgroundで質問してみる
構成が完成したら、Playgroundから実際に質問してみます。
まず、rocket.txt に含まれている情報について質問します。
質問1:OraBoosterについて聞いてみる
OraBoosterとは何ですか?
rocket.txt にはOraBoosterが次世代の宇宙探査を支えるロケットエンジンとして説明されているため、その内容に沿った回答が返ってくれば成功です。
もう少し具体的な質問をしてみる
続いて、より具体的な技術について質問します。
OraBoosterの推進機構について教えてください。
サンプルファイルでは、エンジンの核となる技術として 量子ダイナミックス・プラズマ・ブースター が説明されています。
そのため、RAGが正しく動いていれば、この技術についての情報を含んだ回答が生成されるはずです。
姿勢制御について聞いてみる
さらに別の箇所から情報を取得できるか確認します。
OraBoosterはどうやってロケットの姿勢を維持していますか?
rocket.txt では ハイパーフォトン・ジャイロスコープ が搭載されており、高い精度でロケットの姿勢を維持し、目標を追跡すると説明されています。
そのため、この情報を使った回答が返ってくれば、RAG Toolが関連する記述を取得できていることを確認できます。
自己修復についても聞いてみる
次は以下の質問をしてみます。
OraBoosterには異常を検知したときの自己修復機能はありますか?
サンプルファイルには バイオニック・リアクション・レスポンダー というシステムについて記載されています。
人工知能と生体認識技術を組み合わせ、異常な振動や動きを検知して自己修復機能を活性化する、という設定です。
このように、同じ rocket.txt の中でも質問によって異なる部分を検索し、回答へ利用できることを確認できます。
ドキュメントにないことも聞いてみる
RAGを試す際には、検索できる質問だけでなく、ドキュメントに答えがない質問も試しておくと分かりやすいです。
例えば、
OraBoosterの価格はいくらですか?
と質問してみます。
今回の rocket.txt にはOraBoosterの価格についての記載はありません。
そのため、AgentがInstructionsに従って推測せず、
提供された情報からはOraBoosterの価格を確認できません。
といった回答を返せるか確認します。
ここはRAG構成を作るうえで重要なポイントです。
検索結果にない情報までLLMがそれらしく補完してしまわないかを確認できます。
実際に触ってみた感想
今回試してみて特に分かりやすかったのは、AgentとRAGの関係をVisual Builder上で確認できることでした。
今回作った構成は、
Chat Trigger
↓
Agent
↓
RAG Tool
↓
rocket.txt
という非常にシンプルなものです。
それでも、
「姿勢制御について教えて」
↓
AgentがRAG Toolを利用
↓
rocket.txtから関連情報を検索
↓
ハイパーフォトン・ジャイロスコープの情報を取得
↓
回答を生成
というRAGの基本的な流れを確認できます。
特に今回のように、架空の製品や技術について書かれたファイルを使うと、LLMの一般知識ではなく、自分が登録したデータをもとに回答していることを確認しやすいと思います。
もう少し複雑な構成にもできる
今回はRAGの基本的な動きを確認することが目的だったため、単一Agentのシンプルな構成にしました。
Visual Builderでは、RAG以外のToolや複数のAgentを組み合わせることもできます。
例えば将来的には、
┌→ SQL Agent → SQL Tool
│
Chat Trigger → Supervisor
│
└→ RAG Agent → RAG Tool
↓
rocket.txt
のような構成も考えられます。
例えば、
OraBoosterの仕様を教えて
という質問はRAG Agentへ、
OraBoosterの今月の受注件数を教えて
という質問はSQL Agentへ振り分ける、といった使い方です。
こうすると、非構造化データはRAG、構造化データはSQLというように、質問に応じて異なるデータソースを利用するAgent構成へ発展させられます。
まとめ
今回は Oracle AI Data PlatformのVisual Builderを使って、プログラムを書かずにRAGを利用するAgentを作成してみました。
検索対象には、架空のロケットエンジン「OraBooster」について記載した rocket.txt を使用しました。
最終的な構成は非常にシンプルです。
Chat Trigger
↓
Agent
↓
RAG Tool
↓
rocket.txt
この状態で、
OraBoosterとは何ですか?
OraBoosterの推進機構について教えてください。
OraBoosterはどうやって姿勢を維持していますか?
自己修復機能について教えてください。
といった質問をすることで、登録したドキュメントの内容を検索しながら回答できることを確認できます。
また、
OraBoosterの価格はいくらですか?
のようにドキュメントに存在しない情報についても質問することで、RAGで取得できない情報に対してAgentがどのように振る舞うのか確認できます。
Visual Builderを使うことで、RAGの処理をコードとして実装するのではなく、「AgentにRAG Toolを持たせる」という形で視覚的に構成できるのが分かりやすいポイントでした。
まずは今回のような小さなテキストファイルから試し、動作を理解してから実際の社内ドキュメントやナレッジへ広げていくと、RAGの仕組みをつかみやすいと思います。
参考
- Oracle AI Data Platform - Agent Creation
https://docs.oracle.com/en/cloud/paas/ai-data-platform/aidug/agent-creation.html









