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

为消息启用网页搜索

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

点击搜索开关

点击工具栏中的地球仪或搜索图标以启用网页搜索。图标高亮表示已激活。
2

输入消息

正常输入你的问题或提示词,无需改变措辞——Rikka 会自动提取搜索查询。
3

发送消息

点击发送。Rikka 调用搜索服务,获取结果并将其注入上下文,再请求模型作答。搜索进行时,你会看到短暂的处理状态提示。
4

查看引用来源

助手的回复中包含对搜索结果的引用。点击任意链接即可在浏览器中打开对应页面。
网页搜索通过注入对话的工具调用实现。模型会根据你的提示词决定是否调用 search_web 工具。如果模型判断某个问题无需搜索,它可能会跳过网络调用,直接以训练数据作答。

支持的搜索服务

Rikka 支持多种搜索服务商。你可以配置一个或多个,并选择其中一个作为当前激活的服务。
服务说明
Bing使用 Microsoft Bing 搜索 API,除 API 密钥外无需额外配置。
Brave通过 Brave 搜索 API 提供注重隐私的搜索服务。
RikkaHubRikka 自有搜索 API,需要 RikkaHub API 密钥,支持可配置的搜索深度和 AI 生成的摘要回答。
SearXNG自托管的元搜索引擎,需提供实例 URL、可选凭据和首选搜索引擎。
Bocha(博查)中文搜索服务,支持可选的 AI 生成摘要。
Metaso(秘塔)中文 AI 搜索服务。

配置搜索服务

1

打开设置

点击历史抽屉中的设置齿轮图标(抽屉操作行右下角)。
2

进入搜索设置

从设置列表中选择搜索
3

添加服务

点击添加并从列表中选择服务,每项服务会显示说明以及获取 API 密钥的链接(如需要)。
4

填写凭据

填入 API 密钥及各服务特有的选项(深度、语言、模型、自定义 URL 等)。
5

设为激活服务

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

常用配置选项

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

搜索结果的注入方式

当你发送启用了网页搜索的消息时,Rikka 按以下流程处理:
  1. search_web 工具与你的消息一同注册到模型中。
  2. 如果模型决定搜索,它会发出一个带有 query 参数的工具调用。
  3. Rikka 使用该查询和配置的结果数量调用激活的搜索服务。
  4. 包含标题、URL 和文字摘要的结果作为工具输出返回给模型。
  5. 某些服务还支持 scrape_web 工具调用,允许模型获取单个页面的完整内容。
  6. 模型将结果整合到最终回复中。
搜索步骤在后台静默完成。Rikka 获取结果时,对话列表中会短暂出现处理状态提示。如果你的模型暴露了推理步骤,工具调用及其输出会在思维链部分中可见。

专用搜索页面

除了每条消息的网页搜索外,Rikka 还提供一个全屏搜索页面,专为研究型会话设计。 打开历史抽屉,点击抽屉操作行中的搜索图标(放大镜)即可进入。搜索页面提供:
  • 持久化搜索栏,可直接输入查询并获取网页结果。
  • 结果卡片,显示标题、文字摘要和来源 URL。
  • 点击任意结果卡片即可打开对应 URL,或将其作为上下文用于新的对话。
当你希望在将结果交给 AI 之前先浏览和对比多个结果时,请使用搜索页面。它比自动化的对话内搜索模式提供更多控制权。

Custom JS 搜索服务

如果内置服务都不满足你的需求,可使用 Custom JS 选项自行编写搜索逻辑。
// 实现 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
Custom JS 脚本在受限沙箱中运行。可通过 fetch() 访问网络,但脚本无法访问设备存储、Android API 或任何 Rikka 内部功能。