🌐 Web Search
本教程由社区贡献,并未得到Open WebUI团队的支持。它仅作为如何为您的特定用例自定义Open WebUI的演示。想要贡献?请查看贡献教程。
🌐 网络搜索
本指南提供了如何在Open WebUI中使用各种搜索引擎设置网络搜索功能的说明。
SearXNG (Docker)
"SearXNG是一款免费的互联网元搜索引擎,聚合来自各种搜索服务和数据库的结果。用户不会被追踪或分析。"
1. SearXNG配置
要为Open WebUI优化配置SearXNG,请按照以下步骤操作:
步骤1: git clone
SearXNG Docker并导航到该文件夹:
- 创建一个新目录
searxng-docker
克隆searxng-docker仓库。此文件夹将包含您的SearXNG配置文件。有关配置说明,请参阅SearXNG文档。
git clone https://github.com/searxng/searxng-docker.git
导航到searxng-docker
仓库:
cd searxng-docker
步骤2: 定位并修改.env
文件:
- 取消注释
.env
文件中的SEARXNG_HOSTNAME
并进行相应设置:
# 默认监听https://localhost
# 要改变这个:
# * 取消注释SEARXNG_HOSTNAME,并将替换为SearXNG主机名
# * 取消注释LETSENCRYPT_EMAIL,并将替换为您的电子邮件(需要创建Let's Encrypt证书)
SEARXNG_HOSTNAME=localhost:8080/
# LETSENCRYPT_EMAIL=
# 可选:
# 如果您运行一个非常小或非常大的实例,您可能希望更改使用的uwsgi工作者数量和每个工作者的线程数量
# 更多的工作者(=进程)意味着可以同时处理更多的搜索请求,但也会导致更多的资源使用
# SEARXNG_UWSGI_WORKERS=4
# SEARXNG_UWSGI_THREADS=4
步骤3: 修改docker-compose.yaml
文件
- 通过修改
docker-compose.yaml
文件移除localhost
限制:
sed -i "s/127.0.0.1:8080/0.0.0.0:8080/"
步骤4: 授予必要的权限
- 通过在根目录运行以下命令,允许容器创建新的配置文件:
sudo chmod a+rwx searxng-docker/searxng
步骤5: 创建一个非限制性的limiter.toml
文件
- 创建一个非限制性的
searxng-docker/searxng/limiter.toml
配置文件:
searxng-docker/searxng/limiter.toml
# 此配置文件更新默认配置文件
# 请参阅https://github.com/searxng/searxng/blob/master/searx/botdetection/limiter.toml
[botdetection.ip_limit]
# 在ip_limit方法中激活link_token方法
link_token = false
[botdetection.ip_lists]
block_ip = []
pass_ip = []
步骤6: 移除默认的settings.yml
文件
- 如果存在,删除默认的
searxng-docker/searxng/settings.yml
文件,因为它将在SearXNG首次启动时重新生成:
rm searxng-docker/searxng/settings.yml
步骤7: 创建一个新的settings.yml
文件
在第一次运行时,您必须从docker-compose.yaml
文件中删除cap_drop: - ALL
,以便searxng
服务能够成功创建/etc/searxng/uwsgi
.ini。这是必要的,因为cap_drop: - ALL
指令会移除所有能力,包括创建uwsgi.ini
文件所需的能力。首次运行后,出于安全原因,您应该重新添加cap_drop: - ALL
到docker-compose.yaml
文件中。
- 短暂启动容器以生成一个新的settings.yml文件:
docker compose up -d ; sleep 10 ; docker compose down
步骤8: 添加格式并更新端口号
- 在
searxng-docker/searxng/settings.yml
文件中添加HTML和JSON格式:
sed -i 's/formats: \[\"html\"\/]/formats: [\"html\", \"json\"]/' searxng-docker/searxng/settings.yml
为您的SearXNG实例生成一个密钥:
sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng-docker/searxng/settings.yml
Windows用户可以使用以下powershell脚本生成密钥:
$randomBytes = New-Object byte[] 32
(New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes($randomBytes)
$secretKey = -join ($randomBytes | ForEach-Object { "{0:x2}" -f $_ })
(Get-Content searxng-docker/searxng/settings.yml) -replace 'ultrasecretkey', $secretKey | Set-Content searxng-docker/searxng/settings.yml
在server
部分中更新端口号以匹配您之前设置的端口号(在本例中为8080
):
sed -i 's/port: 8080/port: 8080/' searxng-docker/searxng/settings.yml
根据需要更改bind_address
:
sed -i 's/bind_address: "0.0.0.0"/bind_address: "127.0.0.1"/' searxng-docker/searxng/settings.yml
配置文件
searxng-docker/searxng/settings.yml(摘要)
默认的settings.yml
文件包含许多引擎设置。下面是默认settings.yml
文件的一个摘录:
searxng-docker/searxng/settings.yml
# 请参阅https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
# base_url在SEARXNG_BASE_URL环境变量中定义,请参阅.env和docker-compose.yml
secret_key: "ultrasecretkey" # 请更改此项!
limiter: true # 可以为私人实例禁用
image_proxy: true
port: 8080
bind_address: "0.0.0.0"
ui:
static_use_hash: true
search:
safe_search: 0
autocomplete: ""
default_lang: ""
formats:
- html
- json # 需要json
# 移除格式以拒绝访问,请使用小写。
# formats: [html, csv, json, rss]
redis:
# 连接redis数据库的URL。会被${SEARXNG_REDIS_URL}覆盖。
# https://docs.searxng.org/admin/settings/settings_redis.html#settings-redis
url: redis://redis:6379/0
SearXNG的settings.yml文件中的端口应与您的docker-compose.yml文件中的端口号相匹配。
步骤9: 更新uwsgi.ini
文件
- 确保您的
searxng-docker/searxng/uwsgi.ini
文件与以下内容匹配:
searxng-docker/searxng/uwsgi.ini
[uwsgi]
# 谁将运行代码
uid = searxng
gid = searxng
# 工作者数量(通常为CPU数量)
# 默认值:%k(= CPU核心数量,请参阅Dockerfile)
workers = %k
# 每个工作者的线程数量
# 默认值:4(请参阅Dockerfile)
threads = 4
# 创建的套接字的权限
chmod-socket = 666
# 使用的插件和解释器配置
single-interpreter = true
master = true
plugin = python3
lazy-apps = true
enable-threads = 4
# 要导入的模块
module = searx.webapp
# 虚拟环境和python路径
pythonpath = /usr/local/searxng/
chdir = /usr/local/searxng/searx/
# 自动将进程名称设置为有意义的名字
auto-procname = true
# 出于隐私原因禁用请求日志
disable-logging = true
log-5xx = true
# 设置请求的最大大小(不包括请求主体)
buffer-size = 8192
# 无保持连接
# 请参阅https://github.com/searx/searx-docker/issues/24
add-header = Connection: close
# uwsgi为静态文件提供服务
static-map = /static=/usr/local/searxng/searx/static
# 过期时间设置为一天
static-expires = /* 86400
static-gzip-all = True
offload-threads = 4
2. 替代设置
或者,如果您不想修改默认配置,可以简单地创建一个空的searxng-docker
文件夹并遵循其余的设置说明。
Docker Compose设置
将以下环境变量添加到您的Open WebUI docker-compose.yaml
文件中:
services:
open-webui:
environment:
ENABLE_RAG_WEB_SEARCH: True
RAG_WEB_SEARCH_ENGINE: "searxng"
RAG_WEB_SEARCH_RESULT_COUNT: 3
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10
SEARXNG_QUERY_URL: "http://searxng:8080/search?q="
为SearXNG创建一个.env
文件:
# SearXNG
SEARXNG_HOSTNAME=localhost:8080/
接下来,将以下内容添加到SearXNG的docker-compose.yaml
文件中:
services:
searxng:
container_name: searxng
image: searxng/searxng:latest
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
env_file:
- .env
restart: unless-stopped
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
您的堆栈已准备好启动:
docker compose up -d
在第一次运行时,您必须从docker-compose.yaml
文件中删除cap_drop: - ALL
,以便searxng
服务能够成功创建/etc/searxng/uwsgi
.ini。这是必要的,因为cap_drop: - ALL
指令会移除所有能力,包括创建uwsgi.ini
文件所需的能力。首次运行后,出于安全原因,您应该重新添加cap_drop: - ALL
到docker-compose.yaml
文件中。
或者,您可以直接使用docker run
运行SearXNG:
docker run --name searxng --env-file .env -v ./searxng:/etc/searxng:rw -p 8080:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 searxng/searxng:latest
3. 确认连接
在您的命令行界面中,从您的Open WebUI容器实例确认与SearXNG的连接:
docker exec -it open-webui curl http://host.docker.internal:8080/search?q=this+is+a+test+query&format=json
4. 图形界面配置
- 导航至:
管理面板
->设置
->网络搜索
- 切换
启用网络搜索
- 从下拉菜单中将
搜索引擎
设置为searxng
- 将
Searxng查询URL
设置为以下示例之一:
http://searxng:8080/search?q=
(使用容器名称和暴露的端口,适用于基于Docker的设置)http://host.docker.internal:8080/search?q=
(使用host.docker.internal
DNS名称和主机端口,适用于基于Docker的设置)http:///search?q=
(使用本地域名,适用于本地网络访问)https:///search?q=
(使用自定 义域名的自托管SearXNG实例,适用于公共或私人访问)
请注意,/search?q=
部分是必需的。
5. 根据需要调整搜索结果数量
和并发请求
的值
6. 保存更改
5. 在聊天中使用网络搜索
要访问网络搜索,请点击消息输入字段旁边的+。
在这里,您可以切换网络搜索开启/关闭。
通过遵循这些步骤,您将成功设置SearXNG与Open WebUI的集成,使您能够使用SearXNG引擎进行网络搜索。
注意
您必须在聊天中明确地切换此项开启/关闭。
这是基于每个会话启用的,例如重新加载页面,切换到另一个聊天将关闭。
Google PSE API
设置
- 前往Google Developers,使用可编程搜索引擎,登录或创建账户。
- 前往控制面板并点击
添加
按钮 - 输入搜索引擎名称,设置其他属性以满足您的需求,验证您不是机器人并点击
创建
按钮。 - 生成
API密钥
并获取搜索引擎ID
。(在创建引擎后可用) - 使用
API密钥
和搜索引擎ID
,打开Open WebUI管理面板
并点击设置
选项卡,然后点击网络搜索
- 启用
网络搜索
并将搜索引擎
设置为google_pse
- 用
API密钥
填写Google PSE API Key
,并用搜索引擎ID
填写Google PSE Engine Id
(第4步) - 点击
保存
注意
您必须在提示字段中使用加号(+
)按钮启用网络搜索
。
搜索网络;-)
Brave API
Docker Compose设置
将以下环境变量添加到您的Open WebUI docker-compose.yaml
文件中:
services:
open-webui:
environment:
ENABLE_RAG_WEB_SEARCH: True
RAG_WEB_SEARCH_ENGINE: "brave"
BRAVE_SEARCH_API_KEY: "YOUR_API_KEY"
RAG_WEB_SEARCH_RESULT_COUNT: 3
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10
Mojeek Search API
设置
- 请访问Mojeek Search API页面以获取
API密钥
- 使用
API密钥
,打开Open WebUI管理面板
并点击设置
选项卡,然后点击网络搜索
- 启用
网络搜索
并将搜索引擎
设置为mojeek
- 用
API密钥
填写Mojeek Search API Key
- 点击
保存
Docker Compose设置
将以下环境变量添加到您的Open WebUI docker-compose.yaml
文件中:
services:
open-webui:
environment:
ENABLE_RAG_WEB_SEARCH: True
RAG_WEB_SEARCH_ENGINE: "mojeek"
BRAVE_SEARCH_API_KEY: "YOUR_MOJEEK_API_KEY"
RAG_WEB_SEARCH_RESULT_COUNT: 3
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10
SearchApi API
SearchApi是一个实时SERP API集合。任何现有或即将推出的返回organic_results
的SERP引擎都受支持。默认的网络搜索引擎是google
,但可以更改为bing
,baidu
,google_news
,bing_news
,google_scholar
,google_patents
等。
设置
- 前往SearchApi,登录或创建一个新账户。
- 前往
仪表板
并复制API密钥。 - 使用
API密钥
,打开Open WebUI管理面板
并点击设置
选项卡,然后点击网络搜索
。 - 启用
网络搜索
并将搜索引擎
设置为searchapi
。 - 用您从SearchApi仪表板第2步复制的
API密钥
填写SearchApi API Key
。 - [可选] 输入您想查询的
SearchApi引擎
名称。例如,google
,bing
,baidu
,google_news
,bing_news
,google_videos
,google_scholar
和google_patents
。默认设置为google
。 - 点击
保存
。
注意
您必须在提示字段中使用加号(+
)按钮启用网络搜索
,以使用SearchApi引擎搜索网络。
Kagi API
即将推出
设置
Serpstack API
即将推出
设置
Serper API
即将推出
设置
Serply API
即将推出