> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rikka-ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 网页搜索：以实时搜索结果为 AI 回答提供依据

> 启用 Rikka 内置的网页搜索功能，将实时结果注入任意对话，配置你偏好的搜索服务，并使用搜索页面。

Rikka 内置了网页搜索功能，可让任意 AI 模型访问网络上的实时信息。在发送消息前启用网页搜索后，Rikka 会自动调用你配置的搜索服务，获取相关结果，并在模型生成回复前将其注入对话上下文。

## 为消息启用网页搜索

网页搜索开关位于**输入工具栏**——文字输入框上方的图标行。

<Steps>
  <Step title="点击搜索开关">
    点击工具栏中的地球仪或搜索图标以启用网页搜索。图标高亮表示已激活。
  </Step>

  <Step title="输入消息">
    正常输入你的问题或提示词，无需改变措辞——Rikka 会自动提取搜索查询。
  </Step>

  <Step title="发送消息">
    点击发送。Rikka 调用搜索服务，获取结果并将其注入上下文，再请求模型作答。搜索进行时，你会看到短暂的处理状态提示。
  </Step>

  <Step title="查看引用来源">
    助手的回复中包含对搜索结果的引用。点击任意链接即可在浏览器中打开对应页面。
  </Step>
</Steps>

<Note>
  网页搜索通过注入对话的**工具调用**实现。模型会根据你的提示词决定是否调用 `search_web` 工具。如果模型判断某个问题无需搜索，它可能会跳过网络调用，直接以训练数据作答。
</Note>

## 支持的搜索服务

Rikka 支持多种搜索服务商。你可以配置一个或多个，并选择其中一个作为当前激活的服务。

<Tabs>
  <Tab title="通用搜索">
    | 服务             | 说明                                                        |
    | -------------- | --------------------------------------------------------- |
    | **Bing**       | 使用 Microsoft Bing 搜索 API，除 API 密钥外无需额外配置。                 |
    | **Brave**      | 通过 Brave 搜索 API 提供注重隐私的搜索服务。                              |
    | **RikkaHub**   | Rikka 自有搜索 API，需要 RikkaHub API 密钥，支持可配置的搜索深度和 AI 生成的摘要回答。 |
    | **SearXNG**    | 自托管的元搜索引擎，需提供实例 URL、可选凭据和首选搜索引擎。                          |
    | **Bocha（博查）**  | 中文搜索服务，支持可选的 AI 生成摘要。                                     |
    | **Metaso（秘塔）** | 中文 AI 搜索服务。                                               |
  </Tab>

  <Tab title="AI 搜索">
    | 服务             | 说明                                                                   |
    | -------------- | -------------------------------------------------------------------- |
    | **Tavily**     | 面向大模型优化的 AI 搜索 API，支持 `general`、`news` 和 `finance` 主题模式，以及标准/深度搜索深度。 |
    | **Exa**        | 为 AI 应用构建的语义搜索 API。                                                  |
    | **Perplexity** | 使用 Perplexity 带搜索增强的模型，可选配置回复最大 Token 数和每页内容 Token 数。                |
    | **LinkUp**     | 可配置搜索深度（标准 / 深度）。                                                    |
    | **Grok**       | xAI 的 Grok 模型，支持实时网络搜索，可配置自定义 API URL、模型选择和系统提示词。                    |
    | **Tinyfish**   | 轻量级 AI 搜索服务。                                                         |
  </Tab>

  <Tab title="抓取与爬取">
    | 服务            | 说明                                                                  |
    | ------------- | ------------------------------------------------------------------- |
    | **Firecrawl** | 网络爬取 API，可从任意 URL 返回结构化 Markdown。                                   |
    | **Jina**      | 用于抓取的 Reader API（`r.jina.ai`）和用于查询的搜索 API（`s.jina.ai`），两个 URL 均可配置。 |
    | **Ollama**    | 将支持搜索的本地 Ollama 模型作为搜索后端运行。                                         |
  </Tab>

  <Tab title="专用服务">
    | 服务            | 说明                                                                       |
    | ------------- | ------------------------------------------------------------------------ |
    | **Zhipu（智谱）** | 智谱 AI 搜索工具。                                                              |
    | **Custom JS** | 用 JavaScript 编写自定义搜索（以及可选的抓取）逻辑。Rikka 在沙箱环境中执行脚本，并提供沙箱化的 `fetch()` 辅助函数。 |
  </Tab>
</Tabs>

## 配置搜索服务

<Steps>
  <Step title="打开设置">
    点击历史抽屉中的**设置**齿轮图标（抽屉操作行右下角）。
  </Step>

  <Step title="进入搜索设置">
    从设置列表中选择**搜索**。
  </Step>

  <Step title="添加服务">
    点击**添加**并从列表中选择服务，每项服务会显示说明以及获取 API 密钥的链接（如需要）。
  </Step>

  <Step title="填写凭据">
    填入 API 密钥及各服务特有的选项（深度、语言、模型、自定义 URL 等）。
  </Step>

  <Step title="设为激活服务">
    如果你配置了多个服务，点击要使用的服务将其设为激活搜索服务。激活的服务会显示在聊天输入工具栏中搜索开关的提示文字里。
  </Step>
</Steps>

### 常用配置选项

不同服务开放的设置有所不同，但你通常会看到以下选项：

| 选项            | 说明                                              |
| ------------- | ----------------------------------------------- |
| **API 密钥**    | 来自服务商的认证密钥。某些服务（如 Bing、SearXNG）可能不需要，或使用其他认证方式。 |
| **结果数量**      | 获取并注入上下文的搜索结果条数。结果越多，模型获得的信息越多，但消耗的 Token 也越多。  |
| **深度**        | 对于 Tavily 和 LinkUp 等服务，控制是进行浅层还是深层爬取。           |
| **语言**        | 将结果限制为特定语言，适用于 SearXNG 和部分其他服务。                 |
| **包含 / 排除域名** | 部分服务支持白名单或黑名单特定网站。                              |
| **安全搜索**      | 在支持的服务上启用内容过滤。                                  |

## 搜索结果的注入方式

当你发送启用了网页搜索的消息时，Rikka 按以下流程处理：

1. `search_web` 工具与你的消息一同注册到模型中。
2. 如果模型决定搜索，它会发出一个带有 `query` 参数的工具调用。
3. Rikka 使用该查询和配置的结果数量调用激活的搜索服务。
4. 包含标题、URL 和文字摘要的结果作为工具输出返回给模型。
5. 某些服务还支持 `scrape_web` 工具调用，允许模型获取单个页面的完整内容。
6. 模型将结果整合到最终回复中。

<Note>
  搜索步骤在后台静默完成。Rikka 获取结果时，对话列表中会短暂出现处理状态提示。如果你的模型暴露了推理步骤，工具调用及其输出会在思维链部分中可见。
</Note>

## 专用搜索页面

除了每条消息的网页搜索外，Rikka 还提供一个全屏**搜索**页面，专为研究型会话设计。

打开历史抽屉，点击抽屉操作行中的**搜索**图标（放大镜）即可进入。搜索页面提供：

* 持久化搜索栏，可直接输入查询并获取网页结果。
* 结果卡片，显示标题、文字摘要和来源 URL。
* 点击任意结果卡片即可打开对应 URL，或将其作为上下文用于新的对话。

<Tip>
  当你希望在将结果交给 AI 之前先浏览和对比多个结果时，请使用搜索页面。它比自动化的对话内搜索模式提供更多控制权。
</Tip>

## Custom JS 搜索服务

如果内置服务都不满足你的需求，可使用 **Custom JS** 选项自行编写搜索逻辑。

```javascript theme={null}
// 实现 search(query, resultSize) 函数
// 使用 fetch(url, options?) 发送 HTTP 请求
// fetch() 返回 { status, ok, text(), json() }
// 返回 { items: [{ title, url, text }], answer?: string }

function search(query, resultSize) {
  const encoded = encodeURIComponent(query);
  const res = fetch("https://example.com/search?q=" + encoded + "&limit=" + resultSize);
  const data = res.json();
  return {
    items: data.results.map(function(r) {
      return { title: r.title, url: r.url, text: r.snippet };
    })
  };
}
```

你还可以提供一个可选的 `scrape(urls)` 函数，用于实现自定义页面内容提取。Rikka 的沙箱环境提供了同步的 `fetch()` 辅助函数——无需使用 `async`/`await`。

<Warning>
  Custom JS 脚本在受限沙箱中运行。可通过 `fetch()` 访问网络，但脚本无法访问设备存储、Android API 或任何 Rikka 内部功能。
</Warning>
