跳转至

SearXNG 私有搜索引擎

一句话概述

SearXNG 是一个免费开源的元搜索引擎(metasearch engine),可以聚合来自 251 个搜索服务的结果,不追踪用户、不存储搜索记录,支持自托管部署,是保护隐私的搜索方案,也是很多 AI 搜索项目(如 Perplexica)的搜索后端。

核心知识点表格

知识点说明
项目地址https://github.com/searxng/searxng
官方文档https://docs.searxng.org
最新版本2026.5.10+
搜索引擎数251 个可配置的搜索源
隐私保护不追踪、不记录、不画像
许可证AGPL-3.0
开发语言Python
输出格式HTML、JSON、CSV、RSS
特殊功能!bangs 快捷搜索、Tor 支持

安装与配置

方式一:Docker 快速启动

# 最简单的一行命令启动
docker run -d \
  --name searxng \                    # 容器名
  -p 8080:8080 \                      # 端口映射
  -e SEARXNG_BASE_URL=http://localhost:8080 \  # 访问地址
  searxng/searxng:latest              # 官方 Docker 镜像

方式二:Docker Compose(推荐生产环境)

# docker-compose.yml
version: '3.8'

services:
  searxng:
    image: searxng/searxng:latest     # 官方镜像
    container_name: searxng           # 容器名
    ports:
      - "8080:8080"                   # 端口映射
    volumes:
      - ./searxng:/etc/searxng:rw     # 配置文件目录(可读写)
    environment:
      - SEARXNG_BASE_URL=http://localhost:8080  # 基础 URL
      - SEARXNG_SECRET=your-secret-key-here     # 密钥(随机字符串)
    restart: unless-stopped           # 自动重启
    cap_drop:
      - ALL                            # 安全:移除所有特权
    cap_add:
      - CHOWN                          # 只保留文件所有权管理
      - SETGID                         # 设置组 ID
      - SETUID                         # 设置用户 ID
# 先创建配置目录
mkdir -p searxng  # 创建 searxng 配置目录

# 启动服务
docker compose up -d  # 后台启动

# 查看日志
docker compose logs -f searxng  # 实时查看日志

核心配置文件

# searxng/settings.yml
# SearXNG 的核心配置文件

use_default_settings: true  # 以默认设置为基础

# 基本设置
general:
  instance_name: "我的搜索引擎"  # 实例名称
  debug: false                    # 关闭调试模式

# 搜索设置
search:
  safe_search: 0                  # 安全搜索级别(0=关闭,1=中等,2=严格)
  default_lang: "zh-CN"           # 默认搜索语言:简体中文
  formats:
    - html                        # HTML 格式(网页界面)
    - json                        # JSON 格式(API 调用,AI 项目必须开启)

# 服务器设置
server:
  secret_key: "your-secret-key"   # 密钥,务必修改
  bind_address: "0.0.0.0"         # 监听地址
  port: 8080                      # 端口

# 用户界面设置
ui:
  default_theme: simple           # 默认主题
  default_locale: zh-Hans         # 界面语言:中文

# 引擎配置(启用/禁用特定搜索引擎)
engines:
  - name: google                  # Google 搜索
    engine: google
    disabled: false               # 启用
    shortcut: g                   # 快捷键 !g

  - name: bing                    # Bing 搜索
    engine: bing
    disabled: false
    shortcut: b                   # 快捷键 !b

  - name: duckduckgo              # DuckDuckGo
    engine: duckduckgo
    disabled: false
    shortcut: ddg

  - name: wikipedia               # 维基百科
    engine: wikipedia
    disabled: false
    shortcut: w

  - name: arxiv                   # arXiv 论文
    engine: arxiv
    disabled: false
    shortcut: ar

  - name: github                  # GitHub 搜索
    engine: github
    disabled: false
    shortcut: gh

基本使用

Web 界面搜索

1. 打开浏览器访问 http://localhost:8080
2. 在搜索框输入关键词
3. 结果来自多个搜索引擎的聚合
4. 可以在左侧面板选择搜索类别:
   - General(通用)
   - Images(图片)
   - Videos(视频)
   - News(新闻)
   - Science(科学)
   - Files(文件)
   - IT(技术)

Bangs 快捷搜索

SearXNG 支持 !bangs 语法,直接跳转到特定搜索引擎:

!g 宏基因组      → 直接用 Google 搜索
!b snakemake     → 直接用 Bing 搜索
!w 微生物        → 直接搜索维基百科
!gh kraken2      → 直接搜索 GitHub
!ar metagenomics → 直接搜索 arXiv 论文
!ddg python      → 直接用 DuckDuckGo 搜索

JSON API 调用

import requests  # HTTP 请求库

# 使用 JSON API 搜索(AI 项目常用)
response = requests.get(
    "http://localhost:8080/search",  # 搜索 API
    params={
        "q": "metagenome assembly",  # 搜索关键词
        "format": "json",            # 返回 JSON 格式
        "categories": "general",     # 搜索类别
        "language": "en"             # 搜索语言
    }
)

data = response.json()  # 解析 JSON

# 遍历搜索结果
for result in data["results"][:5]:  # 取前 5 条
    print(f"标题: {result['title']}")     # 标题
    print(f"链接: {result['url']}")       # URL
    print(f"摘要: {result['content']}")   # 摘要
    print(f"引擎: {result['engines']}")   # 来源引擎
    print("---")
# curl 方式调用 API
curl "http://localhost:8080/search?q=bioinformatics&format=json" \
  | python3 -m json.tool  # 格式化输出 JSON

高级用法

配合 Perplexica 做 AI 搜索后端

# docker-compose.yml
# SearXNG + Perplexica 完整 AI 搜索方案

version: '3.8'

services:
  searxng:
    image: searxng/searxng:latest
    ports:
      - "4000:8080"               # SearXNG 单独访问端口
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=http://searxng:8080

  perplexica:
    image: itzcrazykns/perplexica:latest
    ports:
      - "3000:3000"               # Perplexica Web 界面
    environment:
      - SEARXNG_URL=http://searxng:8080  # 连接 SearXNG
      - OLLAMA_URL=http://host.docker.internal:11434  # 连接本地 Ollama
    depends_on:
      - searxng

配合 LiteLLM 做搜索增强

import requests  # HTTP 请求库
import openai    # OpenAI SDK

def search_and_answer(question):
    """先搜索网页,再让 LLM 回答"""

    # 第一步:用 SearXNG 搜索
    search_results = requests.get(
        "http://localhost:8080/search",
        params={"q": question, "format": "json", "language": "zh-CN"}
    ).json()

    # 第二步:提取搜索结果文本
    context = ""
    for r in search_results["results"][:5]:  # 取前 5 条
        context += f"标题: {r['title']}\n内容: {r['content']}\n\n"

    # 第三步:把搜索结果喂给 LLM
    client = openai.Client(base_url="http://localhost:11434/v1", api_key="ollama")
    response = client.chat.completions.create(
        model="llama3.1:8b",
        messages=[
            {"role": "system", "content": f"根据以下搜索结果回答问题:\n{context}"},
            {"role": "user", "content": question}
        ]
    )
    return response.choices[0].message.content

# 使用
answer = search_and_answer("什么是 MAGs?")
print(answer)

通过 Tor 实现匿名搜索

# searxng/settings.yml
# 添加 Tor 代理配置

outgoing:
  proxies:
    all://:
      - socks5h://tor:9050      # 通过 Tor 网络代理所有搜索请求
# docker-compose.yml 添加 Tor 服务
services:
  tor:
    image: dperson/torproxy:latest
    restart: unless-stopped

  searxng:
    image: searxng/searxng:latest
    depends_on:
      - tor
    # ... 其他配置

常见报错与解决

报错信息原因解决方法
No results found搜索引擎被封或网络问题检查网络连接,启用更多搜索引擎
JSON format not available未启用 JSON 输出在 settings.yml 的 formats 中添加 json
403 ForbiddenIP 被搜索引擎封禁使用代理或 Tor,或等待一段时间
Connection refused容器未启动docker ps 检查容器状态
Settings file not found配置文件路径错误确保 settings.yml 在挂载的卷目录中
搜索结果重复多个引擎返回相同结果正常现象,SearXNG 会自动去重

速查表

# === SearXNG 常用操作速查 ===

# Docker 快速启动
docker run -d -p 8080:8080 searxng/searxng:latest

# Docker Compose 启动
docker compose up -d

# 查看日志
docker compose logs -f searxng

# 重启服务
docker compose restart searxng

# Web 界面
# http://localhost:8080

# JSON API 搜索
curl "http://localhost:8080/search?q=关键词&format=json"

# Bangs 快捷搜索语法
# !g 关键词   → Google
# !b 关键词   → Bing
# !w 关键词   → Wikipedia
# !gh 关键词  → GitHub
# !ar 关键词  → arXiv

# 配置文件位置
# ./searxng/settings.yml

# 公共实例列表
# https://searx.space

与同类工具对比

特性SearXNGGoogleDuckDuckGoBrave Search
隐私保护不追踪不记录全面追踪不追踪基本不追踪
搜索引擎数251 个聚合1 个1 个1 个
自托管支持不支持不支持不支持
API 接口JSON/CSV/RSS付费 API有限付费 API
广告无有少量少量
Tor 支持原生支持不友好支持支持
AI 搜索后端常用不适合不适合不适合
价格完全免费免费免费免费

选择建议:如果你需要一个隐私友好的日常搜索引擎,SearXNG 是最佳选择。如果你在做 AI 搜索项目(如 RAG),SearXNG 的 JSON API 是最方便的搜索后端。