PowerData

以下文章来源于DataSpeed ,作者codephage

[

DataSpeed .

慢慢积累,稳稳前行,用数据说话,为成长助力

](#)

导读:

开发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[1]

反向代理(自动创建 Lets Encrypt 证书)

docker.io/library/caddy:2-alpine[2]

Dockerfile[3]

SearXNG[4]

SearXNG 本身

docker.io/searxng/searxng:latest[5]

Dockerfile[6]

Valkey[7]

内存数据库

docker.io/valkey/valkey:8-alpine[8]

Dockerfile[9]

需要做如下修改

  • 首先是删除 caddy 部分,我不需要它的反向代理,所以删除
  • 其次第一次运行时,删除 cap\_drop: - ALL,运行完后添加回
  • 最后修改服务设置的端口(默认是 8080)

version: "3.7" services: redis:     container_name:redis     image:docker.io/valkey/valkey:8-alpine     command:valkey-server--save301--loglevelwarning     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

如果你有兴趣,或者已经在用Dify了,欢迎添加作者微信,我们组织了一个Dify交流群,欢迎来提问或者分享你的经验。

7.1 安装 SearXNG 插件

在 marketplace 中搜索插件并安装

7.2 配置 SearXNG 插件

在安装的插件中,配置 base url,点击保存即可。 如不成功,可检查 2.x 配置或者检查容器日志。

引用链接

[1] 

Caddy: https://github.com/caddyserve...

[2] 

docker.io/library/caddy:2-alpine: https://hub.docker.com/\_/caddy

[3] 

Dockerfile: https://github.com/caddyserve...

[4] 

SearXNG: https://github.com/searxng/se...

[5] 

docker.io/searxng/searxng:latest: https://hub.docker.com/r/sear...

[6] 

Dockerfile: https://github.com/searxng/se...

[7] 

Valkey: https://github.com/valkey-io/...

[8] 

docker.io/valkey/valkey:8-alpine: https://hub.docker.com/r/valk...

[9] 

Dockerfile: https://github.com/valkey-io/...

关于作者

作者拥有5年大数据开发经验,现任某车企大数据架构师,数据治理工程师(CDGA)。日常关注大数据组件和大模型应用,期待与您交流。

DataSpeed聚焦“大数据+AI”实战与资讯,技术干货和行业消息一网打尽。期待与你同行,欢迎扫码添加作者微信。

关于社区

PowerData社区是由一群数据从业人员,因为热爱凝聚在一起,以开源精神为基础,组成的数据开源社区。

社区群内会定期组织模拟面试、线上分享、行业研讨(涉及金融、医疗、能源、工业、互联网等)、线下Meet UP、城市聚会、求职内推等。同时,在社区群内您可以进行技术讨论、问题请教,届时更多志同道合的数据朋友。

社区整理了一份每日一题汇总及社区分享PPT,内容涵盖大数据组件、编程语言、数据结构与算法、企业真实面试题等各个领域,帮助您自我提升,成功上岸。可以添加作者微信(Y0T0W02020),进入PowerData官方社区群。 

往期推荐

大模型开发工具Dify-入门篇

大模型开发工具对比


PowerData
1 声望6 粉丝

PowerData社区官方思否账号