SearXNG开启json响应便于大模型web_search

为了让本地大模型(如 llama.cpp + 某个前端)调用它,通常需要在 SearXNG 的配置文件 settings.yml 中,将 search.formats 下的 json 格式激活(默认可能只开启了 html)。因为 AI 只能看懂结构化的 JSON 数据,看不懂网页的 HTML。配置 SearXNG 以激活 json 格式非常简单。大模型前端(如 Open WebUI、Dify 等)通常需要通过 JSON 格式来读取 SearXNG 的搜索结果。


1.找到或创建配置文件

SearXNG 的核心配置文件是 settings.yml。如果你是用 Docker 部署的(/etc/searxng/settings.yml),建议将这个文件挂载到宿主机,方便修改。

  1. 在本地创建一个目录(例如 mkdir searxng 并进入)。
  2. 在该目录下创建一个名为 settings.yml 的文件。

2.修改 settings.yml 激活 JSON

打开 settings.yml 文件,找到 search: 这一行(如果没有则手动添加)。你需要确保 formats: 列表中包含了 json

标准的配置模板如下:

1
2
3
4
5
6
7
8
9
10
# settings.yml 示例配置

search:
safe_search: 0 # 安全搜索设置:0 为关闭,1 为适度,2 为严格
autocomplete: "" # 自动补全引擎
# 关键配置:激活输出格式
formats:
- html
- json # 确保这一行存在且没有被注释

注意:YAML 格式对空格极其敏感。- json 前面必须是空格(通常是 4 个空格),绝对不能使用 Tab 键,否则 Docker 容器会启动失败。


3.使用挂载配置启动 Docker

配置好 settings.yml 后,你需要让 Docker 容器读取这个自定义文件。使用以下命令启动(假设你当前就在 settings.yml 所在的目录下):

1
2
3
4
5
6
docker run -d \
-p 8888:8080 \
--name searxng \
-v "$(pwd)/settings.yml:/etc/searxng/settings.yml" \
--restart always \
searxng/searxng:latest
  • **-v "$(pwd)/settings.yml:/etc/searxng/settings.yml"**:这一行的作用就是把你刚才修改的本地配置文件,映射到 Docker 内部的默认配置路径。

4.验证 JSON 是否激活成功

部署完成后,你可以通过浏览器或终端来测试 JSON 输出是否正常。

打开终端,运行以下 curl 命令(或者直接在浏览器地址栏输入该 URL):

1
curl "http://localhost:8888/search?q=apple&format=json"
  • 如果配置成功:你会收到一大串类似 {"query": "apple", "results": [...]} 的结构化文本数据。
  • 如果配置失败:页面可能会报错 403 ForbiddenInvalid format,这意味着 json 格式没有被正确允许。

086583824cd55c91a9a06eb5fdf00149.png