开发 AI 应用时,大家常常头疼两件事:大模型无法接入实时数据,开发流程还特别复杂。下面给大家介绍的是 Dify 和 SearXNG 的私有搜索引擎部署方案,通过 Docker 实现 SearXNG 在 Windows 系统的快速搭建,并集成至 Dify 智能开发平台。
SearXNG 搜索引擎相当强大,支持 70 多个网站的搜索。配合上 Dify 的低代码配置应用,搜索到的数据会自动输送给 DeepSeek 等大模型进行总结,收集资讯、竞品分析等应用很方便。
1. 拉源码仓库
git clone https://github.com/searxng/searxng-docker.git
进入文件夹
cd searxng-docker
2. 修改 searxng/settings.yml
2.1 searxng/settings.yml 初始内容
# 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: true # can be disabled for a private instance
image_proxy: true
ui:
static_use_hash: true
redis:
url: redis://redis:6379/0
2.2 适配 dify
扩展数据返回格式支持
search:
formats:
- html
- json
2.3 生成秘钥 🔑
官方给的脚本(使用.NET 加密库)
$randomBytes = New-Object byte[] 32
(New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes($randomBytes)
$secretKey = -join ($randomBytes | ForEach-Object { "{0:x2}" -f $_ })
(Get-Content searxng/settings.yml) -replace 'ultrasecretkey', $secretKey | Set-Content searxng/settings.yml
或者 开始没有看到官方官方脚本所以写的(使用 OpenSSL 快速生成)
Set-Content -Path "searxng/settings.yml" -Value ((Get-Content -Path "searxng/settings.yml" -Raw) -replace "ultrasecretkey", (openssl rand -hex 32))
2.4 将limiter
配置项改为 false
禁用请求限制器,否则可能触发 too many requests
的问题,如下图
2.5 searxng/settings.yml 最终版本
# 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: "你的秘钥" #这里改变见2.3
limiter: false #这里改变见2.4
image_proxy: true
ui:
static_use_hash: true
redis:
url: redis://redis:6379/0
search: #这里改变见2.2
formats:
- html
- json
3. 修改 docker-compose.yaml
官方的 docker-compose 包含三个内容
Name | Description | Docker image | Dockerfile |
---|---|---|---|
Caddy | 反向代理(自动创建 Lets Encrypt 证书) | docker.io/library/caddy:2-alpine | Dockerfile |
SearXNG | SearXNG 本身 | docker.io/searxng/searxng:latest | Dockerfile |
Valkey | 内存数据库 | docker.io/valkey/valkey:8-alpine | Dockerfile |
需要做如下修改
- 首先是删除 caddy 部分,我不需要它的反向代理,所以删除
- 其次第一次运行时,删除 cap_drop: - ALL,运行完后添加回
- 最后修改服务设置的端口(默认是 8080)
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-data2:/data
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
searxng:
container_name: searxng
image: docker.io/searxng/searxng:latest
restart: unless-stopped
networks:
- searxng
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://${SEARXNG_HOSTNAME:-localhost}/
- UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
- UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
cap_add:
- CHOWN
- SETGID
- SETUID
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
searxng:
volumes:
valkey-data2:
4. 为 Docker 配置镜像源(可选)
如果你和我一样拉去镜像超时(下图),可以继续此项配置
在 Docker 配置中增加镜像源(下图红框指示)自行挑选一个国内镜像源
"registry-mirrors":["https://docker.1panel.live"]
5. 启动!!!
docker compose up -d
查看日志
docker compose logs -f searxng
6. 部署完成 🎉
6.1 主界面展示
访问设定的 base url 即可进行搜索
http://192.168.31.105:8018
6.2 验证 json 接口
http://192.168.31.105:8018/search?q=test&format=json
6.3 搜索功能展示
7. 在 Dify 中配置 SearXNG
7.1 安装 SearXNG 插件
在 marketplace 中搜索插件并安装
7.2 配置 SearXNG 插件
在安装的插件中,配置 base url,点击保存即可。
如不成功,可检查 2.x 配置或者检查容器日志。