← Обзор / ai-search / api / instances
привязка Workers
Workers предоставляет бессерверную среду выполнения, в которой можно создавать новые приложения или дополнять существующие. Используйте привязка Workers для создания, получения списка, обновления и удаления инстансов AI Search из Cloudflare Worker. Вы также можете проверять конфигурацию инстанса и отслеживать ход индексирования.
Настройка привязки
Чтобы использовать AI Search с Workers, нужно создать привязку AI Search. Привязки создаются путём обновления Конфигурация Wrangler. AI Search предоставляет два типа привязок:
- Привязка пространства имён:
ai_search_namespaces - Привязка экземпляра:
ai_search
Привязка пространства имён
Обращайтесь ко всем экземплярам в пределах пространство имён. Экземпляры можно получать, создавать, перечислять и удалять во время выполнения.
{
"$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 | Нет | Установите значение true для локальной разработки с wrangler dev. |
Привязка экземпляра
Подключайтесь напрямую к одному экземпляру в 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. На момент развертывания должно существовать в пространстве имен по умолчанию. |
remote |
boolean | Нет | Установите значение true для локальной разработки с wrangler dev. |
Методы пространства имён
Следующие методы доступны только при использовании ai_search_namespaces привязка. Дескриптор пространства имён (env.AI_SEARCH) предоставляет методы для работы с экземплярами в рамках пространство имён.
get()
Возвращает дескриптор конкретного экземпляра. Это синхронный и не выполняет сетевой вызов. Экземпляр инициализируется отложенно, в момент вызова таких методов, как search() или info().
const instance = env.AI_SEARCH.get("my-instance");
const results = await instance.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
});Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name |
string | Да | Имя экземпляра, для которого нужно получить дескриптор. |
list()
Возвращает все экземпляры в пространстве имён.
const { result, result_info } = await env.AI_SEARCH.list();
for (const instance of result) {
console.log(`${instance.id} (${instance.type}) - ${instance.status}`);
}
// result_info.total_count contains the total number of instancesПараметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
page |
число | Нет | Номер страницы для возврата. Значение по умолчанию: 1. |
per_page |
число | Нет | Количество экземпляров на странице. Значение по умолчанию составляет 20. Максимум 100. |
search |
string | Нет | Ищет экземпляры по ID. |
order_by |
string | Нет | Столбец сортировки. Допустимое значение: created_at. По умолчанию используется created_at. |
order_by_direction |
string | Нет | Направление сортировки. Допустимые значения: asc, desc. По умолчанию используется desc. |
Ответ
| Поле | Тип | Описание |
|---|---|---|
result |
array | Массив объектов экземпляров. |
result[].id |
string | Идентификатор экземпляра. |
result[].type |
string | Тип источника данных (r2, web-crawler, или null для пустых экземпляров). |
result[].source |
string | Расположение источника данных. |
result[].status |
string | Статус экземпляра (active, waiting, indexing). |
result[].enable |
boolean | Включён ли экземпляр. |
result[].namespace |
string | Пространство имён, которому принадлежит экземпляр. |
result[].created_at |
string | Временная метка ISO 8601 создания экземпляра. |
result[].modified_at |
string | Временная метка ISO 8601 последнего изменения. |
result_info |
объект | Метаданные пагинации. |
result_info.total_count |
число | Общее количество экземпляров в пространстве имён. |
create()
Создаёт новый экземпляр и возвращает на него дескриптор. Можно создавать экземпляры на основе источника данных или пустые экземпляры для использования с API элементов.
Создайте пустой экземпляр для загрузки файлов:
Экземпляры AI Search поставляются с встроенное хранилище где можно загружать документы напрямую.
const instance = await env.AI_SEARCH.create({
id: "knowledge-base",
});
// Upload documents using the Items API
await instance.items.upload("guide.pdf", pdfArrayBuffer);Создайте экземпляр веб-краулера:
Автоматически сканируйте и индексируйте сайт, которым вы владеете. Дополнительные варианты настройки см. в Источник данных «Сайт».
const instance = await env.AI_SEARCH.create({
id: "my-docs",
type: "web-crawler",
source: "developers.cloudflare.com",
});Создайте экземпляр на основе R2:
Индексация документов, хранящихся в R2 bucket. Дополнительные варианты настройки см. в Источник данных R2.
const instance = await env.AI_SEARCH.create({
id: "internal-docs",
type: "r2",
source: "my-docs-bucket",
});Параметры
id string обязательно
Уникальный идентификатор экземпляра AI Search. Должен содержать от 1 до 64 символов и соответствовать шаблону ^[a-z0-9_]+(?:-[a-z0-9_]+)*$.
type string необязательно
Тип источника данных. Допустимые значения: r2, web-crawler. Обязательно при создании экземпляра с источником данных. Пропустите при создании пустого экземпляра для использования с API элементов.
source string необязательно
Расположение источника данных. Для r2 типа это имя бакета R2. Для web-crawler типа это домен веб-сайта. Требуется, если type указан.
source_params object необязательно
Дополнительные параметры источника данных.
prefixstringнеобязательно- Для источников R2 ограничивает индексирование объектами с этим префиксом ключа.
r2_jurisdictionstringнеобязательно- Юрисдикция для бакета R2, например
eu.
- Юрисдикция для бакета R2, например
include_itemsarrayнеобязательно- Glob-шаблоны для путей, которые нужно включить в индексирование. Например:
["/blog/**", "/docs/**/*.html"].
- Glob-шаблоны для путей, которые нужно включить в индексирование. Например:
exclude_itemsarrayнеобязательно- Glob-шаблоны для путей, которые нужно исключить из индексирования. Например:
["/admin/**", "/private/**"].
- Glob-шаблоны для путей, которые нужно исключить из индексирования. Например:
web_crawlerobjectнеобязательно- Конфигурация источников для веб-краулера.
parse_typestringнеобязательно- Как обнаруживаются страницы. Допустимые значения:
sitemap(считывает файлы XML sitemap),discover(начинается с исходного URL-адреса и по умолчанию использует как файлы sitemap, так и ссылки, найденные на просканированных страницах). Значение по умолчанию:sitemap. См. Parse types.
- Как обнаруживаются страницы. Допустимые значения:
parse_optionsobjectнеобязательноinclude_headersobjectнеобязательно- Пользовательские заголовки HTTP, которые нужно добавлять при обходе.
include_imagesbooleanнеобязательно- Включать ли изображения в индекс.
specific_sitemapsarrayнеобязательно- Конкретные URL-адреса sitemap для сканирования. Например:
["https://example.com/sitemap.xml"]. Допустимо только еслиparse_typeэтоsitemap.
- Конкретные URL-адреса sitemap для сканирования. Например:
use_browser_renderingbooleanнеобязательно- Используйте Browser Run (ранее Browser Rendering) для обхода страниц, отрисованных на JavaScript.
discover_optionsobjectнеобязательно- Настройки сканирования, которые применяются, когда
parse_typeэтоdiscover. sourcestringнеобязательно- Где краулер ищет потенциальные URL-адреса. Допустимые значения:
all,sitemaps,links. По умолчанию используетсяall.
- Где краулер ищет потенциальные URL-адреса. Допустимые значения:
limitnumberнеобязательно- Максимальное количество страниц для сканирования. Допустимые значения:
1к100000. По умолчанию используется100000.
- Максимальное количество страниц для сканирования. Допустимые значения:
depthnumberнеобязательно- Максимальное количество переходов по ссылкам от исходного URL. Допустимые значения:
1к100000. По умолчанию используется5.
- Максимальное количество переходов по ссылкам от исходного URL. Допустимые значения:
max_agenumberнеобязательно- Как долго, в секундах, краулер использует кешированное содержимое страницы, прежде чем заново загрузить его с origin-сервера. Допустимые значения:
0к604800. По умолчанию используется86400.
- Как долго, в секундах, краулер использует кешированное содержимое страницы, прежде чем заново загрузить его с origin-сервера. Допустимые значения:
include_external_linksbooleanнеобязательно- Переходить ли по ссылкам, ведущим на другие домены. По умолчанию:
false.
- Переходить ли по ссылкам, ведущим на другие домены. По умолчанию:
include_subdomainsbooleanнеобязательно- Переходить ли по ссылкам, ведущим на поддомены исходного URL. По умолчанию:
false.
- Переходить ли по ссылкам, ведущим на поддомены исходного URL. По умолчанию:
- Настройки сканирования, которые применяются, когда
store_optionsobjectнеобязательноstorage_typestringнеобязательно- Тип хранилища. Допустимое значение:
r2.
- Тип хранилища. Допустимое значение:
storage_idstringнеобязательно- ID бакета хранилища.
r2_jurisdictionstringнеобязательно- Юрисдикция для бакета хранилища.
index_method object необязательно
Определяет, какие методы индексирования включены для экземпляра. Указывает, доступен ли векторный (семантический) поиск, поиск по ключевым словам или оба варианта. Хотя бы один должен быть true.
vectorbooleanнеобязательно- Включите векторный семантический поиск. По умолчанию:
true.
- Включите векторный семантический поиск. По умолчанию:
keywordbooleanнеобязательно- Включите поиск по ключевым словам. По умолчанию:
false.
- Включите поиск по ключевым словам. По умолчанию:
Задайте для обоих значение true для гибридного поиска.
fusion_method string необязательно
Определяет, как объединяются оценки векторного и ключевого поиска при использовании гибридного поиска. Допустимые значения: rrf (Reciprocal Rank Fusion), max (используется максимальное значение оценки). Значение по умолчанию: rrf.
indexing_options object необязательно
Конфигурация способа индексирования контента.
keyword_tokenizerstringнеобязательно- Токенизатор, используемый для индексирования при поиске по ключевым словам. Допустимые значения:
porter(на основе стемминга),trigram(символьная n-грамма). Значение по умолчанию:porter.
- Токенизатор, используемый для индексирования при поиске по ключевым словам. Допустимые значения:
retrieval_options object необязательно
Конфигурация поиска по умолчанию для экземпляра. Эти значения по умолчанию можно переопределить на уровне запроса с помощью ai_search_options.
keyword_match_modestringнеобязательно- Определяет, как сопоставление по ключевым словам (BM25) выбирает документы-кандидаты.
andтребует совпадения всех терминов.orтребует совпадения хотя бы одного термина. Значение по умолчанию:and.
- Определяет, как сопоставление по ключевым словам (BM25) выбирает документы-кандидаты.
boost_byarrayнеобязательно- Поля усиления по умолчанию, применяемые ко всем поисковым запросам. Максимум 3 элемента. Каждый элемент содержит:
fieldstringобязательно - Имя поля метаданных, по которому выполняется усиление. Максимум 64 символа.directionstringнеобязательно - Направление усиления (boost). Допустимые значения:asc,desc,exists,not_exists.
- Поля усиления по умолчанию, применяемые ко всем поисковым запросам. Максимум 3 элемента. Каждый элемент содержит:
sync_interval number необязательно
Интервал в секундах между автоматическими синхронизациями источника данных. Допустимые значения: 3600, 7200, 14400, 21600, 43200, 86400. По умолчанию используется 21600 (6 часов).
token_id string необязательно
UUID токен API службы для использования в этом экземпляре. Требуется только если вы ещё не создавали ни одного экземпляра AI Search. См. Руководство по началу работы с API о том, как создать и зарегистрировать токен службы.
ai_gateway_id string необязательно
ID AI Gateway для маршрутизации запросов в целях логирования и аналитики.
embedding_model string необязательно
Embedding-модель, используемая для векторизации контента.
ai_search_model string необязательно
Модель генерации текста, используемая для формирования ответов.
rewrite_query boolean необязательно
Включите переписывание запроса для повышения точности поиска. По умолчанию: false.
rewrite_model string необязательно
Модель, используемая для переписывания запроса.
reranking boolean необязательно
Включите реранкинг, чтобы переупорядочивать найденные результаты по семантической релевантности. По умолчанию: false.
reranking_model string необязательно
Модель реранкинга. Допустимое значение: @cf/baai/bge-reranker-base.
chunk_size number необязательно
Размер чанков при разбиении документов. Минимальное значение: 64.
chunk_overlap number необязательно
Перекрытие между чанками. Минимальное значение: 0.
max_num_results number необязательно
Максимальное количество возвращаемых результатов по умолчанию. Минимальное значение: 1.
score_threshold number необязательно
Минимальный порог показателя соответствия для результатов по умолчанию. Минимальное значение: 0.
cache boolean необязательно
Включите кеширование ответов. По умолчанию: true.
cache_threshold string необязательно
Порог совпадения кэша. Допустимые значения: super_strict_match, close_enough, flexible_friend, anything_goes. По умолчанию используется close_enough.
cache_ttl number необязательно
TTL записи кэша в секундах. Допустимые значения: 600, 1800, 3600, 7200, 21600, 43200, 86400, 172800, 259200, а также 518400. По умолчанию используется 172800.
custom_metadata array необязательно
Поля пользовательских метаданных, которые нужно извлекать и индексировать из документов.
field_namestringобязательно- Имя поля метаданных.
data_typestringобязательно- Тип данных поля. Допустимые значения:
text,number,boolean,datetime.
- Тип данных поля. Допустимые значения:
enable boolean необязательно
Включён ли экземпляр. По умолчанию: true.
Ответ
Возвращает AiSearchInstance дескриптор, который сразу готов к использованию для вызова таких методов, как search(), info(), stats(), а также items.upload(). Вызовите info() на хендле, чтобы получить конфигурацию экземпляра.
delete()
Навсегда удаляет экземпляр и весь его индексированный контент. Это действие нельзя отменить.
await env.AI_SEARCH.delete("old-docs");Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name |
string | Да | Имя экземпляра, который нужно удалить. |
Ответ
Возвращает void. Возвращает ошибку, если экземпляр не существует.
Методы экземпляра
Следующие методы доступны как в ai_search_namespaces и ai_search привязки. При использовании привязки пространства имён вызывайте методы на дескрипторе, который возвращает get(). При использовании привязки к экземпляру вызывайте методы прямо на привязке (например, env.MY_SEARCH.info()).
В примерах ниже используется привязка пространства имён.
update()
Частично обновляет конфигурацию экземпляра. Изменяются только переданные вами поля.
const updated = await env.AI_SEARCH.get("my-instance").update({
ai_search_model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
reranking: true,
});Параметры
Принимает частичную версию параметры создания. Обновляются только те поля, которые вы укажете.
| Поле | Тип | Описание |
|---|---|---|
ai_search_model |
string | Модель генерации текста. |
embedding_model |
string | Embedding-модель. |
index_method |
объект | Способы индексирования: \{ vector: boolean, keyword: boolean \}. |
fusion_method |
string | Как объединяются оценки векторного поиска и поиска по ключевым словам (rrf или max). |
indexing_options |
объект | Конфигурация индексации, включая keyword_tokenizer. |
retrieval_options |
объект | Настройки поиска, включая keyword_match_mode и boost_by. |
reranking |
boolean | Включите или отключите реранкинг. |
reranking_model |
string | Модель реранкинга. |
rewrite_query |
boolean | Включите или отключите переписывание запроса. |
rewrite_model |
string | Модель переписывания запроса. |
source |
string | Обновите расположение источника данных. |
cache |
boolean | Включите или отключите кэширование ответов. |
chunk_size |
число | Размер каждого чанка в токенах. |
chunk_overlap |
число | Перекрытие токенов между чанками. |
score_threshold |
число | Минимальный порог оценки для результатов. |
max_num_results |
число | Максимальное количество результатов на запрос. |
custom_metadata |
array | Определения полей пользовательских метаданных. |
sync_interval |
число | Интервал в секундах между автоматическими синхронизациями источника данных. |
Ответ
Возвращает обновлённую конфигурацию экземпляра. Имеет ту же структуру, что и info().
info()
Возвращает текущую конфигурацию и метаданные экземпляра.
const info = await env.AI_SEARCH.get("my-instance").info();Ответ
| Поле | Тип | Описание |
|---|---|---|
id |
string | Идентификатор экземпляра. |
type |
string | Тип источника данных (r2, web-crawler, или null). |
source |
string | Расположение источника данных. |
namespace |
string | Пространство имён, которому принадлежит экземпляр. |
status |
string | Статус экземпляра (active, waiting, indexing). |
enable |
boolean | Включён ли экземпляр. |
created_at |
string | Отметка времени создания экземпляра. |
modified_at |
string | Отметка времени последнего изменения. |
ai_search_model |
string | Модель генерации текста. |
embedding_model |
string | Embedding-модель. |
reranking |
boolean | Включён ли реранкинг. |
reranking_model |
string | Модель реранкинга. |
rewrite_query |
boolean | Включено ли переписывание запроса. |
rewrite_model |
string | Модель переписывания запроса. |
cache |
boolean | Включено ли кэширование ответов. |
cache_threshold |
string | Порог сходства для попаданий в кэш. |
index_method |
объект | Какие методы индексирования включены (vector, keyword). |
fusion_method |
string | Как объединяются оценки векторного поиска и поиска по ключевым словам (rrf или max). |
indexing_options |
объект | Конфигурация индексации, включая keyword_tokenizer. |
retrieval_options |
объект | Настройки поиска, включая keyword_match_mode и boost_by. |
chunk_size |
число | Размер каждого чанка в токенах. |
chunk_overlap |
число | Перекрытие токенов между чанками. |
score_threshold |
число | Минимальный порог оценки для результатов. |
max_num_results |
число | Максимальное количество результатов на запрос. |
sync_interval |
число | Интервал в секундах между автоматическими синхронизациями источника данных. |
custom_metadata |
array | Определения полей пользовательских метаданных. |
last_activity |
string | Отметка времени последней активности индексирования. |
stats()
Возвращает текущий ход индексирования экземпляра. Используйте этот метод, чтобы опрашивать статус завершения после создания экземпляра или загрузки файлов.
const stats = await env.AI_SEARCH.get("my-instance").stats();Ответ
| Поле | Тип | Описание |
|---|---|---|
queued |
число | Элементы, ожидающие обработки. |
running |
число | Элементы, которые сейчас обрабатываются. |
completed |
число | Элементы, успешно проиндексированные. |
error |
число | Элементы, которые не удалось проиндексировать. |
skipped |
число | Элементы, пропущенные при индексировании. |
outdated |
число | Элементы, которые нуждаются в переиндексации. |
last_activity |
string | Временная метка ISO 8601 последней активности индексации. |
file_embed_errors |
объект | Сопоставление идентификаторов файлов с деталями ошибок эмбеддинга. |
engine.vectorize.vectorsCount |
число | Общее количество хранящихся векторов. |
engine.vectorize.dimensions |
число | Размерность векторных эмбеддингов. |
engine.r2.payloadSizeBytes |
число | Общий размер хранимой полезной нагрузки в байтах. |
engine.r2.metadataSizeBytes |
число | Общий размер хранимых метаданных в байтах. |
engine.r2.objectCount |
число | Общее количество объектов в хранилище. |
Локальная разработка
Локальная разработка поддерживается за счёт проксирования запросов к вашему развёрнутому экземпляру AI Search. Добавьте remote: true в конфигурацию привязок, чтобы включить локальную разработку с wrangler dev.
// wrangler.jsonc
{
"ai_search": [
{
"binding": "MY_SEARCH",
"instance_name": "my-instance",
"remote": true,
},
],
}