База знаний
Cloudflare AI Search — как превратить сайт или набор файлов в поисковый индекс для агента
Практическое руководство по Cloudflare AI Search: подключение сайта и файлов, гибридный поиск, Worker, агенты, лимиты и план теста качества.
СейчасЧто входит в AI Search
- Что входит в AI Search
- Полезные сценарии
- Какие данные можно индексировать
- Что подготовить до запуска
- Быстрый запуск поиска по сайту
- Загрузка документов и файлов
- Поиск из Cloudflare Worker
- Подключение к ИИ-агенту
- Поиск как инструмент агента
- Готовый ответ через Chat Completions
- Поиск по нескольким экземплярам
- Обновление индекса
- Модели и отдельная тарификация
- Когда AI Search подходит
- Лимиты и стоимость
- Что делать, если поиск не работает
- План мини-теста на материалах pimenov.ai
- Официальные ссылки
- Следующий шаг
- Связанные материалы
Cloudflare AI Search превращает сайт, R2-бакет или файлы во встроенном хранилище в поисковый индекс, к которому можно обращаться из Worker или приложения. Для запросов доступны векторный, ключевой и гибридный режимы.
Материал основан на официальной документации Cloudflare. Команды и настройки ниже не проверялись на рабочем аккаунте автора, поэтому после запуска ориентируйтесь на состояния Items и Jobs, вывод Wrangler и фактический ответ API.
Оглавление
- Что входит в AI Search
- Какие данные можно индексировать
- Что подготовить до запуска
- Быстрый запуск поиска по сайту
- Загрузка документов и файлов
- Поиск из Cloudflare Worker
- Подключение к ИИ-агенту
- Обновление индекса
- Модели и отдельная тарификация
- Когда AI Search подходит
- Лимиты и стоимость
- Что делать, если поиск не работает
- План мини-теста на материалах pimenov.ai
Что входит в AI Search
AI Search позволяет подключить сайт, принадлежащий вам, R2 Bucket или встроенное хранилище. Файлы можно загружать непосредственно в экземпляр через Dashboard, а к приложению подключать AI Search через Workers Binding или REST API.
При поиске API возвращает фрагменты (chunks) с оценкой совпадения и сведениями об исходном документе. На уровне запроса доступны режимы vector, keyword и hybrid, ограничение числа результатов, порог совпадения, фильтры по метаданным (metadata), переписывание запроса, расширение контекста, повышение приоритета по метаданным и reranking.
Полезные сценарии
| Задача | Что подключить | Как проверить результат |
| Поиск на публичном сайте | Сайт как источник и поле поиска в интерфейсе | По запросу возвращаются релевантные фрагменты и URL исходных страниц |
| Агент поддержки | Документацию и материалы решённых обращений | Агент получает найденные фрагменты и может сослаться на исходный документ |
| Корпоративная база знаний | Сайт, R2 или встроенное хранилище с инструкциями | По контрольным вопросам находятся нужные документы и их источники |
| Файлы клиента или проекта | Отдельный экземпляр либо несколько экземпляров в namespace | Результаты ограничены выбранным корпусом и содержат его metadata |
| Поиск по исходному коду | Поддерживаемые текстовые файлы и гибридный режим | Находятся смысловые совпадения, точные команды и идентификаторы |
Namespace binding позволяет искать сразу по нескольким экземплярам. В запросе можно явно выбрать от одного до десяти instance_ids, а в ответе проверить instance_id у каждого фрагмента.
Какие данные можно индексировать
AI Search поддерживает три источника:
- Built-in storage — встроенное хранилище, доступное в каждом экземпляре;
- Website — домен, которым вы владеете;
- R2 Bucket — документы в Cloudflare R2.
Поддерживаются Markdown, TXT, JSON, YAML, HTML, XML, PDF, DOCX, таблицы, изображения и распространённые форматы исходного кода. Полный список расширений приведён в официальном описании источников данных. Богатые форматы преобразуются в Markdown.
Максимальный размер одного файла на 8 сентября 2026 года составляет 4 МБ. Файлы, превышающие этот лимит, не индексируются и появляются в журнале ошибок.
Для сайта Wrangler поддерживает два режима поиска страниц:
sitemapчитает XML sitemap и используется по умолчанию;discoverрекурсивно переходит по ссылкам.
Для большого сайта заранее ограничьте индексируемые пути флагами --include-items и --exclude-items, чтобы в индекс не попадали лишние разделы и дубли.
Что подготовить до запуска
- Аккаунт Cloudflare и домен, которым вы владеете, если источником будет сайт.
- Установленный Wrangler и доступ, позволяющий создавать namespace и экземпляры AI Search.
- Решение использовать
sitemapилиdiscover. - Проект Cloudflare Worker, если нужен собственный HTTP endpoint.
Включаемые и исключаемые URL можно задать флагами --include-items и --exclude-items, например оставить только /articles/, /blog/ и /knowledge/.
Быстрый запуск поиска по сайту
Через Dashboard откройте AI Search, выберите Create Instance, задайте имя, при необходимости подключите сайт или R2 Bucket и создайте экземпляр. После создания файлы загружаются через вкладку Items.
Для CLI ниже предполагается, что Wrangler уже установлен и авторизован:
npx wrangler ai-search namespace create pimenov-aiЕсли namespace уже существует, пропустите эту команду.
Выберите один из вариантов создания экземпляра. При наличии XML sitemap:
npx wrangler ai-search create pimenov-ai-search --namespace pimenov-ai --source https://pimenov.ai --type web-crawler --parse-type sitemap --hybrid-search --custom-metadata category:textЕсли sitemap не подходит, используйте вместо предыдущей команды режим discover:
npx wrangler ai-search create pimenov-ai-search --namespace pimenov-ai --source https://pimenov.ai --type web-crawler --parse-type discover --hybrid-search --custom-metadata category:textФлаг --parse-type присутствует в справочнике Wrangler и принимает значения sitemap и discover. Перед копированием команд в автоматизацию полезно сверить установленную версию:
npx wrangler ai-search create --helpПроверьте статистику экземпляра:
npx wrangler ai-search stats pimenov-ai-search --namespace pimenov-aiДля задания индексации используйте команды jobs list, jobs get и jobs logs с тем же namespace.
После завершения индексации выполните первый запрос:
npx wrangler ai-search search pimenov-ai-search --namespace pimenov-ai --query 'Как подключить ИИ-агента к данным сайта?'Проверяемый результат: ответ содержит найденные фрагменты, оценки релевантности и сведения об исходных материалах.
Загрузка документов и файлов
Встроенное хранилище доступно в каждом экземпляре. Для загрузки через Dashboard откройте AI Search, выберите экземпляр, перейдите во вкладку Items и добавьте документы. AI Search индексирует загруженные файлы автоматически.
Если metadata участвует в фильтрации, заранее объявите пользовательские поля в схеме экземпляра, например через --custom-metadata category:text. Доступные типы полей Wrangler перечисляет в справке CLI.
Один экземпляр может использовать внешний источник, подключённый при создании, и принимать дополнительные файлы через встроенное хранилище. Параметры программной загрузки через Items API в проверенных snapshots не приведены, поэтому здесь не приводится неподтверждённый пример кода.
Поиск из Cloudflare Worker
Для экземпляра в namespace pimenov-ai используйте namespace binding. Прямая привязка ai_search предназначена для экземпляра в namespace default.
Добавьте binding в wrangler.jsonc:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"compatibility_date": "2026-03-27",
"ai_search_namespaces": [
{
"binding": "AI_SEARCH",
"namespace": "pimenov-ai"
}
]
}Минимальный Worker для гибридного поиска:
export default {
async fetch(request, env) {
const url = new URL(request.url);
const query = url.searchParams.get('q');
if (!query) {
return Response.json(
{ error: 'Передайте параметр q' },
{ status: 400 }
);
}
const instance = env.AI_SEARCH.get('pimenov-ai-search');
const result = await instance.search({
query,
ai_search_options: {
retrieval: {
retrieval_type: 'hybrid',
max_num_results: 5
},
reranking: {
enabled: true
}
}
});
return Response.json(result);
}
};Разверните Worker:
npx wrangler deployWrangler выведет его адрес. Подставьте URL в проверочный запрос:
curl 'https://<worker-name>.<subdomain>.workers.dev/?q=как+подключить+агента'Успешный ответ содержит массив chunks. У каждого фрагмента доступны текст, итоговая оценка, сведения об исходном документе и детали ранжирования.
Для локальной разработки добавьте "remote": true в конфигурацию binding. Wrangler будет проксировать запросы к развёрнутому экземпляру.
Подключение к ИИ-агенту
Поиск как инструмент агента
Агент вызывает search(), получает фрагменты и формирует ответ в собственном цикле. Такой вариант позволяет отдельно управлять промптом, цитатами и проверкой источников.
Готовый ответ через Chat Completions
Метод chatCompletions() извлекает контекст и передаёт его модели. Непотоковый ответ содержит готовый текст и массив использованных chunks. При stream: true сначала приходит событие с найденными фрагментами, затем SSE-поток ответа.
Поиск по нескольким экземплярам
Namespace binding позволяет искать сразу по нескольким экземплярам:
const result = await env.AI_SEARCH.search({
messages: [
{ role: 'user', content: 'Как настроить поиск по документации?' }
],
ai_search_options: {
instance_ids: ['product-docs', 'customer-project']
}
});В одном запросе можно указать от одного до десяти экземпляров. Каждый фрагмент содержит instance_id, а ошибки отдельных экземпляров возвращаются в массиве errors.
Обновление индекса
Файлы из встроенного хранилища индексируются после загрузки. Для внешних источников состояние заданий индексации проверяйте через Jobs.
Ручное задание индексации для namespace pimenov-ai запускается так:
npx wrangler ai-search jobs create pimenov-ai-search --namespace pimenov-aiАктуальный Wrangler поддерживает --namespace для команд jobs list, jobs create, jobs get, jobs cancel и jobs logs. Это позволяет запускать обновление из CI/CD и затем проверять конкретное задание.
Модели и отдельная тарификация
При создании и обновлении экземпляра Wrangler принимает параметры --embedding-model и --generation-model:
npx wrangler ai-search update pimenov-ai-search --namespace pimenov-ai --embedding-model 'EMBEDDING_MODEL_ID' --generation-model 'GENERATION_MODEL_ID'Замените placeholders на идентификаторы моделей из актуальной конфигурации. Перед изменением embedding-модели сравните качество поиска на контрольном наборе запросов.
Использование Workers AI и AI Gateway учитывается отдельно от AI Search по правилам этих сервисов.
Когда AI Search подходит
| Требование | Что подтверждено для AI Search |
| Сайт или документы | Источники Website, R2 Bucket и Built-in storage |
| Разбор файлов | Поддерживаемые rich formats преобразуются в Markdown |
| Поиск | Режимы vector, keyword и hybrid |
| Фильтрация и ранжирование | Metadata filters, query rewriting, boost by metadata и reranking в Workers API |
| Интеграция | Workers Binding и REST API |
| Несколько корпусов | Namespace search с выбором от одного до десяти экземпляров |
AI Search подходит, когда нужен готовый поиск по сайту, R2 или обычным документам с подключением к Worker или приложению. Если вы сравниваете его с собственным контуром на Vectorize, API и стоимость Vectorize нужно проверять отдельно: в использованных snapshots этих сведений нет.
Лимиты и стоимость
На 8 сентября 2026 года AI Search находится в открытой бете и бесплатен в пределах установленных лимитов. Workers AI и AI Gateway тарифицируются отдельно. Cloudflare сообщит подробности будущего биллинга минимум за 30 дней до его начала.
| Лимит | Workers Free | Workers Paid |
| Экземпляры на аккаунт | 100 | 5 000 |
| Namespaces на аккаунт | 100 | 100 |
| Файлы в экземпляре | 100 000 | 1 млн или 500 000 для hybrid search |
| Страницы за один crawl в режиме discover | 100 000 | 100 000 |
| Максимальный размер файла | 4 МБ | 4 МБ |
| Запросы в месяц | 20 000 | Без ограничения |
| Максимум страниц сайта в день | 500 | Без ограничения |
| Экземпляры в cross-instance запросе | 10 | 10 |
| Пользовательские поля metadata | 5 на экземпляр | 5 на экземпляр |
| Metadata на вектор | 10 KiB с системными данными | 10 KiB с системными данными |
| Фильтруемые индексированные строки | Первые 64 байта UTF-8 каждой строки | Первые 64 байта UTF-8 каждой строки |
Для сайта одновременно действуют несколько ограничений. Например, discover crawl принимает до 100 000 страниц, но ограничения на файлы в экземпляре и страницы в день также применяются. Итоговое число страниц определяется наиболее низким из действующих лимитов. На Workers Free ограничение составляет 500 страниц в день.
Хранилище, векторная индексация и Browser Run, который используется при обходе сайта, включены в AI Search и отдельно не тарифицируются. У старых экземпляров могут сохраняться R2-бакеты прежней архитектуры. AI Search больше не записывает в них данные, но оставшиеся объекты могут продолжать учитываться в расходах R2.
Что делать, если поиск не работает
| Симптом | Что проверить |
| Страницы не появились в индексе | Namespace, режим sitemap или discover, источник и статус задания в Jobs |
| Команда не находит экземпляр | Передан ли --namespace pimenov-ai; для многих команд по умолчанию используется default |
| Worker не видит экземпляр | Используется ли ai_search_namespaces, затем env.AI_SEARCH.get() |
| Файл получил статус ошибки | Размер до 4 МБ, поддерживаемый формат и объявленные поля metadata |
| В результатах много нерелевантных страниц | Флаги --include-items и --exclude-items, качество исходного текста и параметры запроса |
| Точные команды и названия теряются | Включён ли hybrid search |
| Релевантный документ находится слишком низко | Reranking, порог совпадения, размер фрагментов и качество исходного текста |
| Часть cross-instance поиска завершилась ошибкой | Массив errors и instance_id у успешно возвращённых фрагментов |
План мини-теста на материалах pimenov.ai
Фактические оценки нужно снять после создания и заполнения экземпляра. Без доступа к нему нельзя публиковать достоверные показатели качества.
| Запрос | Ожидаемый материал | Что проверяем |
как добавить сайт в Cloudflare и перенести DNS | Cloudflare — руководство для новичков | Семантический поиск |
Cloudflare Agents SDK Durable Objects stateful agent | Cloudflare Agents SDK | Точные термины |
мультиязычная embedding-модель для self-hosted RAG | BAAI/bge-m3 | Поиск по смыслу |
как превратить PDF в Markdown для RAG | Docling | Связь задачи и инструмента |
Cloudflare Pages деплой из GitHub | Cloudflare Pages | Название продукта и действие |
точный поиск и скрейпинг внутри Codex | Firecrawl для Codex | Поиск короткого материала |
Запустите каждый запрос в vector- и hybrid-режиме. Зафиксируйте:
- место ожидаемой страницы;
- число релевантных результатов в топ-5;
- правильность URL источника;
- наличие лишних страниц во фрагментах;
- соответствие сгенерированного ответа найденному контексту.
Для небольшого пилота можно принять такой редакционный порог:
- точные названия продуктов попадают на первое место;
- минимум пять ожидаемых страниц из шести входят в топ-3;
- в топ-5 находится не более одного явно постороннего результата;
- сгенерированный ответ не содержит утверждений, которых нет в найденных фрагментах.
Если vector хорошо отвечает на общие вопросы, но теряет названия, команды или коды ошибок, сравните его с hybrid. Если правильные документы находятся, но расположены низко, проверьте reranking. Лишние страницы устраняйте настройкой путей и повторной индексацией.
Официальные ссылки
- Начало работы через Dashboard
- Источники и поддерживаемые файлы
- Wrangler CLI
- Workers binding
- Лимиты и стоимость
Источники и изменяемые параметры проверены 8 сентября 2026 года.
Следующий шаг
Cloudflare Agents SDK — stateful AI-агенты на Durable Objects
Связанные материалы
- Блог: Gemini Embedding 2 вышел — и мультимодальный поиск стал на шаг ближе к продакшену
- База знаний: BAAI/bge-m3 — мультиязычная embedding-модель для self-hosted RAG
- База знаний: Agent-ready сайт — методология подготовки для ИИ-агентов
Если вы выбираете конфигурацию AI Search для сайта, документации или проектных файлов, обсуждение полезно, когда нужно сопоставить требования к источникам, выдаче и эксплуатации.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov
Если хотите разобрать свою задачу — напишите мне Если хотите разобрать свою задачу — напишите мне.
Можно прийти с идеей, черновым контекстом или уже живой задачей. Помогу быстро понять, где реальный следующий шаг, а где лишний шум.
Обычно хватает 2–3 сообщений, чтобы понять, могу ли я здесь реально помочь и в каком формате лучше двигаться дальше.
Дальше по теме
Firecrawl выпустил плагин для Codex: поиск с точностью 94,7% на SimpleQA, скрейпинг и краулинг сайтов прямо из агента. Разбираю, кому это нужно.