跳转到内容
搜索文档

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_namespacesai_search 绑定上均可用。使用 namespace 绑定时,在 get() 返回的句柄上调用方法。使用实例绑定时,直接在绑定上调用方法(例如 env.MY_SEARCH.search())。

以下示例使用 namespace 绑定。

从已建立索引的数据源中搜索相关内容块。返回带源引用的评分块。

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

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

参数

messages arrayrequired

表示对话的消息对象数组。每条消息都有 rolecontent 字段。

  • role stringrequired

    • 消息发送者的角色。有效值:systemdeveloperuserassistanttool
  • content stringrequired

    • 消息内容。

query stringoptional

简单文本查询字符串。作为 messages 的替代方案。请提供 querymessages 之一,不要同时提供。


ai_search_options objectoptional

搜索操作的配置选项。

  • retrieval objectoptional

    • retrieval_type stringoptional

      • 要执行的检索类型。有效值:vectorkeywordhybrid。默认为 hybrid
    • match_threshold numberoptional

      • 结果被视为匹配所需的最低匹配分数。必须在 01 之间。默认为 0.4
    • max_num_results integeroptional

      • 返回的最大结果数。必须在 150 之间。默认为 10
    • filters objectoptional

      • 根据元数据筛选搜索结果。支持比较筛选器(eqnegtgteltlte)和复合筛选器(andor)。更多详情请参阅 元数据筛选
    • context_expansion integeroptional

      • 为提供额外上下文而包含的周围 chunk 数量。必须在 03 之间。默认为 0
    • fusion_method stringoptional

      • 在使用混合检索时,控制如何合并向量分数与关键词分数。有效值:rrf(Reciprocal Rank Fusion)、max(取最高分数)。默认为实例级设置。
    • keyword_match_mode stringoptional

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

      • 按元数据字段提升结果权重。最多 3 项。每项包含:
        • field stringrequired - 用于提升的元数据字段名(例如 timestamp)。最多 64 个字符。
        • direction stringoptional - 提升方向。有效值:ascdescexistsnot_exists。数值字段默认为 asc,文本字段默认为 exists
    • metadata_only booleanoptional

      • 仅返回每个 chunk 的元数据,不返回文本内容。
    • return_on_failure booleanoptional

      • 部分处理步骤失败时是否返回部分结果。默认为 true
  • query_rewrite objectoptional

    • enabled booleanoptional

      • 重写查询以提高检索准确性。默认为 false
    • model stringoptional

      • 用于查询重写的模型。
    • rewrite_prompt stringoptional

      • 用于指导查询重写的自定义提示。
  • reranking objectoptional

    • enabled booleanoptional

      • 使用重排序模型根据语义相关性对检索结果重新排序。默认为 false
    • model stringoptional

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

      • 重排序结果的最低分数。必须在 01 之间。默认为 0.4
  • cache objectoptional

    • enabled booleanoptional

      • 覆盖此请求的实例级缓存设置。
    • cache_threshold stringoptional

      • 缓存命中的相似度阈值。有效值:super_strict_matchclose_enoughflexible_friendanything_goes

响应

响应包含以下字段:

字段 类型 描述
search_query string 用于搜索的查询;若启用查询重写,可能已被改写。
chunks array 匹配内容 chunk 的数组。
chunks[].id string chunk 的唯一标识符。
chunks[].type string 内容类型,通常为 text
chunks[].score number 0 到 1 之间的总体匹配分数。
chunks[].text string chunk 的文本内容。
chunks[].item object 来源条目的信息。
chunks[].item.key string 来源文档的文件路径或 URL。
chunks[].item.timestamp number 条目最后修改的 Unix 时间戳。
chunks[].item.metadata object 与来源条目关联的自定义元数据。
chunks[].scoring_details object chunk 评分方式的明细。
chunks[].scoring_details.vector_score number 语义相似度分数(0 到 1)。
chunks[].scoring_details.keyword_score number 关键词(BM25)匹配分数。使用混合或关键词检索时出现。
chunks[].scoring_details.keyword_rank number 关键词排名位置。
chunks[].scoring_details.vector_rank number 向量排名位置。
chunks[].scoring_details.reranking_score number 重排序分数(0 到 1)。启用重排序时出现。
chunks[].scoring_details.fusion_method string 使用的融合方法(rrfmax)。使用混合检索时出现。

chatCompletions()

使用 AI Search 实例作为上下文生成聊天补全。此方法检索相关内容并据此生成响应。

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

const response = await instance.chatCompletions({
	messages: [
		{ role: "system", content: "You are a helpful documentation assistant." },
		{ role: "user", content: "What is Cloudflare?" },
	],
	model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
	ai_search_options: {
		retrieval: {
			max_num_results: 5,
		},
		query_rewrite: {
			enabled: true,
		},
	},
});

流式响应

设置 stream: true,可在生成过程中以 Server-Sent Events (SSE) 形式接收响应:

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

const stream = await instance.chatCompletions({
	messages: [{ role: "user", content: "What is Cloudflare?" }],
	stream: true,
});

return new Response(stream, {
	headers: {
		"content-type": "text/event-stream",
		"cache-control": "no-cache",
	},
});

启用 stream 时,方法返回 SSE 事件的 ReadableStream。每个事件包含一个 JSON 对象,其中 choices[0].delta.content 为增量文本。流以 data: [DONE] 事件结束。

参数

messages arrayrequired

表示对话的消息对象数组。每条消息都有 rolecontent 字段。

  • role stringrequired

    • 消息发送者的角色。有效值:systemdeveloperuserassistanttool
  • content stringrequired

    • 消息内容。

model stringoptional

用于生成响应的文本生成模型。默认为 AI Search 实例设置中配置的生成模型。支持的模型列表请参阅支持的模型


stream booleanoptional

在生成过程中返回结果流。启用时,返回带有可读流的 Response 对象。默认为 false


ai_search_options objectoptional

搜索与生成操作的配置选项。

  • retrieval objectoptional

    • retrieval_type stringoptional

      • 要执行的检索类型。有效值:vectorkeywordhybrid。默认为 hybrid
    • match_threshold numberoptional

      • 结果被视为匹配所需的最低匹配分数。必须在 01 之间。默认为 0.4
    • max_num_results integeroptional

      • 返回结果的最大数量。必须在 150 之间。默认为 10
    • filters objectoptional

      • 基于元数据筛选搜索结果。支持比较筛选器(eqnegtgteltlte)和复合筛选器(andor)。更多详情请参阅元数据筛选
    • context_expansion integeroptional

      • 为提供额外上下文而包含的周围块数量。必须在 03 之间。默认为 0
    • fusion_method stringoptional

      • 在使用混合检索时,控制如何合并向量分数与关键词分数。有效值:rrf(Reciprocal Rank Fusion)、max(取最大分数)。默认为实例级设置。
    • keyword_match_mode stringoptional

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

      • 按元数据字段提升结果权重。最多 3 项。每项包含:
        • field stringrequired - 用于提升的元数据字段名(例如 timestamp)。最多 64 个字符。
        • direction stringoptional - 提升方向。有效值:ascdescexistsnot_exists。数值字段默认为 asc,文本字段默认为 exists
    • metadata_only booleanoptional

      • 仅返回每个块的元数据,不返回文本内容。
    • return_on_failure booleanoptional

      • 部分处理步骤失败时是否返回部分结果。默认为 true
  • query_rewrite objectoptional

    • enabled booleanoptional

      • 重写查询以提高检索准确性。默认为 false
    • model stringoptional

      • 用于查询重写的模型。
    • rewrite_prompt stringoptional

      • 用于指导查询重写的自定义提示词。
  • reranking objectoptional

    • enabled booleanoptional

      • 使用重排序模型根据语义相关性对检索结果重新排序。默认为 false
    • model stringoptional

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

      • 重排序结果的最低分数。必须在 01 之间。默认为 0.4
  • cache objectoptional

    • enabled booleanoptional

      • 覆盖此请求的实例级缓存设置。
    • cache_threshold stringoptional

      • 缓存命中的相似度阈值。有效值:super_strict_matchclose_enoughflexible_friendanything_goes

响应(非流式)

字段 类型 描述
id string 补全的唯一标识符。
object string 始终为 chat.completion
created number 创建补全时的 Unix 时间戳。
model string 用于生成响应的模型。
choices array 补全选项数组。
choices[].message.role string 始终为 assistant
choices[].message.content string 生成的响应文本。
choices[].finish_reason string 模型停止生成的原因。通常为 stop
usage.prompt_tokens number 提示中的 token 数量。
usage.completion_tokens number 生成响应中的 token 数量。
usage.total_tokens number 使用的 token 总数。
chunks array 用作上下文的源内容块。格式与 search 响应 相同。

响应(流式)

stream: true 时,方法返回 Server-Sent Events 的 ReadableStream。检索到的内容块会先作为 chunks 事件发送,随后是流式响应。

event: chunks
data: [{"id":"chunk-001","type":"text","score":0.85,"text":"...","item":{"key":"about-cloudflare.md","timestamp":1775925540000},"scoring_details":{"vector_score":0.85}}]

data: {"id":"id-1776072781845","created":1776072781,"model":"@cf/meta/llama-3.3-70b-instruct-fp8-fast","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" document"}}]}

data: {"id":"id-1776072781845","created":1776072781,"model":"@cf/meta/llama-3.3-70b-instruct-fp8-fast","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" you provided doesn"}}]}

data: {"id":"id-1776072781845","created":1776072781,"model":"@cf/meta/llama-3.3-70b-instruct-fp8-fast","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"'t contain"}}]}

data: {"id":"id-1776072781845","created":1776072781,"model":"@cf/meta/llama-3.3-70b-instruct-fp8-fast","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" information"}}]}

data: [DONE]

Namespace 方法

以下方法仅在使用 ai_search_namespaces 绑定时可用。可使用 namespace 句柄(env.AI_SEARCH)在一次调用中跨多个实例搜索和对话。

search()

ai_search_options 中传入 instance_ids,指定要查询的实例。结果会合并并排序,每个内容块包含 instance_id 字段,标识其来源实例。

const results = await env.AI_SEARCH.search({
	messages: [{ role: "user", content: "What is Cloudflare?" }],
	ai_search_options: {
		instance_ids: ["product-docs", "customer-abc123"],
	},
});

参数

实例级 search 相同,并额外要求一个字段:

参数 类型 必需 描述
ai_search_options object namespace 级 search 必需。
ai_search_options.instance_ids array 要跨实例搜索的实例 ID。最少 1 个,最多 10 个。

响应

实例级 search 相同,并额外包含以下字段:

字段 类型 描述
chunks[].instance_id string 该内容块来自的实例。
errors array 若有实例失败,则为按实例的错误。每个对象包含 instance_idmessage

chatCompletions()

使用从多个实例检索的上下文生成聊天补全。

const response = await env.AI_SEARCH.chatCompletions({
	messages: [{ role: "user", content: "What is Cloudflare?" }],
	ai_search_options: {
		instance_ids: ["product-docs", "customer-abc123"],
	},
});

支持通过 stream: true 进行流式传输。

参数

实例级 chat completions 相同,并额外要求一个字段:

参数 类型 必需 描述
ai_search_options object namespace 级 chat completions 必需。
ai_search_options.instance_ids array 要跨实例搜索的实例 ID。最少 1 个,最多 10 个。

响应

实例级 chat completions 相同,每个内容块额外包含以下字段:

字段 类型 描述
chunks[].instance_id string 该内容块来自的实例。
errors array 若有实例失败,则为按实例的错误。每个对象包含 instance_idmessage

本地开发

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

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

这篇文档对您有帮助吗?