ローカルLLM構築:RAGを利用するモデルをOpen WebUIで

RAGは外部知識をモデルに参照させ、生成に利用する仕組みです。

ざっくりとした概要は、別の記事にまとめたのでご覧いただければと。

今回は、Open WebUIでRAGを構築していきます。

チュートリアルに項目が用意されているので、見ながら進めていきます。

モデルを関連付けると利用できる

Open WebUIでRAGを利用する場合、外部ドキュメントを用意してナレッジを作成し、モデルと関連付けるというのが大まかな流れです。

チュートリアルの内容を順番に取り組めば、RAGを体験できる感じですね。

まずは、RAGに利用するドキュメントをダウンロードします。

チュートリアルページにダウンロードURLがあるので、クリックするとダウンロードが始まります。

ダウンロード後は、解答してMarkdownファイルを探します。

拡張子が「.md」や「.mdx」のものですが。結構あるんですよね。

検索機能を使って、抽出した方が良さそうです。

手順だと後になってますが、最初にOpen WebUIでナレッジベースを作成しても大丈夫です。

Open WebUIで、ワークスペース➾「ナレッジベース」タブを選択します。

以前に一度作ったものが残ってました。

作成したナレッジベースはここで一覧表示されます。

右側の「+New Knowledge」を押すと新しく作成できます。

項目はざっくりと説明すると。

・何に取り組んでいますか?:ファイル名のようなものですね。
・何を達成しようとしていますか?:作成するナレッジベースの説明です。
・可視性:公開設定ですね。「プライベート」か「公開」を選択できます。
・グループ:必要であれば設定しましょう。

入力・設定した後に「ナレッジベース作成」を押すと、入れ物が出来上がります。

あとは、先程のMarkdownファイルをアップロードしましょう。

ドラッグ&ドロップで大丈夫ですし。

ローカルからローカルなので、待ち時間もそんなにないですかね。

これで、ナレッジベースは出来上がりました。

次に作成したナレッジベースとモデルを関連付けます。

「ナレッジベース」タブの隣にある「モデル」タブで移動。

ここでは、RAGと関連付けたモデルなどのカスタムモデルの作成や管理ができます。

できますと言いながら、まだチュートリアルのOpen WebUIモデルしかいないんですが。

右の「+New Model」から、作成したナレッジベースを使えるようにしたカスタムモデルを作成しましょう。

モデルを作成する時に入力する項目は、基本的にはgpr-ossなどの汎用モデルを入れた時の変わりがないので。

細かい項目は、以下の記事をご覧いただければと。

今回設定するのは、3箇所で大丈夫です。

・モデル名:
任意の名前を付けてください。チュートリアルでは「Open WebUI」でした。RAGの内容に合わせて、わかりやすく命名すると良いかもですね。

・ベースモデル:
ナレッジベースを利用して推論を行うモデルを選択します。ドロップダウンリストでインストールされているモデルが表示されるので、好きなモデルを選びましょう。

・ナレッジソース:ここで、作成したナレッジベースを選択します。

最後に「保存して作成」を押すと、ナレッジベースと関連付けたモデルが選択できるようになります。

少し触って見た感じですが、十分でしょうかね。

AI搭載したてのnotebookLMが少し柔軟になった・・・ぐらいな印象です。

ただ、プロンプトやその他の設定によって、だいぶ使いやすさは変わるんだろうなと思います。

管理パネルで細かく設定も

RAGの細かい設定は、管理パネルから行えます。

左下のユーザー名表示から、管理者パネル➾「設定」タブ➾左サイドバー「ドキュメント」、です。

ナレッジの対象にするファイルの種類や、Google Driveとの連携の設定なども行えるみたいですがー。

「チャンク」を抑えておいて、後はおいおいでも良いかと。

・チャンク サイズ:チャンクあたりの最大文字数またはトークン数を設定。
・チャンクのオーバーラップ:コンテキストを維持するために、隣接するチャンク間で共有されるコンテンツ量を指定。

「チャンク」は、意味のあるかたまりのことです。

区切りすぎると、意味のない言葉のかたまりとなり、精度の良い生成は期待できません。

ちょうど良いサイズを設定しますが、大体1,000あたりのようです。

文章は、文字➾単語➾連語➾行➾文節➾文章というように、じょじょにかたまりが大きくなっていきます。

チャンクサイズで指定したかたまり同士も、意味をやり取りしなければ、生成の妨げになるでしょう。

基本的にはデフォルトのままで良いとも思いますが。

微調整したい場合には、数値を変更してみるのも良いかもしれません。

モデルのようにRAGを扱える

ナレッジベースとして独立させ、様々なモデルで推論を試せた方が良いのではないか?

とも思いましたが。

案外使ってみると、モデルで切り替えられる方が便利なのかもしれない。

というのも、常にナレッジを参照したわけではないので。

そんな時にモデルを汎用に切り替えるだけで良いというのは楽ですね。

とりあえず、これでOpen WebUIでRAGを利用できるようになったので。

色々と試して見ようかなと思います。

このブログや記事の内容について、疑問に思っている事はありますか?

もしあれば、どんなことでも構いませんので、コメントを残していただくか、問い合わせフォームよりご連絡ください。

著者プロフィール
ぽんぞう@勉強中

はじめまして、「ぽんぞう@勉強中」です。
小企業に一人情報部員として働いている40代のおじさんです。IT技術での課題解決を仕事にしていますが、それだけでは解決できない問題にも直面。テクノロジーと心の両面から寄り添えるブログでありたいと、日々運営しています。詳しくはプロフィールページへ!