← Обзор / ai-search / api / migration
Миграция привязки 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 (устаревшая).