INTEGRITY Документация

Миграция привязки Workers

env.AI.autorag() привязка это устаревший API для AI Search. Он продолжит работать, но все новые функции и улучшения доступны только через новые привязки AI Search.

Что изменилось

Вот краткий обзор ключевых различий между устаревшими и новыми привязками:

Legacy Новое
Конфигурация Wrangler ai привязка ai_search или ai_search_namespaces привязка
Шаблон доступа env.AI.autorag("name") env.MY_INSTANCE или env.AI_SEARCH.get("name")
Формат поиска query строка messages массив или query строка
Формат ответа data массив chunks массив

Привязки AI Search

AI Search предоставляет две новые привязки:

Привязка экземпляра (ai_search) привязывается напрямую к одному экземпляру. Это самый простой способ перехода с env.AI.autorag().

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

Привязка пространства имён (ai_search_namespaces) даёт доступ ко всем экземплярам в пределах пространства имён. Используйте этот вариант, если вам нужны динамическое управление экземплярами, поиск между экземплярами или Items API.

// wrangler.jsonc
{
	"ai_search_namespaces": [
		{
			"binding": "AI_SEARCH",
			"namespace": "default",
		},
	],
}

Подробнее об этом различии см. в Пространства имён.

Требования

Для новых привязок требуются следующие минимальные версии пакетов для типов TypeScript и поддержки локальной разработки.

Пакет Минимальная версия
@cloudflare/workers-types 4.20260304.0
wrangler 4.68.1

Шаг 1: Обновите конфигурацию Wrangler

Существующие экземпляры находятся в пространстве имён по умолчанию. Для простого перехода используйте привязку экземпляра. Об использовании привязки пространства имён см. в Привязки AI Search.

До:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "ai": {
    "binding": "AI"
  }
}
[ai]
binding = "AI"

После:

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

[[ai_search]]
binding = "MY_INSTANCE"
instance_name = "my-instance"

Шаг 2: Обновите определение типа

Обновите Env интерфейс, чтобы использовать новый тип привязки.

До:

export interface Env {
	AI: Ai;
}

После:

export interface Env {
	MY_INSTANCE: AiSearchInstance;
}

Шаг 3: Обновите вызовы поиска

Замените env.AI.autorag() вызовов новой привязкой.

До:

const result = await env.AI.autorag("my-instance").search({
	query: "What is Cloudflare?",
});

После:

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

Шаг 4: Обновите обработку ответов

Форма ответа изменилась с data массив в chunks массив.

Сопоставление полей

Старое поле Новое поле
data[] chunks[]
data[].file_id chunks[].id
data[].filename chunks[].item.key
data[].score chunks[].score
data[].content[].text chunks[].text
data[].attributes.modified_date chunks[].item.timestamp

Изменения в поведении потоковой передачи

В устаревшей привязке потоковая передача с env.AI.autorag().aiSearch({ stream: true }) возвращала только потоковый ответ без полученных фрагментов.

Новая привязка сначала отправляет полученные чанки в виде chunks событие, за которым следует потоковый ответ. Это позволяет сразу показывать исходные чанки, одновременно транслируя сгенерированный ответ.

Изменения формата фильтра

Новая привязка использует фильтрацию метаданных в стиле Vectorize. Теперь фильтры передаются внутри ai_search_options.retrieval.filters.

Старый формат Новый формат
eq $eq (или неявный)
ne $ne
gt $gt
gte $gte
lt $lt
lte $lte
$in (новый)
$nin (новый)

Примеры

Простой фильтр

Фильтрация по одному полю метаданных с неявным равенством:

До:

const result = await env.AI.autorag("my-instance").search({
	query: "What is Cloudflare?",
	filters: {
		type: "eq",
		key: "folder",
		value: "customer-a/",
	},
});

После:

const result = await env.MY_INSTANCE.search({
	messages: [{ role: "user", content: "What is Cloudflare?" }],
	ai_search_options: {
		retrieval: {
			filters: { folder: "customer-a/" },
		},
	},
});

Составной фильтр (AND)

Объедините несколько условий, все из которых должны выполняться:

До:

const result = await env.AI.autorag("my-instance").search({
	query: "What is Cloudflare?",
	filters: {
		type: "and",
		filters: [
			{ type: "eq", key: "folder", value: "customer-a/" },
			{ type: "gte", key: "timestamp", value: "1735689600000" },
		],
	},
});

После:

const result = await env.MY_INSTANCE.search({
	messages: [{ role: "user", content: "What is Cloudflare?" }],
	ai_search_options: {
		retrieval: {
			filters: {
				folder: "customer-a/",
				timestamp: { $gte: 1735689600 },
			},
		},
	},
});

Обратная совместимость

env.AI.autorag() привязка будет работать и дальше без ограничения по времени. Немедленно переходить на новую версию не обязательно.

Справочник по устаревшему API см. в Привязка Workers (устаревшая).