
このページは編集途中です
ページの内容が古かったり誤った情報が載っているかもなので気をつけて下さい。
※このページのコンテンツは筆者の外部Blogに記載していた物を再編集した物です。
編集予定:
RAGの項目(ハイブリット検索の修正待ち)、ノート機能、MCPなど
編集履歴:
250713:docker-compose.ymlを修正(OllamaのFlashAttentionを有効化するように)
LLM(大規模言語モデル)をローカルで動かす際は量子化と言う手法で言語モデルを軽量(推論の高速化)に変換したものを動かすのが一般的です。
そのためのライブラリ(種類)としてllama.cpp(GGUF)、AutoGPTQ(GPTQ)、AutoAWQ(AWQ)などがあります。
Ollamaはllama.cppをバックエンドとして扱いやすくしたフレームワークでOpenAI互換APIの提供や言語モデルのダウンロード機能などをサポートしています。
ただ、OllamaはCLIしかサポートしていないので、フロントエンドとしてOllamaと共によく使われるOpen WebUIと一緒にインストールして利用してみます。
→OllamaもGUIを持つように進化しました。
Open WebUIはLLM用のフロントエンドです。
OpenAI互換APIをサポートしており、クラウドなLLMサービスのOpenAI APIにも接続できますがOllamaと共にローカルLLMのフロントエンドとしてよく使われているようです。
RAG機能を標準で搭載しており、YouTubeの字幕データを読み込んで動画の内容を要約させたり、Web検索エンジンと連携して明日の天気を検索して教えてもらう事も可能です。
もちろん、手持ちの.pdfファイルやテキストファイルを読み込ませる事も可能です。
類似ソフトウェアとしてAnything LLMやLM Studioなどもあります。
※Windowsに入れるならLM Studioの方が良いかも?
そのためのライブラリ(種類)としてllama.cpp(GGUF)、AutoGPTQ(GPTQ)、AutoAWQ(AWQ)などがあります。
Ollamaはllama.cppをバックエンドとして扱いやすくしたフレームワークでOpenAI互換APIの提供や言語モデルのダウンロード機能などをサポートしています。
→OllamaもGUIを持つように進化しました。
Open WebUIはLLM用のフロントエンドです。
OpenAI互換APIをサポートしており、クラウドなLLMサービスのOpenAI APIにも接続できますがOllamaと共にローカルLLMのフロントエンドとしてよく使われているようです。
RAG機能を標準で搭載しており、YouTubeの字幕データを読み込んで動画の内容を要約させたり、Web検索エンジンと連携して明日の天気を検索して教えてもらう事も可能です。
もちろん、手持ちの.pdfファイルやテキストファイルを読み込ませる事も可能です。
類似ソフトウェアとしてAnything LLMやLM Studioなどもあります。
※Windowsに入れるならLM Studioの方が良いかも?
"Text generation web UI"は主要な量子化ライブラリを含んでおり、GGUF以外の量子化モデルも推論できます。
量子化モデルを読み込む際の細かなパラメータやテンプレートも比較的簡単に設定できます。
一方、Ollama & Open WebUIの場合はGGUF以外の量子化モデルを動かせません。(Ollamaがllama.cppをバックエンドとしているため)
また、Ollamaで推論させる際は言語モデル(GGUFファイル)以外にModel fileというchat templateなどを記載したファイルが必要です。
Ollama公式サイト(https://ollama.com/)にアップされているモデルをダウンロード、利用する際は(Model fileが同封されているため)気にする必要はありませんがHugging Faceなどから言語モデルをダウンロード、利用する場合は自分でModel fileを書かないといけません。
※Modelfileの書き方についてはOllamaのGitHubのページ(https://github.com/ollama/ollama/blob/main/docs/mo...)をご覧下さい。
→ Ollamaの最新版ではHugging Faceで公開されているGGUFをそのまま利用できるようになったみたいです。
操作感やUIに関してはOllama + Open WebUIの方がシンプルでフレンドリーです。
RAGや画像認識対応言語モデルへの画像読み込み機能に関してもOllama + Open WebUIの方が簡単です。(”Text generation web UI”でも拡張機能などで利用できるが標準機能ではない)
量子化モデルを読み込む際の細かなパラメータやテンプレートも比較的簡単に設定できます。
一方、Ollama & Open WebUIの場合はGGUF以外の量子化モデルを動かせません。(Ollamaがllama.cppをバックエンドとしているため)
また、Ollamaで推論させる際は言語モデル(GGUFファイル)以外にModel fileというchat templateなどを記載したファイルが必要です。
Ollama公式サイト(https://ollama.com/)にアップされているモデルをダウンロード、利用する際は(Model fileが同封されているため)気にする必要はありません
※Modelfileの書き方についてはOllamaのGitHubのページ(https://github.com/ollama/ollama/blob/main/docs/mo...)をご覧下さい。
→ Ollamaの最新版ではHugging Faceで公開されているGGUFをそのまま利用できるようになったみたいです。
参考:Ollama で Hugging Face Hub の GGUF をそのまま使ってみる
操作感やUIに関してはOllama + Open WebUIの方がシンプルでフレンドリーです。
RAGや画像認識対応言語モデルへの画像読み込み機能に関してもOllama + Open WebUIの方が簡単です。(”Text generation web UI”でも拡張機能などで利用できるが標準機能ではない)
DockerやDocker Compose、GPUのドライバなどはインストール済みとして進めます。
下記のようなdocker-compose.ymlを書きました。
docker-compose.yml
あとはコンテナのビルド、立ち上げです。
下記のURLにアクセスしてWebUIが表示されればOKです。
下記のようなdocker-compose.ymlを書きました。
docker-compose.yml
services:
# ollamaとAPI機能
ollama:
image: ollama/ollama:latest
container_name: ollama
# API Portを変更する際はここを変更
ports:
- "11434:11434"
volumes:
- ./ollama:/root/.ollama
# Flash Attentionの有効化(VRAM消費量の削減と高速化)
# 一部の言語モデルで不具合が出る事があるので注意
environment:
- "OLLAMA_FLASH_ATTENTION=1"
# nvidia製GPUによる推論のサポート(nvidia製GPUを載せていない場合やCPUで推論する場合はコメントアウトする)
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities:
- gpu
restart: unless-stopped
# open-webui
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
volumes:
- open-webui:/app/backend/data
# WebUIのPortを変更しています,各自環境にあわせて調整してください
ports:
- "3080:8080"
environment:
# 上のollamaのAPI Portを変更した場合はここのPortもあわせて変えること
- "OLLAMA_API_BASE_URL=http://host.docker.internal:11434"
# ユーザ認証の無効化(自分しか使わないので)
- "WEBUI_AUTH=False"
# UIの言語設定を"jp"へ変更
- "DEFAULT_LOCALE=jp"
restart: unless-stopped
volumes:
open-webui: {}
あとはコンテナのビルド、立ち上げです。
docker compose build && docker compose up -d
下記のURLにアクセスしてWebUIが表示されればOKです。
http://localhost:3080

WebUI左上のモデルを選択をクリックして検索欄にモデル名を入力、Ollama.comから"{モデル名}"をプルを選択すればOKです。

例えば、https://ollama.com/library/gemma3:12b なら下記のように入力後、[Enter]で言語モデルのダウンロードが始まります。(12B、Q4_k_mの場合)
ollama run gemma3:12bOllama.comに登録されているモデルなどはhttps://ollama.com/search から検索できます。
管理者設定/接続から言語モデルの管理(ここからもダウンロードできるし、ダウンロードしたモデルの削除などもできる)が行えます。
huggingface.coで公開されているGGUFの言語モデルのダウンロードをダウンロードする際は下記のようにモデルを選択の検索欄に入力します。
https://huggingface.co/lmstudio-community/Mistral-...
ollama run hf.co/{ユーザー名}/{リポジトリ}:{量子化タイプ}
例えば下記のGGUFモデルをダウンロードする場合は以下のようになります。(Q4_K_Mの場合)https://huggingface.co/lmstudio-community/Mistral-...
ollama run hf.co/lmstudio-community/Mistral-Small-3.1-24B-Instruct-2503-GGUF:Q4_K_M

WebUIの右上にあるアイコンをクリックするとチャットコントロールウインドウが表示されます。
ここでシステムプロンプト(あなたは有能なアシスタントです。...など)や、言語モデルのパラメータを設定できます。
管理者設定/モデルからも設定できます。

Ollamaはどの言語モデルであってもコンテキストウインドウのデフォルト値が"4096"なのでこれを修正します。
ここでは取り敢えず、"16,384"に設定しておきます。
※言語モデルがサポートしている以上の値にしても意味はありませんし、サポートする範囲であってもこの値が大きいと必要なVRAM(orメインメモリ)も増えますのでご注意下さい。
- [Shift]+[Enter]でチャット入力欄内で改行できます。
- #(半角シャープ)の後にWebサイトのURLを入力、[Enter]を押すとスクレイピングした結果が処理されて言語モデルへ渡されます。合わせてプロンプトで要約させたり、解説させたりできます。

例:
#https://www3.nhk.or.jp/news/ contextから最新のニュースを教えて
- 後述する、どの言語の字幕をダウンロードするかの設定(日本語なら"ja")後、#(半角シャープ)の後にYouTubeのURLを入力するとYouTubeの字幕データを取得し、プロンプトで要約させたりできます。
[NHKスペシャル] もしも南海トラフ巨大地震が発生したら?シミュレーションCGとドラマで解説 | MEGAQUAKE | NHK
例:
#https://www.youtube.com/watch?v=V9e5yuZ1CxA contextはYouTubeの自動生成字幕です。内容を要約してください。
- #{URL}の入力後にURLの"ドキュメント"をクリックすると取得したテキストがわかります。
- 後述する設定を行えばウェブ検索と連携もできます。(別途、設定とGoogleなどの検索エンジンの場合はAPIキーが必要)

例.1:
明日の東京都の天気を検索して例.2:
GeForce RTXシリーズでVRAMが8GB以上のモデルを検索して教えて

OpenAIのAPI(または互換API)や、OllamaのAPIなどを指定します。
インストール(Docker)のdocker-compose.ymlを使っているならOllamaのAPI URLを手動で設定する必要はありません。

Ollama APIの右の方にある、↓(管理)アイコンをクリックする事でOllama.com(またはhf.co)からモデルをダウンロードしたり削除したりできます。

- Content Extraction Engine(コンテンツ抽出エンジン)
- PDF 画像抽出 (OCR)
- Bypass Embedding and Retrieval (埋め込みと取得をバイパスする)
- Text Splitter
Tokenではトークン数に基づいてテキストを分割します。
後者の方が良いとされています。(参考:https://medium.com/@hautel.alex2000/open-webui-tut...)
- チャンクサイズ
- チャンクオーバーラップ
- 埋め込みモデルエンジン
SentenceTransformer、Ollama、OpenAIから選べます。
- 埋め込みモデル
※埋め込みモデルを更新または変更した場合は、すべてのドキュメントを再インポートする必要があります。
- Full Context Mode
- ブリッジ検索 (デフォルトOFF)
RAGを使用する際はこのオプションを有効にしてrerankerモデルを利用する方が良いらしいです。
- モデルの再ランキング (ブリッジ検索有効時のみ)
- トップK (デフォルト3)
- Top K Reranker (ブリッジ検索有効時のみ、デフォルト3)
- Relevance Threshold (関連性のしきい値)(ブリッジ検索有効時のみ)
※値を設定した場合、RAGは最小スコア以上のスコアを持つドキュメントのみを返します。
- RAG テンプレート
筆者は上記のテンプレートをGoogle翻訳にかけた下記のテンプレートを使用しています。
- アップロードディレクトリをリセット
- ベクターストレージとナレッジベースをリセット
- Reindex Knowledge Base Vectors(ナレッジベースベクトルの再インデックス)

- ウェブ検索
- ウェブ検索エンジン
DuckDuckGoを利用する際はAPIキーなどが必要ないので簡単に使いたい方はDuckDuckGoで良いかと思います。
※DuckDuckGoはUAによるレート制限を行っているらしく、短時間に何度も検索を繰り返すとOpenWebUI上でAn error occurred while searching the webと表示されて一時的に検索できなくなります。ご注意下さい。
- Bypass Embedding and Retrieval(埋め込みと取得をバイパスする)
体感として、この機能をONにしてRAGを通さずにコンテキストへ全部渡した方が応答の品質は高い気がします。(RAG周りの微調整不足かも?)
言語モデルの設定したコンテクストウインドウサイズを超えるような膨大なデータ量ならこの機能はOFFにしてRAGで処理した方が良いかと。
- Web Loader Engine
通常はデフォルトで問題ないと思いますが、Firecrawlなどより高機能なエンジンもサポートしています。(※Firecrawlは無料のセルフホスト版と有料版があり、有料版は要APIキー)
- Youtube Language
デフォルトは"en"ですが、日本語にする際は"ja"に設定します。


よく使うプロンプトを登録しておく事ができます。
/(半角スラッシュ)+{コマンド}で選択、入力できます。
タイトルに登録するプロンプトのタイトルを、コマンドに/(半角スラッシュ)の後に入力するコマンド、プロンプトの内容に実際に入力されるプロンプトを入力して保存して作成で保存します。
例えば、タイトルにYouTubeの要約、コマンドに/youtube、プロンプトの内容に"ContextはYouTubeの自動生成字幕です。Contextから動画の内容を要約して解説してください。"として作成すると、チャット入力欄に"/y"と入力すると"/youtube"が候補に出てくるのでそれを選択するとチャット入力欄に"ContextはYouTubeの自動生成字幕です。Contextから動画の内容を要約して解説してください。"とプロンプトが入力されます。
管理者設定/ドキュメントで主な設定を行います。
この項目では主に(電子)テキストファイルを想定しています。(.txt .mdなど...)
紙媒体をスキャンした画像などのOCR処理もOpen WebUIから別途、設定とエンジンのセットアップをすればできるようですがこの項目では扱いません。
RAG(検索拡張生成)では単語や文章を埋め込みベクトルに変換、検索するembedding(埋め込み)モデル、検索時に結果を再評価するreranker(リランキング,再ランク付けモデルとも)モデルの両方を設定、デフォルトから変更したほうが良いみたいです。
※RAGやembedding/rerankerモデルの詳しい説明については下記の外部サイトをご覧下さい。
この項目は編集途中です。
dengcao/Qwen3-Embedding-4B:Q4_K_M
dengcao/Qwen3-Reranker-4B:Q4_K_M
cl-nagoya/ruri-v3-reranker-310m
embeddinggemma
Troubleshooting RAG (Retrieval-Augmented Generation)
Multi-Source RAG with Hybrid Search and Re-ranking in OpenWebUI
この項目では主に(電子)テキストファイルを想定しています。(.txt .mdなど...)
紙媒体をスキャンした画像などのOCR処理もOpen WebUIから別途、設定とエンジンのセットアップをすればできるようですがこの項目では扱いません。
RAG(検索拡張生成)では単語や文章を埋め込みベクトルに変換、検索するembedding(埋め込み)モデル、検索時に結果を再評価するreranker(リランキング,再ランク付けモデルとも)モデルの両方を設定、デフォルトから変更したほうが良いみたいです。
※RAGやembedding/rerankerモデルの詳しい説明については下記の外部サイトをご覧下さい。
RAGの解説: LLMとベクトルデータベースを活用したアプローチのまとめ
RAGにも使うエンべディング(Embedding)とは?なぜエンべディングが必要なのか解説
リランキングモデルによる RAG の日本語検索精度の向上
RAGにおけるRerankモデルの役割と最新の動向
この項目は編集途中です。
cl-nagoya/ruri-v3-reranker-310m
embeddinggemma
Troubleshooting RAG (Retrieval-Augmented Generation)
Multi-Source RAG with Hybrid Search and Re-ranking in OpenWebUI
SearXNGは、さまざまな検索サービスやデータベースからの結果を集約する無料のインターネットメタ検索エンジンです。
管理者設定/ウェブ検索でDuckDuckGoを選ぶよりその他の検索エンジンの結果も含むので検索精度の向上が期待できます。
SearXNGをDockerでインストールしてOpen WebUIと接続して利用してみます。
下記の docker-compose.yml を使います。
Dockerコンテナのビルド、立ち上げです。
searxng/settings.ymlのformats:にjsonを追加します。

管理者設定/ウェブ検索からウェブ検索エンジンをsearxngに変更します。
Searxng クエリ URLに下記のとおりに入力、設定を保存します。


あとはチャット画面でウェブ検索を有効にしてプロンプトを入力すると検索結果に基づいた応答が帰ってきます。
管理者設定/ウェブ検索でDuckDuckGoを選ぶよりその他の検索エンジンの結果も含むので検索精度の向上が期待できます。
SearXNGをDockerでインストールしてOpen WebUIと接続して利用してみます。
下記の docker-compose.yml を使います。
services:
searxng:
image: searxng/searxng:latest
container_name: searxng
ports:
- "5147:8080"
volumes:
- "./searxng:/etc/searxng"
environment:
- "BASE_URL=http://0.0.0.0:5147/"
- "INSTANCE_NAME=SEARXNG"
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
Dockerコンテナのビルド、立ち上げです。
docker compose build && docker compose up -d
searxng/settings.ymlのformats:にjsonを追加します。
nano searxng/settings.yml
formats:
- html
- json

管理者設定/ウェブ検索からウェブ検索エンジンをsearxngに変更します。
Searxng クエリ URLに下記のとおりに入力、設定を保存します。
http://host.docker.internal:5147/search?lang=ja&q=<query>


あとはチャット画面でウェブ検索を有効にしてプロンプトを入力すると検索結果に基づいた応答が帰ってきます。
Web Loader Engine(Webスクレイピングエンジン)をデフォルトではなく、セルフホスト版Firecrawlにする際の方法です。
FirecrawlはWebサイトのスクレイピングサービス/エンジンで単にWebサイトのテキストデータを抽出するだけでなく、LLMと相性の良いMarkdown形式に変換したりできます。
サービスとして提供されているFirecrawlには無料プランや有料プラン、エンタープライズプランなどがありますが今回はOSSで公開されているセルフホスト版FirecrawlをDockerで立ち上げてOpen WebUIと接続、利用してみます。
流れとしてはGitHubのREADMEの通りです。
git、Docker、Docker Composeをインストール済みとして進めます。
gitコマンドでリポジトリをクローン、クローンしたディレクトリに移動します。
.envファイルをnanoで編集します。
USE_DB_AUTHENTICATIONをfalseに変更します。
Dockerコンテナのビルド、立ち上げです。
下記のURLにアクセスしてWebUIが表示されればOKです。
http://localhost:3002/admin/@/queues

管理者設定/ウェブ検索からWeb Loader EngineをFirecrawlに変更し、Firecrawl API Key Base URLに下記のとおりに入力、API Keyは何も入力しないと設定を保存できないので適当に"key"とでも入力し設定を保存します。


筆者のBlogページをスクレイピングして比較した例です。
左の画像がデフォルトのWeb Loader Engine、右の画像がローカル版Firecrawlでスクレイピングした物です。
デフォルトのWeb Loader Engineと比べ、無駄な改行などが無くなっています。
ウェブ検索機能と相性が悪いみたいでWeb Loader EngineをFirecrawlにしているとウェブ検索が機能しないようです。
FirecrawlはWebサイトのスクレイピングサービス/エンジンで単にWebサイトのテキストデータを抽出するだけでなく、LLMと相性の良いMarkdown形式に変換したりできます。
サービスとして提供されているFirecrawlには無料プランや有料プラン、エンタープライズプランなどがありますが今回はOSSで公開されているセルフホスト版FirecrawlをDockerで立ち上げてOpen WebUIと接続、利用してみます。
流れとしてはGitHubのREADMEの通りです。
git、Docker、Docker Composeをインストール済みとして進めます。
gitコマンドでリポジトリをクローン、クローンしたディレクトリに移動します。
git clone https://github.com/mendableai/firecrawl && cd firecrawl.envファイルをサンプルからコピーします。
cp ./apps/api/.env.example ./.env
.envファイルをnanoで編集します。
USE_DB_AUTHENTICATIONをfalseに変更します。
nano .env #変更前 USE_DB_AUTHENTICATION=true #変更後 USE_DB_AUTHENTICATION=false
Dockerコンテナのビルド、立ち上げです。
docker compose build && docker compose up -d
下記のURLにアクセスしてWebUIが表示されればOKです。
http://localhost:3002/admin/@/queues

管理者設定/ウェブ検索からWeb Loader EngineをFirecrawlに変更し、Firecrawl API Key Base URLに下記のとおりに入力、API Keyは何も入力しないと設定を保存できないので適当に"key"とでも入力し設定を保存します。
http://host.docker.internal:3002※Dockerではなく、直接インストールした場合や他のマシンにインストールした場合はURLを適切に変えて下さい。


筆者のBlogページをスクレイピングして比較した例です。
左の画像がデフォルトのWeb Loader Engine、右の画像がローカル版Firecrawlでスクレイピングした物です。
デフォルトのWeb Loader Engineと比べ、無駄な改行などが無くなっています。
A1111(or reforge)や、ComfyUIといったローカルの画像生成AIの他、OpenAI、Geminiと連携できます。
この項目ではローカル画像生成(ComfyUI)と連携してみます。
管理者設定/画像から設定します。
この項目は編集途中です。
この項目ではローカル画像生成(ComfyUI)と連携してみます。
管理者設定/画像から設定します。
この項目は編集途中です。





