欢迎光临
我们一直在努力

OpenWebUI联网搜索实战:如何用SearXNG让本地大模型获取实时信息(附百度/360配置)

OpenWebUI联网搜索实战:如何用SearXNG让本地大模型获取实时信息(附百度/360配置)

如果你在本地运行大模型,比如用Ollama部署了Qwen、Llama或者DeepSeek,可能会发现一个尴尬的问题:模型的知识截止日期是固定的,它不知道今天股市涨跌,不清楚最新的科技新闻,甚至不知道明天是什么节日。这种“信息孤岛”的感觉,让本地大模型的实用性大打折扣。

我最初搭建OpenWebUI环境时,也遇到了这个痛点。看着模型一本正经地分析过时的数据,那种无力感让我开始寻找解决方案。市面上有不少联网搜索方案,但要么配置复杂,要么对国内网络环境不友好。经过几周的折腾和测试,我发现SearXNG这个开源元搜索引擎,配合OpenWebUI的联网搜索功能,是目前最稳定、最灵活的方案之一。

更重要的是,通过合理配置SearXNG,我们可以让本地大模型直接调用百度、360等国内搜索引擎,获取符合中文用户习惯的实时信息。这不仅仅是技术上的连接,更是让本地AI真正“接地气”的关键一步。下面我就把自己踩过的坑、验证过的配置,以及实际效果对比,毫无保留地分享给你。

1. 为什么需要SearXNG?OpenWebUI联网搜索的现状与痛点

在深入配置之前,我们得先搞清楚一个问题:为什么不能直接用OpenWebUI内置的搜索引擎?答案藏在网络环境和搜索质量的双重限制里。

OpenWebUI确实提供了多种联网搜索选项,比如DuckDuckGo、Google PSE、Bing等。但在实际使用中,你会发现这些选项各有各的问题:

  • DuckDuckGo:开箱即用,但搜索结果对中文内容支持有限,经常返回一些相关性不高的英文页面
  • Google PSE:需要API密钥,免费版限制严格(每天100次搜索),而且搜索结果质量与网页版Google相差甚远
  • Bing:API申请流程复杂,新用户基本无法通过,老用户也经常遇到部署失败的问题
  • Mojeek:速度慢得让人怀疑人生,有时候一个查询要等上十几秒

我在GitHub的OpenWebUI讨论区看到不少开发者都在抱怨这个问题。有人尝试了各种方案,最后发现要么效果差,要么根本用不了。更让人头疼的是,这些搜索引擎大多对国内网络环境不友好,要么访问不稳定,要么直接被屏蔽。

这时候SearXNG的优势就体现出来了。它是一个元搜索引擎,本身不维护搜索索引,而是聚合其他搜索引擎的结果。这意味着:

  • 隐私保护:SearXNG不会跟踪用户,所有搜索请求都经过匿名化处理
  • 高度可定制:你可以自由选择启用哪些搜索引擎,包括百度、360、搜狗等国内引擎
  • API友好:提供JSON格式的输出,非常适合程序化调用
  • 自托管:完全控制在自己手里,不用担心服务突然不可用
  • 但SearXNG也不是完美无缺。最大的问题是官方Docker镜像默认不包含国内搜索引擎的配置文件。如果你直接部署,很可能会遇到这样的错误:

    [Errno 2] No such file or directory: \’/usr/local/searxng/searx/engines/baidu.py\’

    这就是为什么很多人在配置SearXNG时卡住的原因。不过别担心,后面的章节我会详细讲解如何解决这个问题。

    2. SearXNG部署详解:从零搭建可用的元搜索引擎

    部署SearXNG有多种方式,包括Kubernetes、手动安装和Docker Compose。考虑到易用性和维护性,我强烈推荐使用Docker Compose方案。下面是我优化后的配置流程,已经避开了大部分常见的坑。

    2.1 环境准备与基础部署

    首先确保你的服务器已经安装了Docker和Docker Compose。如果还没有,可以参考官方文档进行安装。这里假设你使用的是Ubuntu 22.04或更高版本的系统。

    # 更新系统包
    sudo apt update && sudo apt upgrade -y

    # 安装Docker(如果尚未安装)
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh

    # 安装Docker Compose
    sudo apt install docker-compose-plugin -y

    # 验证安装
    docker –version
    docker compose version

    接下来创建SearXNG的工作目录并获取配置文件:

    # 创建专用目录
    mkdir -p ~/searxng-docker && cd ~/searxng-docker

    # 克隆官方仓库(包含Docker配置)
    git clone https://github.com/searxng/searxng-docker.git .

    注意:如果你在国内,GitHub克隆可能会很慢。可以考虑使用镜像源,或者先下载ZIP包再解压。

    2.2 Docker Compose配置优化

    官方提供的docker-compose.yaml文件包含Caddy反向代理,但对于大多数内网部署场景来说,这个组件不是必需的。我建议使用简化版的配置,只保留核心服务。

    创建或修改docker-compose.yaml文件:

    version: \”3.7\”

    services:
    redis:
    container_name: redis
    image: docker.io/valkey/valkey:8-alpine
    command: valkey-server –save 30 1 –loglevel warning
    restart: unless-stopped
    networks:
    – searxng
    volumes:
    – valkey-data:/data
    logging:
    driver: \”json-file\”
    options:
    max-size: \”1m\”
    max-file: \”1\”

    searxng:
    container_name: searxng
    image: searxng/searxng:latest
    restart: unless-stopped
    networks:
    – searxng
    ports:
    – \”8080:8080\” # 可以根据需要修改端口
    volumes:
    – ./searxng:/etc/searxng:rw
    – ./engines:/usr/local/searxng/searx/engines:rw # 关键:持久化引擎目录
    environment:
    – SEARXNG_BASE_URL=http://${SEARXNG_HOSTNAME:-localhost}:8080/
    – UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
    – UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
    – SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml
    logging:
    driver: \”json-file\”
    options:
    max-size: \”1m\”
    max-file: \”1\”

    networks:
    searxng:

    volumes:
    valkey-data:
    driver: local
    driver_opts:
    type: none
    o: bind
    device: /data/searxng-docker/redis

    这里有几个关键点需要注意:

  • 移除了Caddy服务:对于内网部署,直接用Nginx或直接访问端口更简单
  • 持久化引擎目录:这是支持国内搜索引擎的关键,后面会详细说明
  • 使用Valkey替代Redis:Valkey是Redis的分支,兼容性更好,性能也有所提升
  • 网络配置:使用自定义网络,方便后续与OpenWebUI容器通信
  • 2.3 配置文件深度定制

    SearXNG的配置文件位于./searxng/settings.yml。首次启动容器时会自动生成默认配置,但我们需要对其进行定制以支持国内搜索引擎。

    首先创建必要的目录结构:

    # 创建配置目录
    mkdir -p searxng engines

    # 首次启动以生成默认配置
    docker compose up -d
    sleep 10 # 等待容器启动
    docker compose down # 停止容器以修改配置

    现在我们来修改searxng/settings.yml文件。以下是我经过多次测试优化的配置:

    # 使用默认设置作为基础
    use_default_settings: true

    server:
    # base_url在环境变量SEARXNG_BASE_URL中定义
    secret_key: \”你的安全密钥\” # 使用openssl rand -hex 32生成
    limiter: false # 私有实例可以禁用限制器
    image_proxy: true # 启用图片代理,保护用户隐私

    ui:
    static_use_hash: true

    redis:
    url: redis://redis:6379/0

    search:
    formats:
    – html
    – json # 必须启用JSON格式,OpenWebUI需要

    # 搜索引擎配置 – 重点部分
    engines:
    # 启用国内搜索引擎
    – name: baidu
    categories:
    – web
    – news
    – general
    engine: baidu
    shortcut: bd
    timeout: 9.0
    disabled: false
    enable_http: false # 强制使用HTTPS

    – name: 360search
    categories:
    – web
    – news
    – general
    engine: 360search
    shortcut: 360so
    timeout: 9.0
    disabled: false
    enable_http: false

    – name: sogou
    categories:
    – web
    – news
    – general
    engine: sogou
    shortcut: sg
    timeout: 9.0
    disabled: false

    # 禁用部分不常用或访问慢的国外引擎
    – name: google
    engine: google
    disabled: true # 国内访问困难,建议禁用

    – name: bing
    engine: bing
    disabled: true # API限制严格

    – name: duckduckgo
    engine: duckduckgo
    disabled: true

    – name: startpage
    engine: startpage
    disabled: true

    # 保留一些有用的国外引擎(可选)
    – name: wikipedia
    engine: wikipedia
    disabled: false
    timeout: 15.0 # 维基百科可以慢一点

    – name: github
    engine: github
    disabled: false
    shortcut: gh

    提示:secret_key需要自己生成,可以使用命令openssl rand -hex 32。Windows用户可以用PowerShell:<

    赞(0)
    未经允许不得转载:171主机测评 » OpenWebUI联网搜索实战:如何用SearXNG让本地大模型获取实时信息(附百度/360配置)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址