【ローカルLLM検証 環境構築編#6】Open WebUIでRAGを使ってみる

環境構築

今回は下記の⑤を実施します。

Step内容目標実体は何か?
Ollama導入ローカルLLMを動かすモデルを管理・実行するソフト
Qwen 3導入高性能な日本語モデルを使うLLM本体(モデル)
Open WebUI導入ChatGPTのような画面で使うChatGPTのような画面で使えるようにするソフト
Dify導入AIアプリ・エージェントを作るLLMをワークフローでアプリ化する
RAG知識として読み込ませる自分しかもっていない情報を検索するための外部データベース
AIエージェントドキュメント作成支援などを自動化する

経緯

 ローカルLLMを使っていましたが当然のことながらコンテキスト(記憶容量)はClaudeさん達には及ばず、チャットの結構早い段階で溢れてしまったようで、回答が途切れてしまいました。
そこでClaudeさんとも相談し、下記の方針をとってみることに。
 下記の中で、まずは今回Aを実施してみます。加えて、OpenWebUIが何をできるのか調査するため、RAGの環境構築とともにB、Cも実施していきます。B、Cは別記事にします。

A ナレッジベース(RAG)で「自分専用の用語解説アシスタント」を作る
過去に作った既存の用語マップ記事(活性化関数マップ、正則化マップなど)をテキスト化してナレッジベースに放り込み、それを紐付けた専用モデルを作るとユーザーが都度ファイルを指定しなくても、AIが自動でナレッジから答えを探して回答してくれるようになります。「毎回トーン・階層構造が過去記事とズレる」という今の悩みの根本解決になり、かつ「ローカルLLMに自分の記事シリーズを学習させてみた」という記事ネタにもそのまま使えます。 

B カスタムモデル作成(Model Builder)で「用語マップ生成専用アシスタント」を固定化
Open WebUIにはOllama Modelfile相当のモデルファイルをGUIで作成・編集できるModel Builder機能があります。今回のように毎回「まとめマップ=俯瞰性重視・浅く広く」のような方針をプロンプトで説明し直すのではなく、システムプロンプト・パラメータ・①のナレッジを全部セットした専用モデルとして保存しておけば、次回からはモデルを選ぶだけで同じ品質の回答が得られます。「ローカルLLMに自分専用の"編集者"を作ってみた」という切り口の記事にもなります。

V Web検索連携で最新情報を踏まえた回答をさせる
最新版のOpen WebUIは複数モデルの切り替えに加えて、Web検索の標準化が進んでいます。ARIMAやDeepSeek-R1のような時事性のある技術トピックだと、モデルの学習データが古い場合があるので、Web検索をONにして「最新のベンチマーク結果を踏まえて構成案を出して」と頼めるようになります。次のnote記事テーマ(DeepSeek-R1の導入手順地図)とも直接絡められそうです。 

手順

 1.Open WebUIのワークスペースのナレッジベースに新規作成する

 2.ドラッグ&ドロップで、参照させたいファイルを格納する

事前準備自体はこれで終わりです。とてつもなく簡単。

チャットで使ってみる

 1.チャットの追加+ボタンでナレッジを追加する。これで本準備も完了

 さて、聞いてみましょう。ちなみにインプットしたのでは、Canvaで作成した図解をPDFにしたものです。基本的に文字で作った図解なのでPDF化すればテキストとして扱ってもらえる前提です。下記のようなnote記事に使用している図解です。

 意味があるかわからないだ、こんにちは!としてみたw

Q.

こんにちは!

A.

こんにちは!お元気ですか?何かお手伝いできることや、お話したいことはありますか?

やはり関係なかったですwすみません、ちゃんとしますw

Q.

RNNをテーマとして関連マップの構成案を考えてもらえませんか

おーw赤文字見てもらえればわかると思いますが、ちゃんと資料は参照してもらえてるみたいです。そして、情報がない場合は一般的な知識から取得してますね。もちろん、考えさせたいのでこれが正解です。

A.

提供されたコンテキストには「自己回帰分析関連マップ」[1]や「学習の最適化関連マップ」[2]に関する記載は含まれていますが、RNN(Recurrent Neural Network)に特化した関連マップの詳細は明記されていません。
そのため、一般的なAIの知識に基づき、学習ノートや図解記事用の**RNN関連マップ構成案**を提案します。

視覚的なつながりを重視した、中心から放射状に分岐する構成イメージです。

### RNN関連マップ構成案

**🔵 中心ノード: RNN (Recurrent Neural Network)**
*   **概要**: 時系列データやシーケンスデータを処理するためのディープラーニングモデル。隠れ状態(Hidden State)を持つことで「メモリ」のような機能を実現し、過去の情報を現在の状態に反映させることができる。

---

#### 🌿 分岐1: 基本仕組みと特徴
*   **重みの共有**: ニューラルネットワークの層ごとにパラメータを使い分けず、時間ステップごとの計算で同じ重み(Weight)を流用することで、入力の長さに柔軟に対応する。
*   **BPTT (Backpropagation Through Time)**: 時系列データを展開した状態での誤差逆伝播法。RNNの学習アルゴリズムとして重要。

#### ⚙️ 分岐2: 課題と発展モデル (Solutions)
*   **勾配消失問題**: データが長くなると、過去の情報が現在の出力にほとんど影響しなくなってしまう課題(爆発問題も存在する)。
*   **LSTM (Long Short-Term Memory)**: ゲート(入力・忘却・出力)を設け、重要な情報のみを長期記憶に残す仕組み。勾配消失を克服する代表格。
*   **GRU (Gated Recurrent Unit)**: LSTMの簡略化版。パラメータ数を減らしつつ同様の性能を発揮するユニット状態モデル。

#### 🌐 分岐3: 主な応用分野 (Applications)
*   **自然言語処理 (NLP)**: 言語モデル(次の単語予測)、機械翻訳、要約生成。
*   **音声・画像認識**: 音声の文字起こし、動画や手書き文字のシーケンス解析。
*   **時系列分析**: 株価予測、天候予報、需要予測など。

#### 🔮 分岐4: 現代的な文脈 (Context)
*   **Transformerとの比較**: RNNが逐次的に処理するのに対し、TransformerはSelf-Attention機構により並列処理が可能となり、近年のNLPの主流となっている背景の説明。
*   **位置づけ**: 並列化の難しさはあるものの、メモリ消費量が少なく、ストリーミングデータやリアルタイム処理には依然として有用なモデルである点。

この構成を関連マップの紙面やノートツールに描画する際、RNNの「ループ(再帰)」構造を象徴的に中心に描き、右へ発展したLSTMやGRUを時系列軸上に配置すると、理解が深まる図解になるでしょう。

ローカルRAGの欠点

 私の場合は、幸運なことにCanvaで図解を作成していたため、画像データはPDFに変換してテキストとして読み込むことができました。
ただ、ローカルLLMは基本は文章生成が多く画像認識に対応しているモデルを別に用意しなければなりません。Claudeなどはデフォルトでマルチモーダルで画像も読めるのですが、テキスト用・画像用でモデルを切り替える必要があり、Claudeのように1つのモデルで完結しない点が手間ですね。
また、マルチモーダルモデルは当然のことながら精度が落ちる可能性があります。ここは別途検証してみようと思っています。

まとめ

 今回はローカルLLMでRAGを使う方法を紹介しました。ほぼOpenWebUIに機能が入っているため使用するのは簡単です。
ナレッジベースにない話題は、あたかも資料から拾ったかのように答えるのではなく『一般的なAIの知識に基づく提案』と明示的に区別してくれました。これはRAGの実装として素直に評価できるポイントです。

今後

今後は下記を検証してみます。

  • カスタムモデル作成(Model Builder)で「用語マップ生成専用アシスタント」を固定化
  • Web検索連携で最新情報を踏まえた回答をさせる
  • DifyとRAGを連携する

関連記事はこちら👇

【ローカルLLM検証 環境構築編#1】 モデル実行・管理、LLM(モデル)、ブラウザチャットまで

【ローカルLLM検証 環境構築編#4】ローカルLLMでDifyを構築

💻 ローカルLLMでは容量が大きいグラフィックボードが必須です!

コメント

タイトルとURLをコピーしました