StreamlitでRAGを作ってみた

はじめに

今回はStreamlitを使ってRAGを作成したので、その過程を書いていきます。

元々RAGに興味があり、Streamlitの学習が必要となったので良い機会なのでどちらもやってみることにしました。

Streamlitは、Pythonで簡単にWebアプリケーションを作成できるオープンソースのライブラリ

1. Streamlit学習

まず最初にStreamlitの仕様について学習しました。
根本的にどういった方向性のフレームワークなのかを確認します。

streamlitを使ったお手軽Webアプリ開発 #Python – Qiita
個人的にはこちらの記事が参考になりました。
基本的なコンポーネントを羅列してくれているのでどのようなものがあるか分かりやすかったです。

Markdownがそのまま表示できるのが面白いです。
自分は個人メモやAIの指示、様々なものにMarkdownを導入していて親しみがあります。
ヘッダーなどでわざわざ処理を変える必要がないのは楽ですよね、1ブロックで全て書けます。

ファイルのアップロードがあるのも良いです。
他のフレームワークでも当然あると思いますが、デスクトップアプリを作るようにファイルを処理に使えるのは親しみがあります。

Streamlit入門+応用 ~ データ分析Webアプリを爆速で開発する #Python – Qiita
【超簡単Webアプリ】streamlitでWebアプリを最速で作ってネット公開!〜 プログラミング初心者向け 〜 – YouTube
またStreamlitで開発したアプリは、GitHubにコミットしStreamlit Cloudと連携するとインターネットに公開できるようです。

2. RAGチャットボット

それではRAGチャットボットを作ります。

RAGの方式はFAISSを使ってベクトル検索します。
AIはGemini APIを使用して返答を作成します。

Antigravityにプロンプトを渡して作ってもらいました。

Streamlitにアップロード機能があったのでFAISSをアップロードできるようにしました。

例えば、3DCGモデリングソフトのヘルプ全文をFAISSにして使ってみました。

指示の仕方によってはまともな回答を答えてくれます。
しかし、「~の作り方を教えて」「~のレンダリング方法を教えて」など複雑な質問をすると、「その内容はヘルプに書かれていません」と返ってきます。

ツールの使い方はそれこそヘルプを見ればいいのでもっと汎用的なRAGにするためには様々な工夫が必要になります。

おわりに

StreamlitはこのようなPoCを作るのに適していそうだと感じました。
HTMLを知らなくてもそれなりの機能を実装できるのが良いです、Pythonのみで完結しています。
アイテムの配置などは、ただ機能を試すだけなら煩雑な作業ですからね。

最近はGemini APIの利用制限が厳しくなっているため、ローカルAIなどに移行していきたいですね。

次回はRAGについて学んだことを書いていきたいと思います。
今回の例ではソフトウェアのサポートとしてですが、そのためにはどのような改善が役立ちそうかを検討していきます。

投稿者プロフィール

MuramatsuYuki

関連記事

  1. pythonの導入 ~hellow worldの表示まで~

  2. Pythonを学習するにあたってやったこと

  3. Anaconda Navigatorを起動するとNavigator E…

  4. AnacondaでPython3をインストールする

  5. Anacondaで仮想環境を作成して、OpenTerminalでライブ…

最近の記事

制作実績一覧

  1. Checkeys