SearXNG私有化部署与Dify集成

一、概述

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启动即可

$ mkdir my-instance
$ cd my-instance
$ export PORT=8080
$ docker pull searxng/searxng
$ docker run --rm \
             -d -p ${PORT}:8080 \
             -v "${PWD}/searxng:/etc/searxng" \
             -e "BASE_URL=http://localhost:$PORT/" \
             -e "INSTANCE_NAME=my-instance" \
             searxng/searxng
2f998.... # container's ID

为了方便管理SearXNG,这里使用docker-compose来启动。

编辑文件docker-compose.yaml

mkdir /data/searxng
cd /data/searxng
vi docker-compose.yaml

内容如下:

services:
  searxng:
    image: searxng/searxng
    container_name: searxng
    ports:
      - "8081:8080"
    environment:
      BASE_URL: http://localhost:8081
      INSTANCE_NAME: my-instance
    volumes:
      - ./searxng:/etc/searxng:rw
    restart: always

volumes:
  searxng-data:

说明:

8081:8080,避免端口冲突,改成8081

启动应用

docker-compose up -d

生成密钥

openssl rand -hex 32

输出:

34788b49b8f9d819cfcb09da447b0d8586c63ad1acd469a1e446

修改配置文件

cp searxng/settings.yml searxng/settings.yml.bak
vi 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: "34788b49b8f9d819cfcb09da447b0d8586c63ad1acd469a1e446"
  limiter: false
  image_proxy: true
ui:
  static_use_hash: true
redis:
  url: false
search:
  formats:
    - html
    - json
engines:
# 启用默认禁用的引擎
  - name: baidu
    engine: baidu
    disabled: false
  - name: 360search
    engine: 360search
    disabled: false
  - name: sogou
    engine: sogou
    disabled: false
  - name: bing
    engine: bing
    disabled: false
  - name: bilibili
    engine: bilibili
    disabled: false
  # 禁用默认启用的引擎
  - name: archlinuxwiki
    engine: archlinux
    disabled: true
  - name: duckduckgo
    engine: duckduckgo
    distabled: true
  - name: github
    engine: github
    shortcut: gh
    disabled: true
  - name: wikipedia
    engine: wikipedia
    disabled: true
  - name: google
    engine: google
    disabled: true
  - name: youtube
    engine: youtube_noapi
    disabled: true
  - name: duckduckgo
    engine: duckduckgo
    disabled: true
  - name: qwant
    engine: qwant
    disabled: true
  - name: brave
    engine: brave
    disabled: true
  - name: startpage
    engine: startpage
    disabled: true

说明:

secret_key: 上面生成的密钥

limiter: false,禁用请求限制器,否则可能触发 too many requests 的问题

redis:

    url: false,这里不需要使用redis存储

search:

  formats:

    - html

    - json,扩展数据返回格式,增加json,否则设置SearXNG插件,添加访问search接口会报错403

 engines:

   搜索引擎设置,这里开启了国内几个能访问的搜索引擎,禁用了一些无法访问的国外搜索引擎。

重新启动应用

docker-compose down
docker-compose up -d

访问searxng页面

http://10.44.32.14:8081/

点击设置

搜索语音为中文,自动补全选择百度。最后保存

验证 json 接口

http://10.44.32.14:8081/search?q=test&format=json

效果如下:

搜索功能展示

三、Dify集成

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

点击插件,设置授权

输入地址:

http://10.44.32.14:8081

新建智能体

提示词如下:

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

点击工具添加

添加2个工具

searxng_search

webscraper

设置模型

说明:

searxng_search工具返回的搜索结果,有几十条,这并不是我们最终想要的。

所以需要webscraper功能对搜索到的相关内容进行爬取,并进行总结分析,得到一条最终结果,才是我们想要的。

就像上面看到的搜索上海天气,有几十条。那么我们只需一条最终结果即可。

点击发布更新,点击运行

今天上海天气怎么样?

效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值