SearXNG 搜索引擎
SearXNG 是一个整合了超过70个搜索服务结果的免费的私有互联网搜索引擎,用户不会被网站跟踪或被建立档案进行特征分析,良好地保障了用户的隐私。知识库可以有效地弥补大模型的知识欠缺问题,但依旧无法补充或弥补知识库和大模型知识陈旧的问题,于是让大模型联网成为了非常重要的功能。
本章将介绍如何使用 Docker Compose 部署属于私人的 SearXNG 服务,项目地址点击即跳转。
Docker Compose 部署
可能会有小伙伴要问为啥不使用 SearXNG 官方维护的 SearXNG-Docker 项目 ?官方的这个项目默认使用的 Caddy
作为反向代理,最有可能出现的一个问题是会和你服务器上的 80 端口出现冲突,导致 SearXNG 无法与你的服务器上的其它网站共存。而注释掉官方项目中 docker-compose.yaml
有关 Caddy
的部分,就不如自行部署了。
首先创建一个路径用于存放配置文件。
mkdir {Your Path}\SearXNG && cd SearXNG
进入该路径之后使用 vim 创建 docker-compose.yaml
文件。
vim docker-compose.yaml
将下面的内容粘贴到文件内并保存
name: searxng
services:
searxng:
container_name: searxng
image: searxng/searxng:latest
restart: unless-stopped
ports:
- 8080:8080
volumes:
- ./searxng:/etc/searxng # 默认在该文件所在的目录层级创建配置文件夹
environment:
- SEARXNG_BASE_URL=http://${SEARXNG_HOSTNAME:-localhost}/
- SEARXNG_SECRET=${SEARXNG_SECRET}
- SEARXNG_REDIS_URL=${SEARXNG_REDIS_URL:-redis://redis:6379}
- UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-10}
- UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-10}
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
1panel-network:
ipv4_address: 172.18.0.239
redis:
image: redis:alpine
container_name: searxng-redis
networks:
1panel-network:
ipv4_address: 172.18.0.240
command: redis-server --bind 0.0.0.0
networks:
1panel-network:
external: true
需要注意的是:所有的 Networks 部分需要根据你的 Docker 容器的实际网络配置进行修改,且需要确认分配的 ipv4_address
地址在 Docker 容器的网络内没有被占用。
保存之后使用下面的指令创建、更新并运行容器。
sudo docker-compose up -d
你可以看到,在 {Your Path}\SearXNG
路径之下,创建了一个新的文件夹 searxng
,该文件夹用于存放配置文件 settings.yml
。
在浏览器输入网址 http://Server-IP:Port
即可访问搜索引擎。
定制 SearXNG Engine
Internet Proxy
该项目是一个国外主导的开源私人搜索引擎,因此由于众所周知的原因,只能访问少量的搜索引擎,例如:Bing[通用搜索]、Bilibili[视频搜索]、Github[信息技术]、Arxiv[学术] 等等。如果需要访问更多的搜索引擎,需要使用网络代理服务。
进入到部署路径的 searxng
文件夹,就是刚才生成的那个文件夹,里面有一个 settings.yml
文件,使用具有权限的 vim 打开。
sudo vim settings.yml
配置的位置位于 outgoing
部分,如下下面的这部分前面的 #
删除
# proxies:
# all://:
# - http://proxy1:8080
# - http://proxy2:8080
你可以配置一个或多个代理用于访问搜索引擎,需要将 http://proxy:8080
替换成你的代理的地址。
除此之外,还可以设置请求超时.
request_timeout: 3.0
修改完成后需要重启容器,设置立即生效。
Search Formats
项目默认的搜索返回的格式为 html
格式,在使用网络爬虫或其它形式的分析器调用 API 时,希望返回 json
格式,这时就需要修改返回格式。
进入到部署路径的 searxng
文件夹,就是刚才生成的那个文件夹,里面有一个 settings.yml
文件,使用具有权限的 vim 打开。
sudo vim settings.yml
配置的位置位于 search
部分,在 formats
后按照格式添加你需要的格式,如下所示。
# formats: [html, csv, json, rss]
formats:
- html
- csv
- json
- rss
修改完成之后需要重启容器,设置立即生效。
调用 API 时,可以指定开启的格式:
http://Server-IP:Port/search?q=xxx&format=json
效果如下:
SearXNG Search API
基础的API地址如下:
http://Server-IP:Port/search
搜索内容 q, required
http://Server-IP:Port/search?q=xxx
返回格式 format, optional
格式有 [ json
, csv
, rss
],三选一
http://Server-IP:Port/search?q=xxx&format=json
搜索分类 categories, optional
http://Server-IP:Port/search?q=xxx&categories=general
可选的类别有:
分类 | 名称 |
---|---|
general | 综合 |
images | 图片 |
videos | 视频 |
news | 新闻 |
map | 地图 |
music | 音乐 |
it | 信息技术 |
science | 科学 |
files | 文件 |
social_media | 社交媒体 |
搜索页数 pageno, default 1
搜索第几页的内容,推荐5页及以内。
http://Server-IP:Port/search?q=xxx&pageno=1
搜索引擎 engines, optional
http://Server-IP:Port/search?q=xxx&=apple&engines=google,bing,duckduckgo
具体的搜索引擎查询官方文档