背景
最近一直在研究 AI 一些相关应用,发现现在的 AI 都提供了一个联网功能,经过学习发现他们都是通过搜索引擎的 API 提供搜索,并将搜索结果作为知识交给大模型。经过几番研究发现了 SearXNG:一个聚合搜索引擎。
SearxNG 作为一个搜索引擎聚合器,它自身整合了200多个搜索引擎的结果,提供了强大的搜索能力。同时 SearxNG 还提供 API 允许用户从多个搜索引擎中获取结果,既可以用于简单的搜索任务,也可以用于复杂的数据挖掘操作。
经过研究发现,他其实是通过抓取、或者接口调用的方式聚合了多家搜索引擎的结果。遗憾的是200多家搜索引擎并不包括百度。另外如果想聚合 Google 等国外引擎可能需要一些特殊办法。不过经测试 Bing 结果还算可以,质量也可以接受。
部署
SearXNG 是由 Python 开发,支持 Docker 部署,部署起来简单方便。但是因为一些特殊原因需要根据需要配置一下后端搜索引擎和开启接口功能(因为我主要是需要接口功能)。
Docker部署
1
2
3
4
5
6
7
8
9
10
11
12
# 设置环境变量,这个是对外提供服务的端口
export PORT=8080
# 拉取镜像,由于某些自强的原因,可能需要一些自强不息的手段
$ docker pull searxng/searxng
# 创建容器,启动服务
# 注意:这个容器启动如果停止就会被删除,如果不想被删除去掉 --rm 参数即可
$ 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
配置
首先需要进入docker内,并根据您的需要进行修改 /etc/searxng/settings.yml
文件。
1
docker exec -it 容器名或容器ID /bin/sh
在容器内修改配置文件 /etc/searxng/settings.yml
。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 开启引擎的方法,找到引擎配置
engines:
# 找到要开启或关闭的引擎,注意有些引擎是需要key的
- name: bing
engine: bing
shortcut: bi
disabled: true # 这个表示关闭,注释掉就开启了
# 开启json接口
search:
# 找到search项中的formats
# remove format to deny access, use lower case.
# formats: [html, csv, json, rss]
formats:
- html
- json # 增加json即可开启接口
配置完后需要重启服务,最简单的办法是重启一下容器,注意是充气容器而不是重新创建容器。
1
docker container restart 容器名或容器ID
使用
注意:如果只是调用接口到上面就结束了。如果没有修改引擎,到上面也结束了。如果你增加或者删除引擎,这里可能需要增加一个页面引擎设置,否则新增加的引擎不会被调用,关闭的引擎还会继续调用。
按照你后端引擎配置的实际情况设置即可。