找回密码
 立即注册
首页 业界区 业界 SearXNG私有化部署与Dify集成

SearXNG私有化部署与Dify集成

卓卞恻 2025-6-3 10:45:42
一、概述

SearXNG 是一个免费的互联网元搜索引擎,它聚合了来自各种搜索服务和数据库的结果,但摆脱了隐私追踪 —— 用户行为既不会被引擎跟踪也不会被分析。
功能特性

  • 自托管,可以私有化部署
  • 没有用户跟踪/没有分析
  • 可以自定义设置脚本和 cookies
  • 安全加密的连接
  • 轻松整合了近200个搜索引擎,用户可自定义选择不同的引擎
  • 多语言支持,约 60 个,包含中文、英文等
  • 提供近 100 个维护良好的公共查询实例
 
Github官方地址:
https://github.com/searxng/searxng-docker.git
 
官方安装文档:
https://docs.searxng.org/admin/installation-docker.html#installation-docker
 
简单来说,如果你的AI模型没有联网功能,可以通过这个插件,来实现联网功能。
二、安装SearXNG

根据官方安装文档,只需要使用docker启动即可
  1. $ mkdir my-instance
  2. $ cd my-instance
  3. $ export PORT=8080
  4. $ docker pull searxng/searxng
  5. $ docker run --rm \
  6.              -d -p ${PORT}:8080 \
  7.              -v "${PWD}/searxng:/etc/searxng" \
  8.              -e "BASE_URL=http://localhost:$PORT/" \
  9.              -e "INSTANCE_NAME=my-instance" \
  10.              searxng/searxng
  11. 2f998.... # container's ID
复制代码
 
为了方便管理SearXNG,这里使用docker-compose来启动。
编辑文件docker-compose.yaml
  1. mkdir /data/searxng
  2. cd /data/searxng
  3. vi docker-compose.yaml
复制代码
内容如下:
  1. services:
  2.   searxng:
  3.     image: searxng/searxng
  4.     container_name: searxng
  5.     ports:
  6.       - "8081:8080"
  7.     environment:
  8.       BASE_URL: http://localhost:8081
  9.       INSTANCE_NAME: my-instance
  10.     volumes:
  11.       - ./searxng:/etc/searxng:rw
  12.     restart: always
  13. volumes:
  14.   searxng-data:
复制代码
说明:
8081:8080,避免端口冲突,改成8081
 
启动应用
  1. docker-compose up -d
复制代码
 
生成密钥
  1. openssl rand -hex 32
复制代码
输出:
34788b49b8f9d819cfcb09da447b0d8586c63ad1acd469a1e446
 
修改配置文件
  1. cp searxng/settings.yml searxng/settings.yml.bak
  2. vi searxng/settings.yml
复制代码
清空默认内容,一行不留,完整内容如下:
  1. # see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
  2. use_default_settings: true
  3. server:
  4.   # base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
  5.   secret_key: "34788b49b8f9d819cfcb09da447b0d8586c63ad1acd469a1e446"
  6.   limiter: false
  7.   image_proxy: true
  8. ui:
  9.   static_use_hash: true
  10. redis:
  11.   url: false
  12. search:
  13.   formats:
  14.     - html
  15.     - json
  16. engines:
  17. # 启用默认禁用的引擎
  18.   - name: baidu
  19.     engine: baidu
  20.     disabled: false
  21.   - name: 360search
  22.     engine: 360search
  23.     disabled: false
  24.   - name: sogou
  25.     engine: sogou
  26.     disabled: false
  27.   - name: bing
  28.     engine: bing
  29.     disabled: false
  30.   - name: bilibili
  31.     engine: bilibili
  32.     disabled: false
  33.   # 禁用默认启用的引擎
  34.   - name: archlinuxwiki
  35.     engine: archlinux
  36.     disabled: true
  37.   - name: duckduckgo
  38.     engine: duckduckgo
  39.     distabled: true
  40.   - name: github
  41.     engine: github
  42.     shortcut: gh
  43.     disabled: true
  44.   - name: wikipedia
  45.     engine: wikipedia
  46.     disabled: true
  47.   - name: google
  48.     engine: google
  49.     disabled: true
  50.   - name: youtube
  51.     engine: youtube_noapi
  52.     disabled: true
  53.   - name: duckduckgo
  54.     engine: duckduckgo
  55.     disabled: true
  56.   - name: qwant
  57.     engine: qwant
  58.     disabled: true
  59.   - name: brave
  60.     engine: brave
  61.     disabled: true
  62.   - name: startpage
  63.     engine: startpage
  64.     disabled: true
复制代码
 
说明:
secret_key: 上面生成的密钥
limiter: false,禁用请求限制器,否则可能触发 too many requests 的问题
redis:
    url: false,这里不需要使用redis存储
search:
  formats:
    - html
    - json,扩展数据返回格式,增加json,否则设置SearXNG插件,添加访问search接口会报错403
 engines:
   搜索引擎设置,这里开启了国内几个能访问的搜索引擎,禁用了一些无法访问的国外搜索引擎。
 
重新启动应用
  1. docker-compose down
  2. docker-compose up -d
复制代码
访问searxng页面
http://10.44.32.14:8081/
 
点击设置
搜索语音为中文,自动补全选择百度。最后保存
1.png

 
 
验证 json 接口
http://10.44.32.14:8081/search?q=test&format=json
效果如下:
2.png

搜索功能展示
3.png

三、Dify集成

登录到dify,点击工具,搜索SearXNG
4.png

点击插件,设置授权
输入地址:
http://10.44.32.14:8081
5.png

 
新建智能体
6.png

提示词如下:
  1. ## 技能
  2. ### 技能1:使用searxng_search工具进行联网搜索
  3. ### 技能2:使用webscraper功能对搜索到的相关内容进行爬取,并进行总结分析
  4. ## 限制
  5. - 如果没有相关内容,再进行联网搜索
  6. - 你的回答应严格针对分析任务。使用结构化语言,逐步思考
  7. - 使用的语言应和用户提问的语言相同
  8. - 搜索的关键词必须和用户提问的内容一致
复制代码
点击工具添加
7.png

添加2个工具
searxng_search
webscraper
 
设置模型
8.png

说明:
searxng_search工具返回的搜索结果,有几十条,这并不是我们最终想要的。
所以需要webscraper功能对搜索到的相关内容进行爬取,并进行总结分析,得到一条最终结果,才是我们想要的。
就像上面看到的搜索上海天气,有几十条。那么我们只需一条最终结果即可。
 
点击发布更新,点击运行
9.png

今天上海天气怎么样?
效果如下:
10.png

 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册