跳到主要内容

🌐 Web Search

注意

本教程由社区贡献,并未得到Open WebUI团队的支持。它仅作为如何为您的特定用例自定义Open WebUI的演示。想要贡献?请查看贡献教程。

🌐 网络搜索

本指南提供了如何在Open WebUI中使用各种搜索引擎设置网络搜索功能的说明。

SearXNG (Docker)

"SearXNG是一款免费的互联网元搜索引擎,聚合来自各种搜索服务和数据库的结果。用户不会被追踪或分析。"

1. SearXNG配置

要为Open WebUI优化配置SearXNG,请按照以下步骤操作:

步骤1: git clone SearXNG Docker并导航到该文件夹:

  1. 创建一个新目录searxng-docker

克隆searxng-docker仓库。此文件夹将包含您的SearXNG配置文件。有关配置说明,请参阅SearXNG文档

git clone https://github.com/searxng/searxng-docker.git

导航到searxng-docker仓库:

cd searxng-docker

步骤2: 定位并修改.env文件:

  1. 取消注释.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文件

  1. 通过修改docker-compose.yaml文件移除localhost限制:
sed -i "s/127.0.0.1:8080/0.0.0.0:8080/"

步骤4: 授予必要的权限

  1. 通过在根目录运行以下命令,允许容器创建新的配置文件:
sudo chmod a+rwx searxng-docker/searxng

步骤5: 创建一个非限制性的limiter.toml文件

  1. 创建一个非限制性的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文件

  1. 如果存在,删除默认的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: - ALLdocker-compose.yaml文件中。

  1. 短暂启动容器以生成一个新的settings.yml文件:
docker compose up -d ; sleep 10 ; docker compose down

步骤8: 添加格式并更新端口号

  1. 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文件

  1. 确保您的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: - ALLdocker-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. 图形界面配置

  1. 导航至:管理面板 -> 设置 -> 网络搜索
  2. 切换启用网络搜索
  3. 从下拉菜单中将搜索引擎设置为searxng
  4. 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. 保存更改

SearXNG图形界面配置

5. 在聊天中使用网络搜索

要访问网络搜索,请点击消息输入字段旁边的+。

在这里,您可以切换网络搜索开启/关闭。

网络搜索用户界面切换

通过遵循这些步骤,您将成功设置SearXNG与Open WebUI的集成,使您能够使用SearXNG引擎进行网络搜索。

注意

您必须在聊天中明确地切换此项开启/关闭。

这是基于每个会话启用的,例如重新加载页面,切换到另一个聊天将关闭。

Google PSE API

设置

  1. 前往Google Developers,使用可编程搜索引擎,登录或创建账户。
  2. 前往控制面板并点击添加按钮
  3. 输入搜索引擎名称,设置其他属性以满足您的需求,验证您不是机器人并点击创建按钮。
  4. 生成API密钥并获取搜索引擎ID。(在创建引擎后可用)
  5. 使用API密钥搜索引擎ID,打开Open WebUI管理面板并点击设置选项卡,然后点击网络搜索
  6. 启用网络搜索并将搜索引擎设置为google_pse
  7. API密钥填写Google PSE API Key,并用搜索引擎ID填写Google PSE Engine Id(第4步)
  8. 点击保存

Open WebUI管理面板

注意

您必须在提示字段中使用加号(+)按钮启用网络搜索。 搜索网络;-)

启用网络搜索

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

设置

  1. 请访问Mojeek Search API页面以获取API密钥
  2. 使用API密钥,打开Open WebUI管理面板并点击设置选项卡,然后点击网络搜索
  3. 启用网络搜索并将搜索引擎设置为mojeek
  4. API密钥填写Mojeek Search API Key
  5. 点击保存

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,但可以更改为bingbaidugoogle_newsbing_newsgoogle_scholargoogle_patents等。

设置

  1. 前往SearchApi,登录或创建一个新账户。
  2. 前往仪表板并复制API密钥。
  3. 使用API密钥,打开Open WebUI管理面板并点击设置选项卡,然后点击网络搜索
  4. 启用网络搜索并将搜索引擎设置为searchapi
  5. 用您从SearchApi仪表板第2步复制的API密钥填写SearchApi API Key
  6. [可选] 输入您想查询的SearchApi引擎名称。例如,googlebingbaidugoogle_newsbing_newsgoogle_videosgoogle_scholargoogle_patents。默认设置为google
  7. 点击保存

Open WebUI管理面板

注意

您必须在提示字段中使用加号(+)按钮启用网络搜索,以使用SearchApi引擎搜索网络。

启用网络搜索

Kagi API

即将推出

设置

Serpstack API

即将推出

设置

Serper API

即将推出

设置

Serply API

即将推出

设置

DuckDuckGo API

设置

使用DuckDuckGo API进行Open WebUI内置网络搜索无需设置!DuckDuckGo在Open WebUI中开箱即用。

备注

您的网络搜索可能会受到限流。

Tavily API

即将推出

设置

Jina API

即将推出

设置

Bing API

设置

  1. 导航到AzurePortal并创建一个新资源。创建后,您将被重定向到资源概览页面。从那里选择"点击此处管理密钥。" 点击此处管理密钥
  2. 在密钥管理页面,找到Key1或Key2并复制您想要的密钥。
  3. 打开Open WebUI管理面板,切换到设置选项卡,然后选择网络搜索。
  4. 启用网络搜索选项并将搜索引擎设置为bing。
  5. 用您从AzurePortal仪表板第2步复制的API密钥填写SearchApi API Key
  6. 点击保存