本指南使用 Workers 绑定上的 search() 方法构建一个返回与查询匹配的文件名的搜索引擎。你也可以改用 REST API。
要获得此模式的最佳效果:
- 禁用查询改写,以便直接匹配原始用户查询。
- 将你的 AI Search 实例配置为较小的分块大小(通常 256 个 token 已足够)。
- 注册 Cloudflare 账户 ↗。
- 安装
Node.js↗。
Node.js 版本管理器
使用 Volta ↗ 或 nvm ↗ 等 Node 版本管理器,以避免权限问题并切换 Node.js 版本。本指南后续将介绍的 Wrangler 需要 Node 版本 16.17.0 或更高。
你还需要一个已包含已索引内容的 AI Search 实例。要创建实例并添加内容,请参阅 快速入门。
使用 create-cloudflare CLI (C3) 创建新的 Worker 项目。C3 ↗ 是一个命令行工具,用于帮助你设置并将新应用程序部署到 Cloudflare。
通过运行以下命令创建名为 search-engine 的新项目:
npm create cloudflare@latest -- search-engineyarn create cloudflare search-enginepnpm create cloudflare@latest search-engine进行设置时,请选择以下选项:
- 对于 What would you like to start with?,选择
Hello World example。 - 对于 Which template would you like to use?,选择
Worker only。 - 对于 Which language do you want to use?,选择
TypeScript。 - 对于 Do you want to use git for version control?,选择
Yes。 - 对于 Do you want to deploy your application?,选择
No(部署前我们还会做一些修改)。
进入你的应用目录:
cd search-engine将以下内容添加到你的 Wrangler 配置文件:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"ai_search_namespaces": [
{
"binding": "AI_SEARCH",
"namespace": "default",
"remote": true
}
]
}[[ai_search_namespaces]]
binding = "AI_SEARCH"
namespace = "default"
remote = true这会将 default 命名空间绑定到 env.AI_SEARCH。remote 选项可让 wrangler dev 将请求代理到你已部署的实例,因为 AI Search 不会在本地运行。
更新 src/index.ts。此 Worker 从 URL 读取查询,搜索你的实例,并返回每个匹配分块的文件名。将 my-instance 替换为你的实例名称。
export default {
async fetch(request, env) {
const url = new URL(request.url);
const userQuery = url.searchParams.get("query") ?? "What is Cloudflare?";
const searchResult = await env.AI_SEARCH.get("my-instance").search({
messages: [{ role: "user", content: userQuery }],
});
return Response.json({
files: searchResult.chunks.map((chunk) => chunk.item.key),
});
},
};export interface Env {
AI_SEARCH: AiSearchNamespace;
}
export default {
async fetch(request, env): Promise<Response> {
const url = new URL(request.url);
const userQuery = url.searchParams.get("query") ?? "What is Cloudflare?";
const searchResult = await env.AI_SEARCH.get("my-instance").search({
messages: [{ role: "user", content: userQuery }],
});
return Response.json({
files: searchResult.chunks.map((chunk) => chunk.item.key),
});
},
} satisfies ExportedHandler<Env>;启动本地开发服务器,然后在 /?query=your+search+terms 处查询它:
npx wrangler dev使用你的 Cloudflare 账户登录,然后部署你的 Worker,使其可在 Internet 上访问:
npx wrangler login
npx wrangler deploySearch Workers 绑定
从 Worker 进行搜索和对话的完整参考。
查询改写
控制 AI Search 是否在搜索前改写查询。