ChatGPTなどのクラウド型AIでは、Web検索はほとんど意識することなく統合されています。最新情報を取得し、文脈に沿って要約してくれる体験は、すでに当たり前のものになりました。
一方で、ローカルLLMはRAGによって手元の文書を検索・参照することはできますが、外部のWeb情報にアクセスする仕組みは自前で用意する必要があります。
そこで今回は、ローカルLLMにRAGだけでなくWeb検索も組み込む方法を試してみたいと思います。
パレイドRAG関連記事まとめ:基礎からOllama×ChromaDB実装、LangChain整理までpareido.jpのAIテキストカテゴリ内にあるRAG関連記事10本を、読む順番が迷わない形で整理しました。
SearXNGとは
SearXNGは、複数の検索エンジンを横断して結果を取得できる、オープンソースのメタ検索エンジンです。GoogleやBingなどの検索結果を集約しつつ、利用者を追跡しない設計が採用されている点が特徴です。
今回は、このSearXNGのJSON出力機能を活用し、LLMからWeb検索を利用できる仕組みを構築します。
まずはSearXNGを実際にインストールし、ローカル環境で問題なく動作するかを確認していきます。
docs.searxng.orgSearXNG Documentation (2026.7.7+f69b22c45)docs.searxng.orgdockerでインストール
今回はMacで環境を構築してみます。Docker経由でのインストールがシンプルです。
Dockerをインストールしてpathを通し、コマンドラインで起動しておきます。
DockerDocker Desktop: The #1 Containerization Tool for Developers | DockerDocker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or…www.docker.com
SearXNGはGitの公式リポジトリで配布されています。これを任意のフォルダ上にクローンし、作成されたsearxng-dockerフォルダに移動します。
git clone https://github.com/searxng/searxng-docker.git
cd searxng-docker
起動には秘密鍵の設定が必要です。docker-compose.yaml に、環境変数として渡すよう記述します(記述例の抜粋、下線部参照)。今回はお試しなので適当な文字列をセットしてとりあえず起動します。本来はopenssl等を使って安全な鍵を生成し、ファイルの直書きを避けて管理する等の必要があります。
また、デフォルトはlocalhostがホスト名ですが、BASE_URLも環境に合わせて調整するとよいでしょう。
...
searxng:
container_name: searxng
image: docker.io/searxng/searxng:latest
restart: unless-stopped
networks:
- searxng
ports:
- "127.0.0.1:8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
- searxng-data:/var/cache/searxng:rw
environment:
- SEARXNG_BASE_URL=http://127.0.0.1:8080/
- SEARXNG_SECRET=secret_test_key
...
最後にDockerを起動すればOKです。
docker compose up -d
動作確認
ブラウザで http://127.0.0.1:8080 にアクセスします。下記の画面が表示されれば動いています。

任意のキーワードで検索をかけてみます。
検索結果の下に、Google、duckduckgoなどソースが表示されます。

JSON出力を加える
これでも人間が使うには十分便利ですが、LLMで利用する場合に重要なのはJSON出力です。searxng/settings.yml を開いて、下線部のようにJSONをフォーマットとして明示します。
(設定を変更した後は docker compose down / up で再起動を忘れずに)
# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
# base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
secret_key: "ultrasecretkey" # change this!
limiter: false # enable this when running the instance for a public usage on the internet
image_proxy: true
redis:
url: redis://redis:6379/0
search:
formats:
- html
- json
これでHTTPのURLの末尾に&format=jsonをつければOKです。右上の「設定」から、HTTPメソッドをGETにしておくと試しやすいでしょう。

これで検索結果がJSONで出力されました。ブラウザで試すとこんな感じです。curl等で叩いてもOK。

まとめ
SearXNGを使えば、ローカル環境でもWeb検索を自前で実装できます。Docker経由で構築すればMacでも比較的簡単に起動でき、ブラウザからの検索はもちろん、JSON出力を有効にすることでLLMとの連携も可能になります。
次は、この検索結果を実際にOllamaなどのローカルLLMに渡し、どのように活用できるかを試してみます。
パレイドStability Matrixの導入と起動方法:Stable Diffusion環境をまとめて管理Stability Matrixは、Lykos AIが開発しているStable Diffusionを始めとする生成AIのGUIパッケージマネージャです。 Sta…
パレイドMacでダウンロードした実行ファイルを安全に使う方法Macでダウンロードした実行ファイルを安全に使う方法 Macでインターネットからダウンロードした実行ファイルは、macOSのセキュリティ機能によりその…
パレイドAIとエディタの融合:Cursor導入方法Cursorは、AIを標準搭載したコードエディタです。 従来のエディタのように「人がコードを書き、AIは拡張機能として補助する」という関係ではなく、AI…
