跳转到内容
搜索文档

创建简单搜索引擎

最后更新 查看 MarkdownAgent 设置

本指南使用 Workers 绑定上的 search() 方法构建一个返回与查询匹配的文件名的搜索引擎。你也可以改用 REST API

要获得此模式的最佳效果:

  • 禁用查询改写,以便直接匹配原始用户查询。
  • 将你的 AI Search 实例配置为较小的分块大小(通常 256 个 token 已足够)。

前提条件

  1. 注册 Cloudflare 账户
  2. 安装 Node.js

Node.js 版本管理器

使用 Voltanvm 等 Node 版本管理器,以避免权限问题并切换 Node.js 版本。本指南后续将介绍的 Wrangler 需要 Node 版本 16.17.0 或更高。

你还需要一个已包含已索引内容的 AI Search 实例。要创建实例并添加内容,请参阅 快速入门

1. 创建 Worker 项目

使用 create-cloudflare CLI (C3) 创建新的 Worker 项目。C3 是一个命令行工具,用于帮助你设置并将新应用程序部署到 Cloudflare。

通过运行以下命令创建名为 search-engine 的新项目:

npm 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_SEARCHremote 选项可让 wrangler dev 将请求代理到你已部署的实例,因为 AI Search 不会在本地运行。

3. 添加搜索代码

更新 src/index.ts。此 Worker 从 URL 读取查询,搜索你的实例,并返回每个匹配分块的文件名。将 my-instance 替换为你的实例名称。

src/index.jsjs
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),
		});
	},
};
src/index.tsts
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>;

4. 运行并部署

启动本地开发服务器,然后在 /?query=your+search+terms 处查询它:

npx wrangler dev

使用你的 Cloudflare 账户登录,然后部署你的 Worker,使其可在 Internet 上访问:

npx wrangler login
npx wrangler deploy

后续步骤

查询改写

控制 AI Search 是否在搜索前改写查询。

这篇文档对您有帮助吗?