# 配置联网搜索功能

> 配置 PureChatNext 搜索 Provider、网页抓取实现与故障排查方式。

来源：https://next-docs.purechat.cn/self-hosting/features/online-search

支持为 AI 配置**联网搜索功能**，使其能够实时获取互联网信息，从而提供更准确、最新的回答。联网搜索支持多个搜索引擎提供商，包括 [SearXNG](https://github.com/searxng/searxng)、[Search1API](https://www.search1api.com)、[Google](https://programmablesearchengine.google.com)、[Brave](https://brave.com/search/api) 等。

联网搜索可以让 AI 获取时效性内容，如最新新闻、技术动态或产品信息。你可以使用开源的 SearXNG自行部署，也可以选择集成主流搜索引擎服务，如 Search1API、Google、Brave等，根据你的使用场景自由组合。

通过设置搜索服务环境变量 `SEARCH_PROVIDERS` 和对应的 API Key，将在多个搜索源中查询并返回结果。你还可以搭配配置爬虫服务环境变量 `CRAWLER_IMPLS`（如 `browserless`、`firecrawl`、`tavily` 等）以提取网页内容，实现搜索 + 阅读的增强能力。

# 核心环境变量 [#核心环境变量]

## `CRAWLER_IMPLS` [#crawler_impls]

配置可用的网页爬虫，用于对网页进行结构化内容提取。

```dotenv
CRAWLER_IMPLS="naive,search1api"
```

支持的爬虫类型如下：

| 值             | 说明                                                               | 环境变量                                                                        |
| ------------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------- |
| `browserless` | 基于 [Browserless](https://www.browserless.io/) 的无头浏览器爬虫，适合渲染复杂页面。 | `BROWSERLESS_TOKEN`                                                         |
| `exa`         | 使用 [Exa](https://exa.ai/) 提供的爬虫能力，需申请 API。                       | `EXA_API_KEY`                                                               |
| `firecrawl`   | [Firecrawl](https://firecrawl.dev/) 无头浏览器 API，适合现代网站抓取。          | `FIRECRAWL_API_KEY`                                                         |
| `jina`        | 使用 [Jina AI](https://jina.ai/) 的爬虫服务，支持快速提取摘要信息。                 | `JINA_READER_API_KEY`                                                       |
| `naive`       | 内置简易通用爬虫，适用于标准网页结构。                                              |                                                                             |
| `search1api`  | 利用 [Search1API](https://www.search1api.com) 提供的页面抓取能力，适合结构化内容提取。 | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY` |
| `tavily`      | 使用 [Tavily](https://www.tavily.com/) 的网页抓取与摘要 API。               | `TAVILY_API_KEY`                                                            |

> 💡 设置多个爬虫可提升成功率，系统将根据优先级尝试不同爬虫。

***

## `JINA_USE_CN_DOMAINS` [#jina_use_cn_domains]

将 Jina Reader / Search 切换到中国大陆可用的备用域名。

```dotenv
JINA_USE_CN_DOMAINS=true
```

启用后会将 Jina 端点替换为：

* `https://r.jina.ai` → `https://r.jinaai.cn`
* `https://s.jina.ai` → `https://s.jinaai.cn`

> 📌 适用于中国大陆网络无法访问 `jina.ai` 的场景。认证方式与 API 行为保持不变。

***

## `CRAWL_CONCURRENCY` [#crawl_concurrency]

控制单次网页抓取任务的并发数量，默认值为 `3`。在低配置服务器上建议设置为 `1` 以降低 CPU 峰值。

```dotenv
CRAWL_CONCURRENCY=3
```

## `CRAWLER_RETRY` [#crawler_retry]

控制单个 URL 的抓取失败重试次数，默认值为 `1`（即最多尝试 2 次）。

```dotenv
CRAWLER_RETRY=1
```

***

## `SEARCH_PROVIDERS` [#search_providers]

配置联网搜索使用的搜索引擎提供商。

```dotenv
SEARCH_PROVIDERS="searxng"
```

支持的搜索引擎如下：

| 值            | 说明                                                                                    | 环境变量                                                                        |
| ------------ | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| `anspire`    | 基于 [Anspire（安思派）](https://anspire.ai/) 提供的搜索服务。                                       | `ANSPIRE_API_KEY`                                                           |
| `bocha`      | 基于 [Bocha（博查）](https://open.bochaai.com/) 提供的搜索服务。                                    | `BOCHA_API_KEY`                                                             |
| `brave`      | [Brave](https://search.brave.com/help/api)，隐私友好的搜索源。                                  | `BRAVE_API_KEY`                                                             |
| `exa`        | [Exa](https://exa.ai/)，面向 AI 的搜索 API。                                                 | `EXA_API_KEY`                                                               |
| `firecrawl`  | 支持 [Firecrawl](https://firecrawl.dev/) 提供的搜索服务。                                       | `FIRECRAWL_API_KEY`                                                         |
| `google`     | 使用 [Google Programmable Search Engine](https://programmablesearchengine.google.com/)。 | `GOOGLE_PSE_API_KEY` `GOOGLE_PSE_ENGINE_ID`                                 |
| `jina`       | 使用 [Jina AI](https://jina.ai/) 提供的语义搜索服务。                                             | `JINA_READER_API_KEY`                                                       |
| `kagi`       | [Kagi](https://kagi.com/) 提供的高级搜索 API，需订阅 Key。                                        | `KAGI_API_KEY`                                                              |
| `search1api` | 使用 [Search1API](https://www.search1api.com) 聚合搜索能力。                                   | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY` |
| `searxng`    | 使用自托管或公共 [SearXNG](https://searx.space/) 实例。                                          | `SEARXNG_URL`                                                               |
| `tavily`     | [Tavily](https://www.tavily.com/)，快速网页摘要与答案返回。                                        | `TAVILY_API_KEY`                                                            |

> ⚠️ 某些搜索提供商需要单独申请 API Key，并在 `.env` 中配置相关凭证。

***

## `BROWSERLESS_URL` [#browserless_url]

指定 [Browserless](https://www.browserless.io/) 服务的 API 地址，用于执行网页爬取任务。Browserless 是一个基于无头浏览器（Headless Chrome）的浏览器自动化平台，适合处理需要渲染的动态页面。

```dotenv
BROWSERLESS_URL=https://chrome.browserless.io
```

> 📌 通常需要搭配 `CRAWLER_IMPLS=browserless` 启用。

***

## `BROWSERLESS_BLOCK_ADS` [#browserless_block_ads]

启用广告拦截功能，在使用 [Browserless](https://www.browserless.io/) 进行网页抓取时自动屏蔽常见广告资源（如脚本、图片、追踪器等），提高抓取速度与页面清晰度。

```dotenv
BROWSERLESS_BLOCK_ADS=1
```

> 📌 支持的值：
>
> * `1`：启用广告拦截（推荐）；
> * `0`：禁用广告拦截（默认）。

> ✅ 建议与 `BROWSERLESS_STEALTH_MODE=1` 一起使用，提高爬虫的隐蔽性和成功率。

***

## `BROWSERLESS_STEALTH_MODE` [#browserless_stealth_mode]

启用隐身模式，在使用 [Browserless](https://www.browserless.io/) 抓取网页时，通过一系列防检测手段（如修改 UA、移除 webdriver 特征、模拟用户操作）来规避反爬虫机制。

```dotenv
BROWSERLESS_STEALTH_MODE=1
```

> 📌 支持的值：
>
> * `1`：启用隐身模式（推荐）；
> * `0`：禁用隐身模式（默认）。

> ⚠️ 某些网站存在高级反爬机制，启用隐身模式可以显著提升抓取成功率。

***

## `GOOGLE_PSE_ENGINE_ID` [#google_pse_engine_id]

配置 Google Programmable Search Engine（Google PSE）的搜索引擎 ID，用于限定搜索范围。需配合 `GOOGLE_PSE_API_KEY` 一起使用。

```dotenv
GOOGLE_PSE_ENGINE_ID=your-google-cx-id
```

> 🔑 获取方式：访问 [programmablesearchengine.google.com](https://programmablesearchengine.google.com/)，创建搜索引擎后获取 `cx` 参数值。

***

## `FIRECRAWL_URL` [#firecrawl_url]

设置 [Firecrawl](https://firecrawl.dev/) API 的访问地址。用于网页内容抓取，默认值如下：

```dotenv
FIRECRAWL_URL=https://api.firecrawl.dev/v2
```

> ⚙️ 一般无需修改，除非你使用的是自托管版本或代理服务。

***

## `TAVILY_SEARCH_DEPTH` [#tavily_search_depth]

配置 [Tavily](https://www.tavily.com/) 搜索的结果深度。

```dotenv
TAVILY_SEARCH_DEPTH=basic
```

支持的值：

* `basic`: 快速搜索，返回简要结果；
* `advanced`: 深度搜索，返回更多上下文和网页信息。

***

## `TAVILY_EXTRACT_DEPTH` [#tavily_extract_depth]

配置 Tavily 在抓取网页内容时的提取深度。

```dotenv
TAVILY_EXTRACT_DEPTH=basic
```

支持的值：

* `basic`: 提取标题、正文摘要等基础信息；
* `advanced`: 提取网页的结构化信息、列表、图表等更多内容。

***

## `SEARXNG_URL` [#searxng_url]

SearXNG 实例的 URL 地址，这是启用联网搜索功能的必要配置。例如：

```shell
SEARXNG_URL=https://searxng-instance.com
```

本地开发可用 `pnpm dev:docker` 启动项目自带的 SearXNG（已开启 `json` 输出）：

```shell
SEARCH_PROVIDERS=searxng
SEARXNG_URL=http://localhost:8180
```

这个 URL 应该指向一个可用的 SearXNG 实例。您可以选择自行部署 SearXNG，或使用公共可用的 SearXNG 实例。

您可以在 [SearXNG 实例列表](https://searx.space/) 中找到公开可用的 SearXNG 实例。选择一个响应速度快、可靠性高的实例，然后将其 URL 配置到 `.env` 中。

> 注意，使用的 `searxng` 必须开启 `json` 输出，否则调用会报错。如果是自托管，类似下面这样，找到 `searxng` 的配置文件，追加 `json` 即可。

```bash
$ vi searxng/settings.yml
...
search:
formats:
- html
- json
```

如果 AI 能够回答这些时效性问题，说明联网搜索功能已经成功配置。

## 参考资料 [#参考资料]

* [SearXNG GitHub 仓库](https://github.com/searxng/searxng)
* [SearXNG 开启 json 输出的讨论](https://github.com/searxng/searxng/discussions/3542)
