Open WebUIでWeb検索を使いたい。
ローカルLLMを使っていれば、かなり早い段階で欲しくなる機能だ。
モデル単体では学習時点までの知識しか持っていない。今日のニュースを聞いても分からないし、最新の製品情報や公式発表について質問しても答えられない。
そこでWeb検索を追加する。
Open WebUIにはWeb検索機能が標準で用意されている。しかもAPIキーを用意しなくても使える検索エンジンがあり、基本的には画面から設定するだけだ。
だったら簡単だろう。
そう思って久しぶりに設定してみた。
使えなかった。
以前の記事でOpen WebUIのWeb検索を試したことがあるため、筆者自身も設定方法は分かっているつもりだった。
ところが現在のOpen WebUIでは機能が大幅に増え、それに伴って設定項目も増えている。
Web検索を有効にする場所は一か所ではない。
管理者側でWeb検索を有効にして、検索エンジンを設定し、モデルにもWeb検索を許可し、さらにチャット側でも有効にする。
一つでも抜けると、
「Web検索はONなのに検索してくれない」
という、なかなか分かりにくい状態になる。
今回は余計な機能には触れない。
Open WebUI v0.10.2でWeb検索を有効にして、実際に検索結果を使った回答が返ってくるところまで。
そこだけを順番に見ていこう。
今回の環境
今回使用した環境は次の通り。
- Open WebUI v0.10.2
- TrueNAS SCALE
- Open WebUIはTrueNAS Appsからインストール
- OpenAI互換APIでローカルLLMを接続
この記事ではOpen WebUIのインストール方法や、LLMそのものの接続方法については扱わない。
Open WebUIですでにモデルとチャットできている状態
をスタート地点とする。
また、特定のローカルLLMやモデルについて評価することも今回の目的ではない。
やりたいことは一つ。
Web検索を使えるようにする。
1. 管理者設定でWeb検索を有効にする
まずOpen WebUIの管理者パネルを開く。

現在のバージョンでは、
管理者パネル → 設定 → ウェブ検索
にWeb検索関連の設定がまとめられている。
ここで最初に、
「ウェブ検索」
をONにする。
これがOpen WebUI全体でWeb検索を利用するための大元のスイッチになる。
ただし、これだけではまだ終わらない。
2. Web検索エンジンを設定する
続いて同じ画面にある、
「ウェブ検索エンジン」
を設定する。
Open WebUIでは複数の検索サービスを利用できるが、今回はDDGSを使用した。
DDGSを使う大きな利点は、
APIキーが必要ないこと。
GoogleやBraveなどの検索APIを別途契約しなくても、とりあえずWeb検索を試すことができる。
さらに、
DDGS Backend
では DuckDuckGo を指定した。
今回の設定は次の通り。
- Web検索:ON
- Web検索エンジン:DDGS
- DDGS Backend:DuckDuckGo
- 検索結果数:3
これならアカウント登録もAPIキーの取得も必要ない。
基本的には画面をマウスで選択するだけだ。
ここまでを見ると、とても簡単に思える。
筆者もそう思った。
だが、この状態でチャットしてみてもWeb検索は動かなかった。
3. モデル側でも「Web検索」を有効にする
今回もっとも分かりにくかったのがここだ。
Open WebUI全体でWeb検索を有効にしただけでは、使用するモデルがWeb検索を利用できるとは限らない。
管理者パネルから、
設定 → モデル
へ進み、Web検索を使わせたいモデルを開く。
モデル設定の下部には「機能」という項目がある。

ここに、
Web検索
があるのでチェックする。
さらに現在のOpen WebUIでは、
デフォルト機能
にもWeb検索の項目がある。
今回の検証ではWeb検索をデフォルト機能として有効化した。
また「組み込みツール」の中にもWeb検索が表示される。
Open WebUIは以前と比べてツール利用の仕組みそのものがかなり拡張されている。
そのため、
「Open WebUIでWeb検索が有効」
であることと、
「このモデルがWeb検索を使える」
ことが別々に管理されている。
ここを見落とすと、管理者設定では確かにWeb検索がONなのに、モデルは一向に検索してくれない。
かなりハマりやすいポイントだ。
4. チャット画面でもWeb検索をONにする
まだ終わらない。
モデル側の設定を済ませたら、新しいチャットを開く。
入力欄付近にあるWeb検索のアイコンを開くと、
Web検索
のON/OFFが表示される。

ここもONにする。
つまり現在のOpen WebUIでは、大まかに言えば、
Open WebUI全体でWeb検索を許可する
↓
検索エンジンを設定する
↓
使用するモデルにWeb検索を許可する
↓
実際のチャットでWeb検索を使う
という段階を踏む。
仕組みとして考えれば、それぞれを分離する理由は理解できる。
たとえば管理者がWeb検索そのものは許可しつつ、特定のモデルでは利用させない、といった運用もできる。
しかし初めて設定する側からすると、
「さっきWeb検索をONにしただろ?」
と言いたくなるのも事実だ。
5. 実際にWeb検索させてみる
ここまで設定できたら、実際にWeb検索を試してみる。
モデルが学習済み知識だけでは回答できない、現在のニュースなどを質問すれば分かりやすい。
管理者設定ではWeb検索をONにした。
検索エンジンも設定した。
モデル側でもWeb検索を有効にした。
チャット画面にもWeb検索のアイコンが表示され、もちろんONになっている。
これで動くだろう。
動かなかった。
何度設定を見直しても、それらしい間違いは見つからない。
DDGS BackendをAutoからDuckDuckGoへ固定してみてもダメ。
Web検索のスイッチは、どう見てもONになっている。
こうなると設定画面を眺めていても埒が明かない。
Redditに答えを求めた。
すると、同じようにOpen WebUIでWeb検索が動かず困っているユーザーの投稿が見つかった。
Can’t make Web Search work — r/OpenWebUI
その中に、こんなコメントがあった。
I updated the function calling to legacy and its working now
「Function CallingをLegacyに変えたら動いた」
たった一行。
この一行に救われた。
モデル設定に戻り、高度なパラメータを開く。
そこにある Function Calling を確認し、Legacyへ変更する。

そして、もう一度Web検索。
今度は回答の生成過程に、
Explored search_web
と表示された。
Bingo!
さらに回答には、Web検索によって取得した3件のソースも表示されている。
ようやくWeb検索が動いた。
つまり今回、検索できなかった原因はDDGSでもDuckDuckGoでもなかった。
Web検索のON/OFFでもない。
Function Callingだった。
Open WebUI v0.10系ではFunction Callingの仕組みも変化しているため、使用するモデルやOpenAI互換APIとの組み合わせによっては、標準設定のままではWeb検索ツールをうまく呼び出せない場合があるようだ。
もちろん、NativeのままでWeb検索が正常に動いているなら変更する必要はない。
ただ、
Web検索を有効にした。
検索エンジンも設定した。
モデル側もON。
チャット画面もON。
それでも検索しない。
ここまで来たら、Function CallingをLegacyに変更して試してみる価値がある。
少なくとも今回のOpen WebUI v0.10.2環境では、これが最後のピースだった。
6. 「関連質問」まで自動生成される
Web検索が正常に動いて少し驚いたのが、その後の挙動だった。
回答が終わると、「関連質問」として次に調べられそうな質問まで自動的に表示された。
以前の「ローカルLLMをブラウザから使いやすくするチャットUI」という印象からすると、かなり様子が変わっている。
ただし今回は、ここには深入りしない。
Open WebUIには現在、Tools、Skills、Knowledge、Automation、Terminalなど、エージェント的な機能が大量に追加されている。
それらについては、Web検索とは別に改めて検証したい。
7. Web検索できない場合のチェックポイント
設定したのにWeb検索が動かない場合は、まず次の4か所を確認してほしい。
① 管理者パネルでWeb検索がONになっているか
設定 → Web検索
で確認する。
② Web検索エンジンが設定されているか
APIキーなしで試すなら、DDGSを選択するのが手軽だ。
今回の環境ではDDGS BackendをDuckDuckGoに固定して正常動作を確認できた。
③ 使用するモデルでWeb検索が許可されているか
設定 → モデル → 対象モデル
からWeb検索関連の機能を確認する。
ここは管理者側のWeb検索設定とは別だ。
④ チャット画面でWeb検索がONになっているか
入力欄付近のWeb検索アイコンから確認する。
管理者設定とモデル設定が正しくても、ここでWeb検索を使用しなければ通常のチャットとして回答する場合がある。
⑤ すべて設定したのに検索しない場合
「5. 実際にWeb検索させてみる」で紹介したFunction Callingの設定も確認してほしい。
今回もっとも時間を使ったのは、
「Web検索の設定が一か所にあると思い込んだこと」
だった。
現在のOpen WebUIでは、Web検索という一つの機能でも複数の設定階層が存在する。
逆に言えば、それさえ分かってしまえば難しい作業ではない。
Open WebUIのWeb検索は、以前よりずっと面白くなっていた
以前、Open WebUIのWeb検索を試したときは、検索結果を補助情報として使う簡易的な機能という印象が強かった。
当時の記事では、より本格的にWeb情報を取得するため、DuckDuckGo MCPを使ってSearchとFetchをモデルに扱わせる方法まで試している。
しかし、現在のOpen WebUIを改めて触ってみると、Web検索を取り巻く仕組みそのものがかなり変わっていた。
そして何より重要なのは、
難しい環境構築をしなくても、Web検索そのものはGUIだけで利用できる
ということだ。
Python環境を作る必要もない。
MCPサーバーを用意する必要もない。
設定ファイルを書く必要もない。
APIキーすら必須ではない。
必要なのは、Open WebUIのいくつかの設定を正しく有効にすることだけだ。
問題は、
その「いくつか」が、ちょっと見つけにくい。
そこさえ突破すれば、ローカルLLMにWeb検索を与えるハードルはかなり低くなった。
まとめ
Open WebUI v0.10.2でWeb検索を利用するまでの流れをまとめると、
管理者パネルでWeb検索を有効化
↓
Web検索エンジンを設定
↓
モデル側でWeb検索を有効化
↓
チャット画面でWeb検索をON
↓
検索しない場合はFunction CallingをLegacyへ変更
↓search_webが実行されれば成功
となる。
一つ一つの作業は難しくない。
すべてGUIから設定できる。
ただし設定箇所が複数に分かれているため、一か所だけONにして「なぜ検索してくれないんだ?」となりやすい。
この記事を書こうと思った理由もそこにある。
筆者自身、以前の記事を書いた経験があるにもかかわらず、今回の設定では途中で迷った。
まして以前の記事を参考に、現在のOpen WebUIで初めてWeb検索を有効にしようとすれば、同じところでつまずく可能性は高い。
この記事は、そのための2026年8月版の補足でもある。
Open WebUIは変わった。
Web検索だけを見ても、以前よりずっと高機能になっている。
そしてWeb検索の設定中に気づいたのだが、変わったのはそれだけではない。
Tools、Skills、Automation、Terminal。
どうやら現在のOpen WebUIは、単なるローカルLLM用チャットUIとは呼びにくいところまで来ている。
その話は、次にしよう。


