Ollama+OpenWebUI+Windowsで完全ローカルでRAG、ハイブリッド検索をする方法

Ollama+OpenWebUI+WindowsでローカルLLMを構築されている方が多いと思いますが、RAGを使われているとわかるように、Open-webUIはデフォルト設定だと、埋め込みモデルエンジンを起動時にダウンロードして使う仕様になっています。よって外部ネットワークを完全に遮断されている環境で実行するには少し工夫が必要です。本記事では、Ollama+OpenWebUI+Windowsで完全ローカルでRAG、ハイブリッド検索をする方法を説明します。

環境

・Windows11

・NVIDIA GeForce RTX 4070 SUPER

・Python v11.8(Open-webUIがPythonのバージョン11を推奨)

Ollama+Open-webUI+Windows11セットアップ方法

下記の記事で説明しておりますので、まずはこの環境のセットアップをお願いします。

Ollama+OpenWebUI WindowsでRAG活用の社内ローカルチャットボットの作成 – エンジニア大学

RAGを完全ローカルで実行する方法

RAGを実行する為には「埋め込みモデル」をローカルにダウンロードした物を使う必要があります。手順は、

1.埋め込みモデルをOllamaでダウンロードする

2.Open-webUIで設定する

3.Windows環境変数を設定する(重要)

埋め込みモデルをOllamaでダウンロードする

まず、埋め込みモデルをダウンロードです。こちらは簡単。

コマンドプロンプトで、

Ollama pull 「埋め込みモデル」

と打つだけです。(ollamaがインストールされている前提で)

GPUに合わせて好きなモデルをダウンロードしてください。ここでは「bge-m3」モデルをダウンロード

このようにダウンロードがはじまります。

ダウンロードが終わると、このようになります。

Open-webUIで設定する

Open-webUIで設定

次の順に開いていきます。

まず「設定」画面を開く

「管理者設定」画面を開く

「Document」を選択

埋め込みモデルエンジンを「Ollama」へ設定し、パスをローカルのOllamaのポート「http://127.0.0.1:11434」に設定。また、埋め込みモデルを「bge-m3」と入力

「デフォルト」はこうなっています。この状態だと、OpenWebUI起動時にモデルの読み込みに外部サイトへ接続しにいくので、ネットを遮断するとエラーになります。

これを下記にように変更

環境設定も必要ですが、最後にハイブリッド検索の設定もまとめて説明します。

ローカルでのハイブリッド検索の使用法

RAGの性能を上げるためのハイブリッド検索もローカルで実行できるように設定します。デフォルトはOFFになっていて、そのままでもRAGは使えます。

こちらも埋め込みモデル同様、設定をOnにすると、デフォルトではこのようになっており、この状態だと、OpenWebUI起動時にモデルの読み込みに外部サイトへ接続しにいくので、ネットを遮断するとエラーになります。

ハイブリッド検索を使用するための方法は次の手順です。

1.モデルのダウンロード

2.モデルの設定

モデルのダウンロード

モデルはいろいろありますが、埋め込みモデルとして「bge-m3」を使っている為、相性のよいと言われている「bge-reranker-v2-m3」を使います。

まずはOllamaからダウンロード。

モデルは、このページでいくつか種類があるので、選択しましょう。

https://ollama.com/qllama/bge-reranker-v2-m3

ollama pull qllama/bge-reranker-v2-m3:f16

ダウンロードが完了すると、このような画面になります。

モデルの設定

ダウンロードしたモデルをOpenWebUIで設定します。

埋め込みモデルの時と同じように設定画面を開きます。デフォルトでは、ハイブリッド検索がOFFになっていますのでONにします。

デフォルトはこのようになっていますので変更します。

これらの設定を次のように変更。

・リランクモデル:外部

・リランクエンジン:http://127.0.0.1:11434

・リランクモデル:qllama/bge-reranker-v2-m3

保存を忘れないように

RAGやハイブリッド検索に関して、パラメータを適当に設定します。

ここでは次のように設定し、それなりに正しく動作の確認ができています。

・チャンクサイズ:512

・チャンクのオーバーラップ:256

・Chunk Min Size Target:128

・トップK:10

・トップKリランカー:5

・関連性の閾値:0.4

・BM25の重み:0.5

Windowsの環境変数設定

そして、ここが重要ですが、Windowsの環境変数に次を追加。

DO_NOT_TRACK = true

ENABLE_HYBRID_SEARCH = true

ENABLE_RAG_HYBRID_SEARCH = true

ENBEDDING_DIMENSION = 1024 *埋め込みモデルの次元数に合わせる

HF_HUB_OFFLINE = 1

HYBRID_SEARCH_ENGINE = ollama

NO_PROXY = 127.0.0.1,localhost

OLLAMA_BASE_URL = http://127.0.0.1:11434

OLLAMA_HOST = 127.0.0.1:11434

RAG_EMBEDDING_ENGINE = ollama

RAG_EMBEDDING_MODEL = bge-m3

RAG_HYBRID_SEARCH_ENGINE = ollama

SCARF_NO_ANALYTICS = true

TRANSFORMERS_OFFLINE = 1

これでPCを再起動すると、埋め込みモデルをローカルでダウンロードしたモデル、リランクモデルを読むように変更します。

これで完全ローカルで、ネットワークが完全に遮断されているPCでもRAG、ハイブリッド検索を使うことが可能です。

※1点注意点として、モデルを変えるときに次元数が異なるモデルを選択すると、過去のモデルで作成したナレッジベースが使えなくなりますので、サーバセットアップする時にセットアップしてしまった方がよいです。

また、最後に設定のページで、OpenAI APIをオフにします。これでOpenAIのサイトへもアクセスしなくなりますので、完全にオフラインの環境で動作可能となります。

ハイブリッド検索ON時の注意点

ハイブリッド検索をONにしてナレッジベースを読み込むと、バージョンによってはナレッジベースのファイルを読んでくれない事があります。そんな時は次のように、選択的検索をONにすると、確実にファイルへアクセスしてくれますので、利用してください。

私はこのシステムを合計3台立ち上げましたが、バージョンの違いなのか、環境変数の設定や、この内容など、若干バージョンによる際があります。このやり方でうまくいかない場合は、ChatGPT等で環境変数を聞きながら設定すると臨機応変に対応できると思います。

また、下記設定もしなくてもよい時もあればしなければいけない時もあり、多分ollamaとopen-webuiのバージョンによるものだと思います。

コメント

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