DataRobot生成AIハンズオンの人気テーマ「RAGアプリケーションの運用監視」を解説！

### 1. はじめに
こんにちは、DataRobotのデータサイエンティストの新名、長野、菅原です。DataRobotでは、生成AI活用を実際に体感いただけるハンズオンを、定期的に開催しています。本記事では、実際に開催したハンズオンの中で、特に好評だったテーマであるDataRobotを活用した「RAGアプリケーションの運用監視」について、ご紹介します。

生成AIやRAG技術が登場して一定期間が経ち、RAGの構築方法については広くノウハウが共有されるようになりました。一方で、「精度の高いRAGを作ったあと、どのようにメンテナンスすればよいのか？」、「RAGで使用するデータベースはひとつに統合すべきか、それとも複数に分けるべきか？」など、構築後の運用フェーズにおける疑問や課題に、ユーザーの関心が移りつつあると感じています。

実際、こうした運用面での課題や疑問に対して、具体的な解決案を提示するハンズオンを開催したところ、たくさんの方にご参加いただき、その重要性を再認識したところです。

※RAGの構築方法に関しては[「RAG(Retrieval-Augumented Generation)構築と応用|生成AI×DataRobot活用術」](https://www.datarobot.com/jp/blog/rag_construction_and_application/)や[「生成AI最前線：DataRobotを用いた実践RAG構築」](https://www.datarobot.com/jp/webinars/gen_ai_rag_20240221/)で詳しく解説していますので、本記事とあわせてぜひご参照ください。

### 2. RAGアプリケーションの運用監視
RAGアプリケーションの運用監視を実現するためには、以下の要素が重要です。
- ベクターデータベースの更新
- RAGのルーティング
- モニタリング

ここからは、具体的な「RAGアプリケーションの運用監視」について解説していきます。

#### 2.1 [運用監視①]ベクターデータベースの更新
最初に、とある交通事故に関するデータセットを使用し、一つひとつのドキュメントを個別に精査するのではなく、RAGを活用した柔軟な事例の検索や要点の抽出が行える運用方法をご紹介します。

![nagano01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/3ce613fa-2b8b-4904-8ab5-138bfa52ec66.jpeg)

本記事ではDataRobotの基本的な機能については割愛しますが、DataRobotを活用すると、わずか数クリックの操作だけで、誰でも簡単に以下のスクリーンショットのようなRAGアプリケーションを構築することができます。このアプリケーションはDataRobotユーザー以外にも簡単に展開することができ、コードベースで記述されているため、要件に応じて柔軟にカスタマイズが可能です。

![nagano02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/36268e91-ba0c-47be-8d2f-311a406a41d3.jpeg)

ここまで、主にRAGの構築に関する内容を説明してきましたが、実際のユースケースでは、利用するデータベースが日々更新されるため、それに伴って回答する内容も最新のデータに対応していく必要があります。たとえば、都市部におけるシェアリングサービスの普及によって、自転車や電動キックボードなどの新たな交通手段が増加し、従来の交通パターンが変化しています。特に、電動キックボードサービスの登場は、移動手段として急速に普及しており、それに伴ってこれまでの交通事故のパターンも変わりつつあります。交通データが、こうした新しいトレンドを日々取り込み続けることで、ベクターデータベースもそれらを反映した最新の状態を維持し、より正確で実用的な回答を提供できるようになるのです。

DataRobotを使えば、ベクターデータベースの更新や、それに紐づくRAGアプリケーションの更新をGUI上で簡単に行うことができます。これにより、データ更新への迅速かつ柔軟な対応が可能になります。

次に、子供に関連した交通事故データのみでアプリケーションを構築した後、新たに高齢者に関する交通事故のデータを追加し、その変更を簡単に反映する手順を実際の操作を通じて、ご紹介します。

![nagano03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/3e75f5e0-4af6-4798-84eb-5dccbc50321b.jpeg)

具体的な操作手順としては、GUI上で ［ベクターデータベース］＞［ベクターデータベースのアクション］＞［このバージョンから新しいバージョンを作成］ を実行します。ベクターデータベース全体を更新するか、新しく追加された差分だけを更新するか、あるいはベクターデータベース自体は更新してもアプリケーションには反映させないなど、細かな指定をすべてGUIで直感的に行うことができます
※ベクターデータベースの更新方法についてさらに詳しく知りたい場合は、[ドキュメント（ベクターデータベースのバージョニング）](https://docs.datarobot.com/ja/docs/gen-ai/vector-database/vector-versions.html)をご参照ください。

![nagano04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/d831705f-94ef-4343-a68d-2191ddd14710.jpeg)

以下の図は、実際に得られた結果を比較したものです。左側はベクターデータベース更新前のため、高齢者に関する質問に対して適切な回答が得られていませんが、更新後の右側では新たに追加した高齢者関連のデータをもとに、正しく引用情報が取得できていることが分かります。

![nagano05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/dcff8187-b3a9-4050-ba49-afdbffdcb25a.jpeg)

最後に、発展的ですが押さえておくべき大事なポイントとして、「ベクターデータベースの定期更新」についても、ご紹介します。

実際の業務では、たとえば「最新の商品マニュアルやサポート情報を毎週定期的に追加・更新し、古くなった情報を取り除くことで、顧客問い合わせ時に常に最新かつ正確な情報を迅速に提示できるようにしたい」といったケースがあります。このように、ベクターデータベースを定期的に更新し、外部情報をメンテナンスしやすいRAGを活用して常に最新の状態を保つことで、回答精度や信頼性を継続的に高めることが可能になります。  

DataRobotでは、GUIだけでなくPythonを使ったCUIでの操作にも対応しており、さらにCodespace（コード実行環境）と組み合わせることで、ベクターデータベースの更新作業をスケジュール化し、自動的に実行することが可能です。

※ベクターデータベースの更新をPythonで実行する詳細な方法については、DataRobotのPython APIドキュメント内の[VectorDatabase.createメソッド](https://datarobot-public-api-client.readthedocs-hosted.com/en/latest-release/gen-vector-databases.html#datarobot.models.genai.vector_database.VectorDatabase.create)をご参照ください。

![nagano06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/3ea08253-ef75-401b-a0b4-e7c960044b1a.jpeg)

#### 2.2 [運用監視②]適切なRAGのルーティング
ここからは、運用監視の関連トピックとして、適切なRAGへのルーティングについてご紹介します。

RAGアプリケーションの精度やメンテナンス性を高めるには、一般的にトピックごとにRAGを分割する方が効果的です。しかし、実際にRAGを利用するユーザーの視点に立つと、複数のRAGから質問対象をユーザー自身が選択するようなインターフェースは避けたいところです。

そこで、この課題を解決するために、ユーザーからのプロンプトを適切なRAGへ自動的に分類する「ルーティング」方法を採用します。ルーティングには、ルールベースモデル、予測AI、生成AI、クラスタリングなど、さまざまな手法が考えられます。RAGアプリケーションを実際に触るユーザー目線では、用途ごとに別々のアプリケーションを使う必要はなく、一つのインターフェース上で質問をすることができます。

では、DataRobotの予測AIを用いて「新NISAに関する質問」か「ふるさと納税に関する質問」かを事前に分類するケースで詳しく解説します。

ルーティングに利用する分類器の使い分けとして、おおまかに以下の方針を推奨しています。なお、DataRobotでは予測AIの構築も簡単に行えるため、これらの手法を比較検討しながら実運用での評価をスムーズに進めることが可能です。

**⚫︎ ルールベースモデル**
 特定のキーワードや明確なルールで分類できるケース

**⚫︎ 予測AI**
 過去のログデータが豊富で、分類用のフラグを蓄積できているケース

**⚫︎ 生成AI・AIエージェント方式**
 十分なログデータが蓄積されていないケース（APIコストが高くなる傾向あり）

![nagano08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/de8798a6-211f-49f1-9178-460da76e6076.jpeg)
 
以下の図は、DataRobotのアプリケーション上で「新NISA」と「ふるさと納税」に関する質問をそれぞれ行った事例です。ユーザーは同一のインターフェースから質問していますが、内部では予測AIによるルーティング処理が行われ、それぞれ別のベクターデータベースを参照しています。また、ユーザーは「どのデータベースを参照したか」という情報も回答と合わせて確認可能です。

前述のとおり、DataRobotはPythonを使ったアプリケーションのカスタマイズにも対応しています。この事例でも、ルーティング処理とインターフェースの細かな調整（参照したベクターデータベースの表示）をPythonコードで実現しています。

なお、この例では簡略化のために2つのベクターデータベースを使用していますが、実際の業務では要件に応じて10以上のRAGへのルーティングを行うことも珍しくありません。

![nagano09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/78df67a5-ae49-40f3-be9f-b1934aa22401.jpeg)

### 3. LLMホスティングとマルチモーダル対応RAG
ここからは運用監視に加え、特にAI実務者からの反響の高かったDataRobotの生成AI機能について、ピックアップしてご紹介します。

#### 3.1 LLMホスティング
DataRobotでは、GPT-4oなど外部APIを利用したLLMの活用に加えて、新たにオープンソースLLMなどのモデルを直接プラットフォーム上でホスティングできる機能が追加されました。これにより、利用企業は外部のAPIに依存することなく、自社のニーズや要件に合ったモデルを自由に選択し、より柔軟な生成AI環境を構築できるようになりました。

※具体的な手順や活用イメージについては、ブログ記事[「DataRobotのPlaygroundにLLMをホスティングしてみた」](https://qiita.com/DataRobot_PR/items/a5260db621a6f8cffaaf)で詳しく解説していますので、ぜひこちらも併せてご覧ください。

![nagano010.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3864834/5d006366-b285-4243-8e99-36be2df8258a.jpeg)

#### 3.2 マルチモーダル対応RAG
RAGを構築する際の課題の一つとして、PDFなどに含まれる表形式データを適切に前処理することが挙げられます。従来のRAGでは、表形式データに対しては、単純なテキスト抽出では構造や意味が失われてしまうため、表の構造を維持した状態で処理することが技術的に難しいケースが多くありました。実際に、私たちのユーザー皆様からも「テキストデータだけではなく表形式のデータもあるのでRAGがうまくできない。前処理はなるべく自分でしたくない」という課題が多く聞かれます。

この課題に対し、DataRobotでは、「AIアクセラレーター」と呼ばれるPythonコードのアセットを提供しています。これをDataRobotのプラットフォームと組み合わせることで、従来の方法よりも効率的かつ高精度に表形式データを認識・構造化し、RAGモデルに組み込むことが可能になります。

具体的な処理方法としては、GPT-4oなど画像処理が可能なLLMを活用し、PDFなどのインプットファイルに含まれる表を画像として読み込みます。その後、AIアクセラレーターにより画像化された表データを構造化された形式に変換して、RAGモデルが適切に利用できるように整えています。

※本AIアクセラレーターは現在公開準備中です。公開までもうしばらくお待ちください。

### 4. まとめ
今回は、DataRobot生成AIハンズオンの中から、特に反響の大きかったテーマである「RAGアプリケーションの運用監視」を中心に、ご紹介しました。  

DataRobotを活用することで、RAGモデルの構築だけでなく、実際に生成AIを業務に適用する際に課題となりやすい運用監視についても、一気通貫かつ効率的に対応できることをご理解いただけたかと思います。今後も、DataRobotが皆様の生成AIプロジェクト推進の一助となれば幸いです。引き続き、生成AIの最新情報についても積極的に発信してまいりますので、ぜひご期待ください。

なお、DataRobot生成AIハンズオンは定期的に開催しており、SNSでご案内しております。ご興味のある方は、ぜひフォローしてください。（[X](https://x.com/DataRobot_jp)、[Facebook](https://www.facebook.com/datarobotjp)、[Linkedin](https://www.linkedin.com/showcase/datarobot-japan/)）