跳转至

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.ymlformats 中添加 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 是最方便的搜索后端。