【後編】SearXNGでローカルAIからWeb検索する|Open WebUIとLM Studioで使ってみた

前編では、Dockerを使ってSearXNGをWindows上に構築しました。今回はその続きとして、実際にローカルLLMからSearXNGを利用してWeb検索する方法を紹介します。

私の環境では、以前からOpen WebUIとSearXNGを連携していました。

その後、LM Studioを使うことも増えてきたので、今回はさらにSearXNG MCPを使ってLM StudioからもWeb検索できるようにしてみました。


スポンサーリンク

Open WebUIからSearXNGを使う

まずは以前から使っていたOpen WebUIとの連携です。Open WebUIからSearXNGを利用すると、構成はシンプルです。

Open WebUI
    ↓
SearXNG
    ↓
複数の検索エンジン
    ↓
Web検索

Open WebUI側でWeb検索を有効にし、検索エンジンとしてSearXNGを指定します。具体的には以下のように設定します。

OpenWebUIのWeb検索の設定

OpenWebUIの設定を開き「ウェブ検索」を選択。

設定画面から下記のように設定します。

クエリURL:http://127.0.0.1:8081/search?q=<query>

続いて使っているLLMモデルの設定を開き。「ウェブ検索」にチェックを入れます。

これでOpen WebUIからWeb検索を利用できるようになります。実際に検索してみると、LLMが必要に応じてWeb検索を実行し、その結果をもとに回答してくれます。


LM StudioからもWeb検索したい

ここからが今回の本題です。Open WebUIは便利なのですが、最近はLM Studioを使うことも増えてきました。

そこで、LM Studioからも同じSearXNGを使えるように設定しました。LM Studioの場合は、MCP(Model Context Protocol)が使えるので、MCPを使って設定しました。

イメージとしては、

LM Studio
    ↓
SearXNG MCP
    ↓
SearXNG
    ↓
Web検索

という構成です。

SearXNG MCP側からSearXNGのJSON検索結果を取得するため、前編で設定した json 形式がここで活きてきます。SearXNGは検索結果をJSONで返すための設定をサポートしています。


SearXNG MCPを用意する

SearXNG MCPにはいくつか実装があります。基本的な役割は共通していて、

MCPからSearXNGへ検索を依頼する

ための橋渡しをしてくれます。例えば、MCP側ではSearXNGのURLを環境変数として指定します。

SEARXNG_URL=http://127.0.0.1:8081

ここは、自分の環境でSearXNGを公開しているURLに合わせます。私の環境では、Dockerのポート設定が、

ports:
  - "8081:8080"

となっているため、Windows側からSearXNGへアクセスするときは、

http://127.0.0.1:8081

になります。SearXNG MCPにも複数の実装があるため、使用するMCPのドキュメントに合わせてインストール・設定してください。

現在公開されているSearXNG MCPの実装でも、SEARXNG_URL を指定して既存のSearXNGへ接続する方式が一般的です。


LM StudioにSearXNG MCPを登録する

MCPを用意したら、LM Studioから利用できるように登録します。LM StudioのMCP設定からSearXNG MCPを追加します。

基本的には、

MCPサーバー
    ↓
SearXNG MCP
    ↓
SEARXNG_URL
    ↓
自分のSearXNG

という関係になります。ここで重要なのは、LM Studioが直接Googleなどへ検索しに行くわけではないということです。

LM StudioはMCPという仕組みを通してSearXNGに検索を依頼し、SearXNGが検索エンジンから結果を取得します。

LM StudioのWeb検索の設定

LM Studioの「Server」にある「mcp.json」を開きます。

開いたら下記の赤枠を追加します。自分の場合はComfyUIも既に設定しているのでComfyUIの設定も既に入っています。

    "searxng": {
      "command": "npx.cmd",
      "args": [
        "-y",
        "@tadmstr/searxng-mcp"
      ],
      "env": {
        "SEARXNG_URL": "http://127.0.0.1:8081"
      }
    }

実際に検索してみる

設定が完了したら、LM Studioから適当な質問をしてみます。

例えば、

今日のAI関連のニュースを検索して、主なものをまとめて

といった質問です。SearXNG MCPが正常に動いていれば、LM Studioから検索ツールが呼び出されます。

LM Studio
    ↓
「Web検索が必要」
    ↓
SearXNG MCP
    ↓
SearXNG
    ↓
Google / Bing / DuckDuckGoなど
    ↓
検索結果
    ↓
LM Studio
    ↓
回答

これで、ローカルLLMでも最新のWeb情報を検索してから回答することができます。


実際に使ってみてどうだった?

実際に使ってみると、思っていた以上に普通に検索できます。以前は、

最新情報を調べたい

ブラウザを開く

Googleなどで検索

結果をLLMに貼り付ける

という作業が必要でした。SearXNG+MCPを使えば、

「これ調べて」

とLLMに頼むだけで、検索から回答までを任せられます。特にローカルAIを普段から使っているなら、この差はかなり大きいと感じました。


SearXNGって安全なの?

ここで気になるのが、

「SearXNGって安全なの?」

というところです。

SearXNG公式ドキュメントでは、SearXNGはユーザーを追跡・プロファイリングしないことを特徴として挙げています。また、自分でインスタンスを運用できることもSearXNGの特徴です。

ただし、「SearXNGだから絶対安全」と考えるのは少し違います。重要なのは、

どのSearXNGインスタンスを使っているか

です。


公開されているSearXNGを使う場合

インターネット上には、誰でも利用できるSearXNGの公開インスタンスがあります。便利ですが、その場合は、

自分
 ↓
他人が運営するSearXNG
 ↓
検索エンジン

という構成になります。検索内容は、まずSearXNGの運営者が受け取ることになります。

そのため、

「検索内容を誰にも知られたくない」

という目的なら、運営者を信頼する必要があります。

実際、SearXNGの公式ドキュメントでも、公開インスタンスを利用する場合は、そのインスタンスの管理者を信頼する必要があると説明されています。


自分でSearXNGを動かす場合

今回私がやっているのはこちらです。

自分のPC
   ↓
自分のDocker
   ↓
自分のSearXNG
   ↓
検索エンジン

SearXNGを自分のPC上で動かしているので、少なくとも知らない人が運営する公開SearXNGに検索内容を預ける必要はありません。

SearXNG公式も、自分でインスタンスを運用する方法を案内しています。ただし、ここも誤解しないほうがいいところがあります。

SearXNGを自分で動かしたからといって、検索内容が完全に誰からも見えなくなるわけではありません。

SearXNGは検索エンジンへの中継役なので、検索処理のために検索エンジンへクエリを送ります。また、自分のPCからSearXNGへ接続していること自体は、ネットワーク上の観測者から完全に消えるわけではありません。

つまり、

「プライバシーを高める仕組み」ではあるけれど、「完全匿名化ツール」ではない

くらいに考えておくのがよさそうです。SearXNGの安全性について詳しく調べた記事でも、公開インスタンスの運営者、ISP、DNS、ホスト側など、それぞれ何が見えるのかを分けて考える必要があると説明されています。


ローカルAIとの組み合わせはかなり面白い

今回やってみて感じたのは、ローカルAI単体で全部やろうとする必要はないということです。例えば、

ローカルLLM
    ↓
MCP
    ↓
SearXNG
    ↓
Web

のように、必要な機能だけ外部ツールとして追加できます。今回のSearXNGもその一つです。

LLM自体はローカルで動かしながら、

  • Web検索
  • 画像生成
  • ファイル操作
  • その他の外部ツール

などをMCPなどで組み合わせていけば、少しずつ自分専用のAI環境を作っていけます。このあたりは、ローカルAIを触っていてなかなか面白いところです。


まとめ

今回は、SearXNGをDockerで動かし、ローカルAIからWeb検索できる環境を作ってみました。今回の構成をまとめると、

                 ┌─ Open WebUI

SearXNG ────-┤

└─ SearXNG MCP ── LM Studio

という形です。

SearXNG自体は検索エンジンではなく、複数の検索サービスをまとめて利用するメタ検索エンジンです。そしてMCPを組み合わせることで、LM StudioなどのAIクライアントから検索機能を呼び出せるようになります。

個人的には、ローカルLLM+Web検索の組み合わせはかなり実用的だと感じました。

ローカルAIを使っていて、

「最新情報だけWebから調べてほしい」

ということが増えてきた人には、試してみる価値のある構成だと思います。

また、SearXNGは「安全かどうか」を単純に判断するのではなく、誰がSearXNGのインスタンスを運営しているのか、検索内容がどこを通るのかを考えて使うことが重要です。

今回は自分のPC上にSearXNGを構築したので、公開インスタンスを利用するよりも、自分で管理できる範囲が大きいのもメリットだと感じました。

これで、ローカルLLMにもWeb検索というかなり強力な機能を追加することができました。

コメント

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