← Přehled / ai-search / api / migration
Migrace vazby Workers
env.AI.autorag() binding je starší API pro AI Search. Bude fungovat i nadále, ale všechny nové funkce a vylepšení jsou dostupné pouze prostřednictvím nových vazeb AI Search.
Co se změnilo
Zde je přehled klíčových rozdílů mezi starším a novým bindingem:
| Legacy | New | |
|---|---|---|
| Konfigurace Wrangler | ai binding |
ai_search nebo ai_search_namespaces binding |
| Vzor přístupu | env.AI.autorag("name") |
env.MY_INSTANCE nebo env.AI_SEARCH.get("name") |
| Formát vyhledávání | query string |
messages array nebo query string |
| Formát odpovědi | data pole |
chunks pole |
AI Search bindingy
AI Search poskytuje dva nové bindingy:
Vazba instance (ai_search) se váže přímo na jednu instanci. Toto je nejjednodušší způsob migrace z env.AI.autorag().
// wrangler.jsonc
{
"ai_search": [
{
"binding": "MY_SEARCH",
"instance_name": "my-instance",
},
],
}Vazba jmenného prostoru (ai_search_namespaces) vám poskytuje přístup ke všem instancím v rámci jmenného prostoru. Použijte jej, pokud potřebujete dynamickou správu instancí, vyhledávání napříč instancemi nebo Items API.
// wrangler.jsonc
{
"ai_search_namespaces": [
{
"binding": "AI_SEARCH",
"namespace": "default",
},
],
}Podrobnosti o rozdílu najdete v Jmenné prostory.
Požadavky
Nové vazby vyžadují následující minimální verze balíčků pro podporu typů TypeScript a lokálního vývoje.
| Balíček | Minimální verze |
|---|---|
@cloudflare/workers-types |
4.20260304.0 |
wrangler |
4.68.1 |
Krok 1: Aktualizujte konfiguraci Wrangler
Stávající instance se nacházejí ve výchozím jmenném prostoru. Pro jednoduchý postup upgradu použijte vazbu instance. Informace o vazbě jmenného prostoru najdete v AI Search bindingy.
Před:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"ai": {
"binding": "AI"
}
}[ai]
binding = "AI"Poté:
{
"$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"Krok 2: Aktualizujte definici typu
Aktualizujte Env rozhraní, abyste mohli použít nový typ vazby.
Před:
export interface Env {
AI: Ai;
}Poté:
export interface Env {
MY_INSTANCE: AiSearchInstance;
}Krok 3: Aktualizujte volání vyhledávání
Nahraďte env.AI.autorag() volání novou vazbou.
Před:
const result = await env.AI.autorag("my-instance").search({
query: "What is Cloudflare?",
});Poté:
const result = await env.MY_INSTANCE.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
});Krok 4: Aktualizujte zpracování odpovědi
Tvar odpovědi se změnil z data array na chunks pole.
Mapování položek
| Staré pole | Nové pole |
|---|---|
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 |
Změny chování streamování
Ve starší vazbě streamování pomocí env.AI.autorag().aiSearch({ stream: true }) vracela pouze streamovanou odpověď bez získaných chunků.
Nová vazba odesílá získané chunky nejprve jako chunks událost, po které následuje streamovaná odpověď. Díky tomu můžete zdrojové chunky zobrazit ihned, zatímco se generovaná odpověď streamuje.
Změny formátu filtru
Nová vazba používá filtrování metadat ve stylu Vectorize. Filtry se nyní předávají uvnitř ai_search_options.retrieval.filters.
| Starý formát | Nový formát |
|---|---|
eq |
$eq (nebo implicitní) |
ne |
$ne |
gt |
$gt |
gte |
$gte |
lt |
$lt |
lte |
$lte |
$in (nové) |
|
$nin (nové) |
Příklady
Jednoduchý filtr
Filtrování podle jediné položky metadat pomocí implicitní rovnosti:
Před:
const result = await env.AI.autorag("my-instance").search({
query: "What is Cloudflare?",
filters: {
type: "eq",
key: "folder",
value: "customer-a/",
},
});Poté:
const result = await env.MY_INSTANCE.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
ai_search_options: {
retrieval: {
filters: { folder: "customer-a/" },
},
},
});Složený filtr (AND)
Kombinujte více podmínek, které musí být splněny všechny:
Před:
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" },
],
},
});Poté:
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 },
},
},
},
});Zpětná kompatibilita
env.AI.autorag() bude fungovat i nadále bez omezení. Migraci nemusíte provádět okamžitě.
Referenci staršího API najdete v Vazba Workers (starší).