跳转到内容
搜索文档

Workers 绑定(binding)

最后更新 查看 MarkdownAgent 设置

Workers 提供无服务器执行环境,使你能够创建新应用或增强现有应用。使用 Workers 绑定(binding) 从 Cloudflare Worker 创建、列出、更新与删除 AI Search 实例。你还可以检查实例配置并监控索引进度。

配置绑定

要在 Workers 中使用 AI Search,必须创建 AI Search 绑定(binding)。通过更新 Wrangler 配置 创建绑定。AI Search 提供两种绑定类型:

  • 命名空间绑定:ai_search_namespaces
  • 实例绑定:ai_search

命名空间绑定

访问命名空间内的所有实例。你可以在运行时 get、create、list 和 delete 实例。

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "compatibility_date": "2026-03-27",
  "ai_search_namespaces": [
    {
      "binding": "AI_SEARCH",
      "namespace": "my-namespace"
    }
  ]
}
compatibility_date = "2026-03-27"

[[ai_search_namespaces]]
binding = "AI_SEARCH"
namespace = "my-namespace"
字段 类型 必需 描述
binding string env 上可用的变量名。例如 "AI_SEARCH" 可通过 env.AI_SEARCH 访问。
namespace string 要绑定的命名空间。每个账户会自动创建 default 命名空间。若命名空间不存在,Wrangler 会在部署时创建。
remote boolean 使用 wrangler dev 进行本地开发时设置为 true

实例绑定

直接绑定到 default 命名空间中的单个实例。当你在部署时已知需要哪个实例时使用。

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "compatibility_date": "2026-03-27",
  "ai_search": [
    {
      "binding": "MY_SEARCH",
      "instance_name": "my-instance"
    }
  ]
}
compatibility_date = "2026-03-27"

[[ai_search]]
binding = "MY_SEARCH"
instance_name = "my-instance"
字段 类型 必需 描述
binding string env 上可用的变量名。例如 "MY_SEARCH" 可通过 env.MY_SEARCH 访问。
instance_name string AI Search 实例的名称。部署时必须在 default 命名空间中存在。
remote boolean 使用 wrangler dev 进行本地开发时设置为 true

命名空间方法

以下方法仅在使用 ai_search_namespaces 绑定时可用。命名空间句柄(env.AI_SEARCH)暴露用于处理 命名空间 内实例的方法。

get()

返回特定实例的句柄。此调用是同步的,不会发起网络请求。实例会在你调用 search()info() 等方法时惰性解析。

const instance = env.AI_SEARCH.get("my-instance");
const results = await instance.search({
	messages: [{ role: "user", content: "What is Cloudflare?" }],
});

参数

参数 类型 必填 说明
name string 要获取句柄的实例名称。

list()

返回命名空间内的所有实例。

const { result, result_info } = await env.AI_SEARCH.list();

for (const instance of result) {
	console.log(`${instance.id} (${instance.type}) - ${instance.status}`);
}
// result_info.total_count contains the total number of instances

参数

参数 类型 必填 说明
page number 要返回的页码。默认为 1
per_page number 每页实例数。默认为 20。最大 100
search string 按 ID 搜索实例。
order_by string 排序列。有效值:created_at。默认为 created_at
order_by_direction string 排序方向。有效值:ascdesc。默认为 desc

响应

字段 类型 说明
result array 实例对象数组。
result[].id string 实例标识符。
result[].type string 数据源类型(r2web-crawler,或空实例为 null)。
result[].source string 数据源位置。
result[].status string 实例状态(activewaitingindexing)。
result[].enable boolean 实例是否已启用。
result[].namespace string 实例所属的命名空间。
result[].created_at string 实例创建时间的 ISO 8601 时间戳。
result[].modified_at string 上次修改的 ISO 8601 时间戳。
result_info object 分页元数据。
result_info.total_count number 命名空间中的实例总数。

create()

创建新实例并返回其句柄。你可以创建由数据源支持的实例,或创建空实例以配合 Items API 使用。

创建用于文件上传的空实例:

AI Search 实例自带 内置存储,你可以直接上传文档。

const instance = await env.AI_SEARCH.create({
	id: "knowledge-base",
});

// Upload documents using the Items API
await instance.items.upload("guide.pdf", pdfArrayBuffer);

创建 web-crawler 实例:

自动抓取并索引你拥有的网站。更多配置选项请参阅 网站数据源

const instance = await env.AI_SEARCH.create({
	id: "my-docs",
	type: "web-crawler",
	source: "developers.cloudflare.com",
});

创建由 R2 支持的实例:

索引存储在 R2 存储桶中的文档。更多配置选项请参阅 R2 数据源

const instance = await env.AI_SEARCH.create({
	id: "internal-docs",
	type: "r2",
	source: "my-docs-bucket",
});

参数

id stringrequired

AI Search 实例的唯一标识符。长度必须为 1–64 个字符,并匹配模式 ^[a-z0-9_]+(?:-[a-z0-9_]+)*$


type stringoptional

数据源类型。有效值:r2web-crawler。使用数据源创建实例时为必填。若创建供 Items API 使用的空实例,则省略此字段。


source stringoptional

数据源位置。对于 r2 类型,这是 R2 存储桶名称。对于 web-crawler 类型,这是网站域名。指定 type 时为必填。


source_params objectoptional

数据源的其他参数。

  • prefix stringoptional

    • 对于 R2 源,将索引限制为具有此键前缀的对象。
  • r2_jurisdiction stringoptional

    • R2 存储桶的管辖区域(jurisdiction),例如 eu
  • include_items arrayoptional

    • 要包含在索引中的路径的 glob 模式。例如:["/blog/**", "/docs/**/*.html"]
  • exclude_items arrayoptional

    • 要从索引中排除的路径的 glob 模式。例如:["/admin/**", "/private/**"]
  • web_crawler objectoptional

    • Web crawler 源的配置。

    • parse_type stringoptional

      • 解析方法。有效值:sitemap
    • parse_options objectoptional

      • include_headers objectoptional

        • 爬取时要包含的自定义 HTTP 标头。
      • include_images booleanoptional

        • 是否在索引中包含图像。
      • specific_sitemaps arrayoptional

        • 要爬取的特定 sitemap URL。例如:["https://example.com/sitemap.xml"]
      • use_browser_rendering booleanoptional

        • 使用 Browser Run(原 Browser Rendering)爬取由 JavaScript 渲染的页面。
    • store_options objectoptional

      • storage_type stringoptional

        • 存储类型。有效值:r2
      • storage_id stringoptional

        • 存储桶 ID。
      • r2_jurisdiction stringoptional

        • 存储桶的管辖区域(jurisdiction)。

index_method objectoptional

配置实例启用哪些索引方法。决定是提供向量(语义)搜索、关键词搜索,还是两者都提供。至少有一个必须为 true

  • vector booleanoptional

    • 启用基于向量的语义搜索。默认为 true
  • keyword booleanoptional

    • 启用基于关键词的搜索。默认为 false

将两者都设为 true 可进行混合搜索。


fusion_method stringoptional

控制在使用混合搜索时如何合并向量分数与关键词分数。有效值:rrf(Reciprocal Rank Fusion)、max(取最大分数)。默认为 rrf


indexing_options objectoptional

内容索引方式的配置。

  • keyword_tokenizer stringoptional
    • 用于关键词搜索索引的分词器。有效值:porter(基于词干提取)、trigram(字符 n-gram)。默认为 porter

retrieval_options objectoptional

实例的默认检索配置。这些默认值可在每次请求时使用 ai_search_options 覆盖。

  • keyword_match_mode stringoptional

    • 控制关键词(BM25)匹配如何选择候选文档。and 要求所有词项匹配。or 要求任意词项匹配。默认为 and
  • boost_by arrayoptional

    • 应用于所有搜索查询的默认提升字段。最多 3 项。每一项包含:
      • field stringrequired - 用于提升的元数据字段名称。最多 64 个字符。
      • direction stringoptional - 提升方向。有效值:ascdescexistsnot_exists

sync_interval numberoptional

自动数据源同步之间的间隔秒数。有效值:3600720014400216004320086400。默认为 21600(6 小时)。


token_id stringoptional

用于此实例的服务 API token 的 UUID。仅当你从未创建过 AI Search 实例时才需要。有关如何创建和注册服务 token,请参阅 API 快速入门指南


ai_gateway_id stringoptional

用于路由请求以进行日志记录和分析的 AI Gateway ID。


embedding_model stringoptional

用于向量化内容的嵌入模型。


ai_search_model stringoptional

用于生成响应的文本生成模型。


rewrite_query booleanoptional

启用查询改写以提高检索准确度。默认为 false


rewrite_model stringoptional

用于查询改写的模型。


reranking booleanoptional

启用重排序,按语义相关性对检索结果重新排序。默认为 false


reranking_model stringoptional

要使用的重排序模型。有效值:@cf/baai/bge-reranker-base


chunk_size numberoptional

拆分文档时的分块大小。最小值:64


chunk_overlap numberoptional

分块之间的重叠。最小值:0


max_num_results numberoptional

默认返回的最大结果数。最小值:1


score_threshold numberoptional

结果的默认最低分数阈值。最小值:0


cache booleanoptional

启用响应缓存。默认为 true


cache_threshold stringoptional

缓存匹配阈值。有效值:super_strict_matchclose_enoughflexible_friendanything_goes。默认为 close_enough


cache_ttl numberoptional

缓存条目的 TTL(秒)。有效值为 600180036007200216004320086400172800259200518400。默认为 172800


custom_metadata arrayoptional

要从文档中提取并索引的自定义元数据字段。

  • field_name stringrequired

    • 元数据字段的名称。
  • data_type stringrequired

    • 字段的数据类型。有效值:textnumberbooleandatetime

enable booleanoptional

实例是否已启用。默认为 true

响应

返回可立即用于调用 search()info()stats()items.upload() 等方法的 AiSearchInstance 句柄。在句柄上调用 info() 可获取实例配置。

delete()

永久删除实例及其所有已索引内容。此操作无法撤销。

await env.AI_SEARCH.delete("old-docs");

参数

参数 类型 必填 说明
name string 要删除的实例名称。

响应

返回 void。如果实例不存在则抛出错误。

实例方法

以下方法在 ai_search_namespacesai_search 绑定上均可用。使用命名空间绑定时,在 get() 返回的句柄上调用方法。使用实例绑定时,直接在绑定上调用方法(例如 env.MY_SEARCH.info())。

以下示例使用命名空间绑定。

update()

部分更新实例配置。仅修改你传入的字段。

const updated = await env.AI_SEARCH.get("my-instance").update({
	ai_search_model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
	reranking: true,
});

参数

接受 创建参数 的部分版本。仅更新你包含的字段。

字段 类型 说明
ai_search_model string 文本生成模型。
embedding_model string 嵌入模型。
index_method object 索引方法:\{ vector: boolean, keyword: boolean \}
fusion_method string 向量与关键词分数的组合方式(rrfmax)。
indexing_options object 索引配置,包括 keyword_tokenizer
retrieval_options object 检索配置,包括 keyword_match_modeboost_by
reranking boolean 开启或关闭重排序。
reranking_model string 重排序模型。
rewrite_query boolean 开启或关闭查询改写。
rewrite_model string 查询改写模型。
source string 更新数据源位置。
cache boolean 开启或关闭响应缓存。
chunk_size number 每个分块的 token 大小。
chunk_overlap number 分块之间的 token 重叠。
score_threshold number 结果的最低分数阈值。
max_num_results number 每次查询的最大结果数。
custom_metadata array 自定义元数据字段定义。
sync_interval number 自动数据源同步之间的秒数。

响应

返回更新后的实例配置。形状与 info() 相同。

info()

返回实例的当前配置与元数据。

const info = await env.AI_SEARCH.get("my-instance").info();

响应

字段 类型 说明
id string 实例标识符。
type string 数据源类型(r2web-crawlernull)。
source string 数据源位置。
namespace string 实例所属的命名空间。
status string 实例状态(activewaitingindexing)。
enable boolean 实例是否已启用。
created_at string 实例创建时间的时间戳。
modified_at string 上次修改的时间戳。
ai_search_model string 文本生成模型。
embedding_model string 嵌入模型。
reranking boolean 是否启用重排序。
reranking_model string 重排序模型。
rewrite_query boolean 是否启用查询改写。
rewrite_model string 查询改写模型。
cache boolean 是否启用响应缓存。
cache_threshold string 缓存命中的相似度阈值。
index_method object 已启用的索引方法(vectorkeyword)。
fusion_method string 向量与关键词分数的组合方式(rrfmax)。
indexing_options object 索引配置,包括 keyword_tokenizer
retrieval_options object 检索配置,包括 keyword_match_modeboost_by
chunk_size number 每个分块的 token 大小。
chunk_overlap number 分块之间的 token 重叠。
score_threshold number 结果的最低分数阈值。
max_num_results number 每次查询的最大结果数。
sync_interval number 自动数据源同步之间的秒数。
custom_metadata array 自定义元数据字段定义。
last_activity string 上次索引活动的时间戳。

stats()

返回实例的当前索引进度。在创建实例或上传文件后使用此方法轮询完成状态。

const stats = await env.AI_SEARCH.get("my-instance").stats();

响应

字段 类型 说明
queued number 等待处理的条目。
running number 当前正在处理的条目。
completed number 已成功索引的条目。
error number 索引失败的条目。
skipped number 索引期间跳过的条目。
outdated number 需要重新索引的条目。
last_activity string 上次索引活动的 ISO 8601 时间戳。
file_embed_errors object 文件 ID 到嵌入错误详情的映射。
engine.vectorize.vectorsCount number 存储的向量总数。
engine.vectorize.dimensions number 向量嵌入的维度。
engine.r2.payloadSizeBytes number 存储的载荷总字节大小。
engine.r2.metadataSizeBytes number 存储的元数据总字节大小。
engine.r2.objectCount number 存储中的对象总数。

本地开发

本地开发通过将请求代理到已部署的 AI Search 实例得到支持。在绑定配置中添加 remote: true,以使用 wrangler dev 启用本地开发。

// wrangler.jsonc
{
	"ai_search": [
		{
			"binding": "MY_SEARCH",
			"instance_name": "my-instance",
			"remote": true,
		},
	],
}

这篇文档对您有帮助吗?