使用 NLWeb 与 Cloudflare AI Search 在网站上启用对话式搜索。此模板抓取你的网站、为内容建立索引,并部署 NLWeb 标准端点,为访客与 AI Agent 提供服务。
NLWeb ↗ 是 Microsoft 开发的开源项目,定义了网站自然语言查询的标准协议。其目标是让每个网站都像对话式 AI 应用一样易于访问和交互,使访客与 AI Agent 都能可靠地查询站点内容。它通过暴露两个关键端点实现:
/ask:用于用户查询的对话端点/mcp:供 AI Agent 使用的结构化 Model Context Protocol (MCP) 端点
你可以通过 AI Search 仪表板直接在网站上部署 NLWeb:
-
登录 Cloudflare 仪表板 ↗。
-
前往 AI > AI Search。
Go to AI Search ↗ -
选择 Create AI Search(创建 AI Search)。
-
选择 Website(网站) 作为数据源。
-
按照说明创建 AI Search 实例。
-
前往实例的 Settings(设置)
-
找到 NLWeb Worker 并选择 Enable AI Search for your website(为你的网站启用 AI Search)。
完成后,AI Search 将为你部署 NLWeb Worker,使你可以使用 NLWeb API 端点。
选择 NLWeb Website 选项会在普通 AI Search 基础上进行扩展,针对内容密集型网站进行定制,并提供在站点上采用 NLWeb 作为对话式搜索标准所需的一切。具体包括:
- 网站作为数据源: 使用 Website 数据源选项,通过 Rendered Sites 选项抓取并摄取页面。
- 内容密集型网站的默认配置: 应用针对发布与内容丰富网站优化的 embedding 与检索配置。
- NLWeb Worker 部署: 自动从 NLWeb Worker 模板 ↗ 启动 Cloudflare Worker。
部署的 Worker 提供两个端点:
/ask:NLWeb 标准对话端点- 在根路径(
/)提供对话 UI - 提供可嵌入的预览 widget(
/snippet.html)
- 在根路径(
/mcp:供受信任 AI Agent 使用的 NLWeb MCP server 端点
这些端点为访客与 Agent 提供结构化内容访问。
你可以使用可嵌入片段将搜索 UI 直接添加到网站。例如:
<!-- Add css on head -->
<link rel="stylesheet" href="https://ask.example.com/nlweb-dropdown-chat.css" />
<link rel="stylesheet" href="https://ask.example.com/common-chat-styles.css" />
<!-- Add container on body -->
<div id="docs-search-container"></div>
<!-- Include JavaScript -->
<script type="module">
import { NLWebDropdownChat } from "https://ask.example.com/nlweb-dropdown-chat.js";
const chat = new NLWebDropdownChat({
containerId: "docs-search-container",
site: "https://ask.example.com",
placeholder: "Search for docs...",
endpoint: "https://ask.example.com",
});
</script>这使你可以从自己的域名直接提供对话式 AI 搜索,并控制访客与 Agent 如何访问你的内容。
你可能希望自定义 Worker,例如调整可嵌入片段的 UI。此时,我们建议使用 /ask 端点进行查询,并在其上构建自己的 UI。但你也可以选择修改 Worker 中可嵌入 UI 的代码。
若 NLWeb 标准更新,你可以更新 Worker 以保持兼容并获取最新更新。
应用更改或更新的最简单方式是重新部署 Worker 模板:
- 使用上方的 Deploy to Cloudflare 按钮将 Worker 模板部署到你的 Cloudflare 账户。
- 在
RAG_ID环境变量字段中输入 AI Search 的名称。 - 点击 Deploy。
- 在 Workers 仪表板选择 GitHub/GitLab 图标。
- 克隆为你的 Worker 创建的仓库。
- 进行修改,然后 commit 并 push 更改到仓库以更新 Worker。
现在你可以将此 Worker 用作网站的新 NLWeb 端点。