SearXNGをMacで構築する方法|DockerとJSON出力設定まで解説

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.org
SearXNG Documentation (2026.5.22+fc90c5b09)
docs.searxng.org

dockerでインストール

今回はMacで環境を構築してみます。Docker経由でのインストールがシンプルです。
Dockerをインストールしてpathを通し、コマンドラインで起動しておきます。

Docker
Docker Desktop: The #1 Containerization Tool for Developers | Docker
Docker 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…
[NEXT] TECH · 其の4250
Stable Audio 3 Medium を RTX 4070 + ComfyUI で動かす|380 秒生成と VRAM 崖の現在地
[NEXT] TECH · 其の4203
Anima Base v1.0 と Turbo LoRA を比べる — M5 Air で 7-8 倍、ただし同 seed でも別の画が出る