← Přehled / ai-search / api / search
Workers binding
Workers poskytuje bezserverové prostředí pro spouštění kódu, ve kterém můžete vytvářet nové aplikace nebo rozšiřovat ty stávající. Použijte Workers binding k vyhledávání a chatování s instancemi AI Search z Cloudflare Workeru.
Nakonfigurujte binding
Chcete-li používat AI Search s Workers, musíte vytvořit vazbu AI Search. Vazby vytváříte úpravou svého Konfigurace Wrangleru. AI Search nabízí dva typy bindingů:
- Vazba jmenného prostoru:
ai_search_namespaces - Vazba instance:
ai_search
Vazba jmenného prostoru
Přístup ke všem instancím v rámci namespace. Instance můžete za běhu získávat, vytvářet, vypisovat a mazat.
{
"$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"| Pole | Typ | Povinné | Popis |
|---|---|---|---|
binding |
string | Ano | Název proměnné dostupné na env. Například "AI_SEARCH" jej zpřístupňuje jako env.AI_SEARCH. |
namespace |
string | Ano | namespace ke kterému se má vytvořit vazba. Namespace default namespace se automaticky vytvoří pro každý účet. Pokud namespace neexistuje, Wrangler jej při nasazení vytvoří. |
remote |
boolean | Ne | Nastavte na true pro lokální vývoj s wrangler dev. |
Vazba instance
Navažte přímou vazbu na jedinou instanci v default jmenný prostor. Použijte to v případě, že víte, kterou instanci potřebujete už v době nasazení.
{
"$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"| Pole | Typ | Povinné | Popis |
|---|---|---|---|
binding |
string | Ano | Název proměnné dostupné na env. Například "MY_SEARCH" jej zpřístupňuje jako env.MY_SEARCH. |
instance_name |
string | Ano | Název instance AI Search. Musí existovat ve výchozím namespace v době nasazení. |
remote |
boolean | Ne | Nastavte na true pro lokální vývoj s wrangler dev. |
Metody instance
Následující metody jsou k dispozici u obou ai_search_namespaces a ai_search vazby. U vazby jmenného prostoru volejte metody na handle vráceném get(). S vazbou instance volejte metody přímo na vazbě (například env.MY_SEARCH.search()).
Níže uvedené příklady používají vazbu jmenného prostoru.
search()
Vyhledejte relevantní chunky obsahu ve svém indexovaném zdroji dat. Vrátí ohodnocené chunky se zdrojovými odkazy.
const instance = env.AI_SEARCH.get("my-instance");
const results = await instance.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
});Parametry
messages array povinné
Pole objektů zpráv reprezentujících konverzaci. Každá zpráva má role a content .
-
rolestringpovinné- Role odesílatele zprávy. Platné hodnoty:
system,developer,user,assistant,tool.
- Role odesílatele zprávy. Platné hodnoty:
-
contentstringpovinné- Obsah zprávy.
query string volitelné
Jednoduchý textový řetězec dotazu. Alternativa k messages. Zadejte buď query nebo messages, ne obojí.
ai_search_options object volitelné
Možnosti konfigurace operace vyhledávání.
-
retrievalobjectvolitelné-
retrieval_typestringvolitelné- Typ vyhledávání, které se má provést. Platné hodnoty:
vector,keyword,hybrid. Výchozí hodnota jehybrid.
- Typ vyhledávání, které se má provést. Platné hodnoty:
-
match_thresholdnumbervolitelné- Minimální skóre shody požadované, aby byl výsledek považován za shodu. Musí být mezi
0a1. Výchozí hodnota je0.4.
- Minimální skóre shody požadované, aby byl výsledek považován za shodu. Musí být mezi
-
max_num_resultsintegervolitelné- Maximální počet vracených výsledků. Musí být mezi
1a50. Výchozí hodnota je10.
- Maximální počet vracených výsledků. Musí být mezi
-
filtersobjectvolitelné- Filtrování výsledků vyhledávání podle metadat. Podporuje porovnávací filtry (
eq,ne,gt,gte,lt,lte) a složené filtry (and,or). Další podrobnosti najdete v Filtrování metadat.
- Filtrování výsledků vyhledávání podle metadat. Podporuje porovnávací filtry (
-
context_expansionintegervolitelné- Počet okolních částí obsahu, které se mají zahrnout pro doplňující kontext. Musí být mezi
0a3. Výchozí hodnota je0.
- Počet okolních částí obsahu, které se mají zahrnout pro doplňující kontext. Musí být mezi
-
fusion_methodstringvolitelné- Určuje, jak se při hybridním vyhledávání kombinuje vektorové skóre se skóre klíčových slov. Platné hodnoty:
rrf(Reciprocal Rank Fusion),max(použije se nejvyšší skóre). Výchozí hodnota odpovídá nastavení na úrovni instance.
- Určuje, jak se při hybridním vyhledávání kombinuje vektorové skóre se skóre klíčových slov. Platné hodnoty:
-
keyword_match_modestringvolitelné- Určuje, jak porovnávání podle klíčových slov (BM25) vybírá kandidátní dokumenty.
andvyžaduje shodu všech výrazů.orvyžaduje shodu alespoň jednoho výrazu. Výchozí hodnota jeand.
- Určuje, jak porovnávání podle klíčových slov (BM25) vybírá kandidátní dokumenty.
-
boost_byarrayvolitelné- Zvýhodněte výsledky podle polí metadat. Maximálně 3 položky. Každá položka obsahuje:
fieldstringpovinné - Název pole metadat, podle kterého se má posílení provést (napříkladtimestamp). Maximálně 64 znaků.directionstringvolitelné - Směr posílení (boost). Platné hodnoty:asc,desc,exists,not_exists. Výchozí hodnota jeascpro číselná pole aexistspro textová pole.
- Zvýhodněte výsledky podle polí metadat. Maximálně 3 položky. Každá položka obsahuje:
-
metadata_onlybooleanvolitelné- Vracejte pouze metadata jednotlivých chunků bez textového obsahu.
-
return_on_failurebooleanvolitelné- Zda vrátit částečné výsledky, pokud některé kroky zpracování selžou. Výchozí hodnota je
true.
- Zda vrátit částečné výsledky, pokud některé kroky zpracování selžou. Výchozí hodnota je
-
-
query_rewriteobjectvolitelné-
enabledbooleanvolitelné- Přepíše dotaz, aby se zlepšila přesnost vyhledávání. Výchozí hodnota:
false.
- Přepíše dotaz, aby se zlepšila přesnost vyhledávání. Výchozí hodnota:
-
modelstringvolitelné- Model, který se má použít pro přepis dotazu.
-
rewrite_promptstringvolitelné- Vlastní prompt, který řídí přepisování dotazu.
-
-
rerankingobjectvolitelné-
enabledbooleanvolitelné- Přeřadí načtené výsledky podle sémantické relevance pomocí modelu rerankingu. Výchozí hodnota je
false.
- Přeřadí načtené výsledky podle sémantické relevance pomocí modelu rerankingu. Výchozí hodnota je
-
modelstringvolitelné- Model rerankingu, který se má použít. Platná hodnota:
@cf/baai/bge-reranker-base.
- Model rerankingu, který se má použít. Platná hodnota:
-
match_thresholdnumbervolitelné- Minimální skóre pro výsledky po rerankingu. Musí být mezi
0a1. Výchozí hodnota je0.4.
- Minimální skóre pro výsledky po rerankingu. Musí být mezi
-
-
cacheobjectvolitelné-
enabledbooleanvolitelné- Přepsání nastavení mezipaměti na úrovni instance pro tento požadavek.
-
cache_thresholdstringvolitelné- Práh podobnosti pro zásahy do mezipaměti. Platné hodnoty:
super_strict_match,close_enough,flexible_friend,anything_goes.
- Práh podobnosti pro zásahy do mezipaměti. Platné hodnoty:
-
Odpověď
Odpověď obsahuje následující položky:
| Pole | Typ | Popis |
|---|---|---|
search_query |
string | Dotaz použitý pro vyhledávání, který může být přepsaný, pokud je povoleno přepisování dotazu. |
chunks |
array | Pole odpovídajících částí obsahu. |
chunks[].id |
string | Jedinečný identifikátor části obsahu. |
chunks[].type |
string | Typ obsahu, obvykle text. |
chunks[].score |
number | Celkové skóre shody mezi 0 a 1. |
chunks[].text |
string | Textový obsah dané části. |
chunks[].item |
objekt | Informace o zdrojové položce. |
chunks[].item.key |
string | Cesta k souboru nebo URL adresa zdrojového dokumentu. |
chunks[].item.timestamp |
number | Časové razítko Unix poslední úpravy položky. |
chunks[].item.metadata |
objekt | Vlastní metadata přiřazená ke zdrojové položce. |
chunks[].scoring_details |
objekt | Rozpis toho, jak bylo vypočítáno skóre dané části obsahu. |
chunks[].scoring_details.vector_score |
number | Skóre sémantické podobnosti (0 až 1). |
chunks[].scoring_details.keyword_score |
number | Skóre shody klíčových slov (BM25). Je přítomno při použití hybridního nebo klíčového vyhledávání. |
chunks[].scoring_details.keyword_rank |
number | Pozice v pořadí podle klíčových slov. |
chunks[].scoring_details.vector_rank |
number | Pořadí podle vektorového vyhledávání. |
chunks[].scoring_details.reranking_score |
number | Skóre rerankingu (0 až 1). Přítomno, pokud je povolený reranking. |
chunks[].scoring_details.fusion_method |
string | Použitá metoda fúze (rrf nebo max). Přítomno při použití hybridního vyhledávání. |
chatCompletions()
Generujte chat completions s vaší instancí AI Search jako kontextem. Tato metoda načte relevantní obsah a použije ho k vygenerování odpovědi.
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,
},
},
});Streamování odpovědí
Nastavte stream: true a přijímat tak odpovědi jako Server-Sent Events (SSE) v okamžiku jejich generování:
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",
},
});Když stream je povoleno, metoda vrací ReadableStream SSE událostí. Každá událost obsahuje objekt JSON s choices[0].delta.content pro přírůstkový text. Stream končí data: [DONE] událost.
Parametry
messages array povinné
Pole objektů zpráv reprezentujících konverzaci. Každá zpráva má role a content .
-
rolestringpovinné- Role odesílatele zprávy. Platné hodnoty:
system,developer,user,assistant,tool.
- Role odesílatele zprávy. Platné hodnoty:
-
contentstringpovinné- Obsah zprávy.
model string volitelné
Model pro generování textu použitý ke generování odpovědí. Výchozí hodnota odpovídá generačnímu modelu nakonfigurovanému v nastavení instance AI Search. Seznam podporovaných modelů najdete v Podporované modely.
stream boolean volitelné
Vrátí proud výsledků, jakmile jsou vygenerovány. Pokud je povoleno, vrátí Response objekt s čitelným streamem. Výchozí hodnota je false.
ai_search_options object volitelné
Možnosti konfigurace operace vyhledávání a generování.
-
retrievalobjectvolitelné-
retrieval_typestringvolitelné- Typ vyhledávání, které se má provést. Platné hodnoty:
vector,keyword,hybrid. Výchozí hodnota jehybrid.
- Typ vyhledávání, které se má provést. Platné hodnoty:
-
match_thresholdnumbervolitelné- Minimální skóre shody požadované, aby byl výsledek považován za shodu. Musí být mezi
0a1. Výchozí hodnota je0.4.
- Minimální skóre shody požadované, aby byl výsledek považován za shodu. Musí být mezi
-
max_num_resultsintegervolitelné- Maximální počet vracených výsledků. Musí být mezi
1a50. Výchozí hodnota je10.
- Maximální počet vracených výsledků. Musí být mezi
-
filtersobjectvolitelné- Filtrování výsledků vyhledávání podle metadat. Podporuje porovnávací filtry (
eq,ne,gt,gte,lt,lte) a složené filtry (and,or). Další podrobnosti najdete v Filtrování metadat.
- Filtrování výsledků vyhledávání podle metadat. Podporuje porovnávací filtry (
-
context_expansionintegervolitelné- Počet okolních částí obsahu, které se mají zahrnout pro doplňující kontext. Musí být mezi
0a3. Výchozí hodnota je0.
- Počet okolních částí obsahu, které se mají zahrnout pro doplňující kontext. Musí být mezi
-
fusion_methodstringvolitelné- Určuje, jak se při hybridním vyhledávání kombinuje vektorové skóre se skóre klíčových slov. Platné hodnoty:
rrf(Reciprocal Rank Fusion),max(použije se nejvyšší skóre). Výchozí hodnota odpovídá nastavení na úrovni instance.
- Určuje, jak se při hybridním vyhledávání kombinuje vektorové skóre se skóre klíčových slov. Platné hodnoty:
-
keyword_match_modestringvolitelné- Určuje, jak porovnávání podle klíčových slov (BM25) vybírá kandidátní dokumenty.
andvyžaduje shodu všech výrazů.orvyžaduje shodu alespoň jednoho výrazu. Výchozí hodnota jeand.
- Určuje, jak porovnávání podle klíčových slov (BM25) vybírá kandidátní dokumenty.
-
boost_byarrayvolitelné- Zvýhodněte výsledky podle polí metadat. Maximálně 3 položky. Každá položka obsahuje:
fieldstringpovinné - Název pole metadat, podle kterého se má posílení provést (napříkladtimestamp). Maximálně 64 znaků.directionstringvolitelné - Směr posílení (boost). Platné hodnoty:asc,desc,exists,not_exists. Výchozí hodnota jeascpro číselná pole aexistspro textová pole.
- Zvýhodněte výsledky podle polí metadat. Maximálně 3 položky. Každá položka obsahuje:
-
metadata_onlybooleanvolitelné- Vracejte pouze metadata jednotlivých chunků bez textového obsahu.
-
return_on_failurebooleanvolitelné- Zda vrátit částečné výsledky, pokud některé kroky zpracování selžou. Výchozí hodnota je
true.
- Zda vrátit částečné výsledky, pokud některé kroky zpracování selžou. Výchozí hodnota je
-
-
query_rewriteobjectvolitelné-
enabledbooleanvolitelné- Přepíše dotaz, aby se zlepšila přesnost vyhledávání. Výchozí hodnota:
false.
- Přepíše dotaz, aby se zlepšila přesnost vyhledávání. Výchozí hodnota:
-
modelstringvolitelné- Model, který se má použít pro přepis dotazu.
-
rewrite_promptstringvolitelné- Vlastní prompt, který řídí přepisování dotazu.
-
-
rerankingobjectvolitelné-
enabledbooleanvolitelné- Přeřadí načtené výsledky podle sémantické relevance pomocí modelu rerankingu. Výchozí hodnota je
false.
- Přeřadí načtené výsledky podle sémantické relevance pomocí modelu rerankingu. Výchozí hodnota je
-
modelstringvolitelné- Model rerankingu, který se má použít. Platná hodnota:
@cf/baai/bge-reranker-base.
- Model rerankingu, který se má použít. Platná hodnota:
-
match_thresholdnumbervolitelné- Minimální skóre pro výsledky po rerankingu. Musí být mezi
0a1. Výchozí hodnota je0.4.
- Minimální skóre pro výsledky po rerankingu. Musí být mezi
-
-
cacheobjectvolitelné-
enabledbooleanvolitelné- Přepsání nastavení mezipaměti na úrovni instance pro tento požadavek.
-
cache_thresholdstringvolitelné- Práh podobnosti pro zásahy do mezipaměti. Platné hodnoty:
super_strict_match,close_enough,flexible_friend,anything_goes.
- Práh podobnosti pro zásahy do mezipaměti. Platné hodnoty:
-
Odpověď (bez streamování)
| Pole | Typ | Popis |
|---|---|---|
id |
string | Jedinečný identifikátor dokončení. |
object |
string | Vždy chat.completion. |
created |
number | Časové razítko Unix vytvoření dokončení. |
model |
string | Model použitý k vygenerování odpovědi. |
choices |
array | Pole možností dokončení. |
choices[].message.role |
string | Vždy assistant. |
choices[].message.content |
string | Text vygenerované odpovědi. |
choices[].finish_reason |
string | Důvod, proč model přestal generovat. Obvykle stop. |
usage.prompt_tokens |
number | Počet tokenů v promptu. |
usage.completion_tokens |
number | Počet tokenů ve vygenerované odpovědi. |
usage.total_tokens |
number | Celkový počet použitých tokenů. |
chunks |
array | Zdrojové části obsahu použité jako kontext. Stejný formát jako odpověď vyhledávání. |
Odpověď (streamovaná)
Když stream: true, metoda vrátí ReadableStream Server-Sent Events. Získané chunky se odesílají nejprve jako chunks událost, po které následuje streamovaná odpověď.
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]Metody jmenného prostoru
Následující metody jsou k dispozici pouze při použití ai_search_namespaces vazba. Prohledávejte a chatujte napříč více instancemi v jediném volání přímo pomocí handle jmenného prostoru (env.AI_SEARCH).
search()
Předejte instance_ids v ai_search_options a určit tak, které instance se mají dotazovat. Výsledky se sloučí a seřadí a každý chunk obsahuje pole instance_id je pole, které určuje, ze které instance pochází.
const results = await env.AI_SEARCH.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
ai_search_options: {
instance_ids: ["product-docs", "customer-abc123"],
},
});Parametry
Stejné jako vyhledávání na úrovni instance, s jedním dalším povinným polem:
| Parametr | Typ | Povinné | Popis |
|---|---|---|---|
ai_search_options |
objekt | Ano | Vyžadováno pro vyhledávání na úrovni jmenného prostoru. |
ai_search_options.instance_ids |
array | Ano | ID instancí, ve kterých se má vyhledávat. Minimálně 1, maximálně 10. |
Odpověď
Stejné jako vyhledávání na úrovni instance, s dalšími poli:
| Pole | Typ | Popis |
|---|---|---|
chunks[].instance_id |
string | Instance, ze které tato část obsahu pochází. |
errors |
array | Chyby jednotlivých instancí, pokud některé z instancí selhaly. Každý objekt obsahuje instance_id a message. |
chatCompletions()
Generujte chat completions s kontextem načteným z více instancí.
const response = await env.AI_SEARCH.chatCompletions({
messages: [{ role: "user", content: "What is Cloudflare?" }],
ai_search_options: {
instance_ids: ["product-docs", "customer-abc123"],
},
});Streamování je podporováno s stream: true.
Parametry
Stejné jako chat completions na úrovni instance, s jedním dalším povinným polem:
| Parametr | Typ | Povinné | Popis |
|---|---|---|---|
ai_search_options |
objekt | Ano | Vyžadováno pro chat completions na úrovni jmenného prostoru. |
ai_search_options.instance_ids |
array | Ano | ID instancí, ve kterých se má vyhledávat. Minimálně 1, maximálně 10. |
Odpověď
Stejné jako chat completions na úrovni instance, s dalšími poli u každé části obsahu:
| Pole | Typ | Popis |
|---|---|---|
chunks[].instance_id |
string | Instance, ze které tato část obsahu pochází. |
errors |
array | Chyby jednotlivých instancí, pokud některé z instancí selhaly. Každý objekt obsahuje instance_id a message. |
Lokální vývoj
Lokální vývoj je podporován přeposíláním požadavků na vaši nasazenou instanci AI Search. Přidejte remote: true do konfigurace vazby, a povolíte tak lokální vývoj s wrangler dev.
// wrangler.jsonc
{
"ai_search": [
{
"binding": "MY_SEARCH",
"instance_name": "my-instance",
"remote": true,
},
],
}