pimenov.ai

База знаний

Cloudflare AI Search — как превратить сайт или набор файлов в поисковый индекс для агента

Практическое руководство по Cloudflare AI Search: подключение сайта и файлов, гибридный поиск, Worker, агенты, лимиты и план теста качества.

Опубликовано

Cloudflare AI Search превращает сайт, R2-бакет или набор файлов в поисковый индекс, к которому можно обращаться из интерфейса сайта, Worker или ИИ-агента. Сервис берёт на себя загрузку данных, преобразование документов, разбиение на фрагменты, embeddings и обновление индекса.

6 августа 2026 года Cloudflare упростила AI Search: поисковый контур теперь можно создать одной командой, без ручной сборки из R2, Vectorize, Workers AI и Browser Run.

💡
RAG — retrieval-augmented generation, или генерация с поиском по своим данным. Модель сначала находит подходящие фрагменты в индексе, а затем использует их при подготовке ответа.

Оглавление

  1. Что входит в AI Search
  2. Какие данные можно индексировать
  3. Что подготовить до запуска
  4. Быстрый запуск поиска по сайту
  5. Загрузка документов и файлов
  6. Поиск из Cloudflare Worker
  7. Подключение к ИИ-агенту
  8. Обновление индекса
  9. Workers AI и AI Gateway
  10. AI Search или собственная связка с Vectorize
  11. Лимиты и стоимость
  12. Что делать, если поиск не работает
  13. План мини-теста на материалах pimenov.ai

При индексации сервис выполняет готовый конвейер:

  1. Загружает страницу или файл.
  2. Преобразует содержимое в Markdown.
  3. Делит текст на небольшие фрагменты.
  4. Создаёт embeddings — векторные представления смысла текста.
  5. Строит векторный и, при включении, полнотекстовый индекс BM25.
  6. Сохраняет фрагменты и сведения об источниках.

При запросе AI Search может выполнить векторный, ключевой или гибридный поиск. Дополнительно доступны переписывание запроса, фильтрация по метаданным, reranking результатов и генерация готового ответа.

Практические сценарии:

СценарийКак использовать AI Search
Поиск на сайтеИндексировать публичные страницы и вывести поле поиска
Агент поддержкиИскать по документации и истории решённых обращений
Корпоративная база знанийПодключить сайт или R2 с инструкциями и регламентами
Файлы пользователяСоздавать отдельный индекс для каждого клиента или проекта
MCP для агентаОпубликовать поисковый MCP endpoint
Поиск по кодуЗагрузить исходники и включить гибридный поиск

Какие данные можно индексировать

AI Search поддерживает три источника:

  • сайт, добавленный в тот же аккаунт Cloudflare;
  • R2 bucket с документами;
  • built-in storage, куда файлы загружаются напрямую через Dashboard или API.

Для загрузки подходят Markdown, TXT, JSON, YAML, HTML, PDF, DOCX, таблицы, изображения и распространённые форматы исходного кода. Максимальный размер одного файла на момент проверки 15 августа 2026 года составляет 4 МБ.

Сайт обычно обходится по sitemap. В режиме discover AI Search может находить страницы, переходя по ссылкам. Краулер представляется как Cloudflare-AI-Search, соблюдает robots.txt и учитывает правила WAF и Bot Management.

Для большого сайта полезно сразу:

  • индексировать только /articles/, /blog/ и /knowledge/;
  • исключить служебные страницы и дубли;
  • проверить, что sitemap содержит актуальный lastmod;
  • убрать из индексируемого текста меню, футер и боковые панели с помощью content selectors.

Что подготовить до запуска

  • Аккаунт Cloudflare с подключённым доменом, который нужно индексировать.
  • Node.js и актуальную версию Wrangler.
  • Права на создание AI Search namespaces и экземпляров.
  • Sitemap либо доступ к настройке Discover в Dashboard.
  • Проект Cloudflare Worker, если поиск будет доступен по собственному HTTP endpoint.
  • Правила WAF и Bot Management, которые не блокируют краулер Cloudflare-AI-Search.

Для большого сайта заранее определите включаемые и исключаемые URL. В Dashboard или через флаги --include-items и --exclude-items оставьте только нужные разделы, например /articles/, /blog/ и /knowledge/.

Быстрый запуск поиска по сайту

Установите актуальную версию Wrangler и авторизуйтесь в Cloudflare:

npm install --save-dev wrangler@latest
npx wrangler login

Создайте namespace. Если pimenov-ai уже существует, пропустите этот шаг:

npx wrangler ai-search namespace create pimenov-ai

Создайте индекс сайта с гибридным поиском. Поле category объявляется заранее, чтобы его можно было использовать при загрузке файлов через Items API:

npx wrangler ai-search create pimenov-ai-search \
  --namespace pimenov-ai \
  --source https://pimenov.ai \
  --type web-crawler \
  --hybrid-search \
  --custom-metadata category:text

В анонсе Cloudflare для сайта без sitemap показан флаг --parse-type discover, но в актуальном справочнике Wrangler он пока не перечислен. Проверьте доступность флага в установленной версии:

npx wrangler ai-search create --help

Если --parse-type поддерживается, добавьте --parse-type discover к команде создания. Если Wrangler не распознаёт его, выберите Discover в Cloudflare Dashboard.

Проверьте состояние экземпляра и задания индексации:

npx wrangler ai-search stats pimenov-ai-search \
  --namespace pimenov-ai

Дополнительно откройте Items и Jobs в Dashboard: там видны обработанные страницы, ошибки и текущее состояние синхронизации.

После завершения задания выполните первый запрос:

npx wrangler ai-search search pimenov-ai-search \
  --namespace pimenov-ai \
  --query "Как подключить ИИ-агента к данным сайта?"

Проверяемый результат: команда возвращает фрагменты страниц, оценки релевантности и URL исходных материалов.

⚠️
Внимание: AI Search может обходить только домены, подключённые к тому же аккаунту Cloudflare. Защита от ботов и правила WAF применяются к его краулеру так же, как к остальному трафику.

Загрузка документов и файлов

Каждый новый экземпляр AI Search получает встроенное хранилище и векторный индекс. Отдельно создавать R2 и Vectorize для этого не требуется.

Файл можно загрузить через Dashboard или Items API. Для экземпляра в namespace сначала получите его из namespace binding, а затем вызовите uploadAndPoll(), который ждёт завершения индексации:

const instance = env.AI_SEARCH.get("pimenov-ai-search");

const item = await instance.items.uploadAndPoll(
  "onboarding.md",
  content,
  {
    metadata: {
      category: "documentation"
    }
  }
);

console.log(item.status);

Поле category должно быть объявлено в схеме пользовательских метаданных. В быстром запуске это делает параметр --custom-metadata category:text. Для других полей укажите имя и тип при создании экземпляра.

Ожидаемое значение после успешной обработки:

completed

Файл становится доступен для поиска после завершения индексации. Этот сценарий подходит для пользовательских документов, истории проекта, итогов встреч и материалов, которые появляются во время работы агента.

Один экземпляр AI Search может одновременно использовать внешний источник и built-in storage. Например, документация берётся с сайта, а файлы конкретного клиента загружаются через API.

Поиск из Cloudflare Worker

Экземпляр создан в namespace pimenov-ai, поэтому Worker нужно подключить через namespace binding. Instance binding ai_search работает только с экземплярами из namespace default.

Добавьте в wrangler.jsonc:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "name": "pimenov-ai-search-worker",
  "main": "src/index.js",
  "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 deploy

Wrangler выведет фактический адрес Worker. Подставьте его в команду проверки:

curl "https://<worker-name>.<subdomain>.workers.dev/?q=как+подключить+агента"

В ответе должны появиться chunks с текстом, оценкой релевантности и адресом исходной страницы.

Гибридный режим объединяет семантический поиск и BM25. Он полезен для корпуса, где рядом живут обычные вопросы, названия продуктов, команды и точные сообщения об ошибках.

Подключение к ИИ-агенту

Есть три рабочих варианта.

Поиск как инструмент агента

Агент вызывает search(), получает фрагменты и самостоятельно формирует ответ. Этот вариант даёт больше контроля над системным промптом, цитатами и логикой проверки источников.

Готовый ответ через Chat Completions

Метод chatCompletions() сначала находит контекст, затем передаёт его модели. В результате возвращаются готовый ответ и использованные фрагменты.

Такой режим удобен для небольшого справочного ассистента. Для сложного агента лучше оставить AI Search поисковым инструментом, а генерацию и проверку выполнять в основном агентном цикле.

MCP endpoint без отдельного Worker

Для namespace можно включить публичные /search и /mcp endpoints. Один endpoint способен искать сразу по нескольким экземплярам AI Search.

Публичный URL не требует аутентификации. Для закрытой базы знаний разместите endpoint на своём домене и ограничьте доступ через Cloudflare Access.

Обновление индекса

Файлы во встроенном хранилище индексируются сразу после загрузки.

Для сайта и R2 AI Search запускает синхронизацию каждые шесть часов. Допустимые интервалы: 1, 2, 4, 6, 12 или 24 часа.

После публикации материала можно запускать синхронизацию из CI/CD. Официальная документация показывает команду:

npx wrangler ai-search jobs create pimenov-ai-search

Перед использованием с нестандартным namespace проверьте параметры установленной версии:

npx wrangler ai-search jobs create --help

Если команда поддерживает --namespace, передайте --namespace pimenov-ai. Если параметра нет, запускайте job из Dashboard или через Create job REST API с явным namespace. Так индекс обновится после сборки сайта, не дожидаясь следующего расписания. Запускать синхронизацию программно можно не чаще одного раза в 30 секунд.

Если экземпляр не получает поисковых запросов 31 день, плановые задания приостанавливаются. Сам поиск продолжает работать, но новые изменения источника не появятся в индексе до возобновления синхронизации.

Workers AI и AI Gateway

Workers AI используется для преобразования документов, создания embeddings, reranking и генерации ответов. Embedding-модель выбирается при создании экземпляра и позднее не меняется. Generation-модель можно менять в Settings и переопределять для отдельного запроса. Модели OpenAI, Anthropic и других провайдеров подключаются через AI Gateway, если они входят в поддерживаемый список.

Каждый экземпляр AI Search подключён к AI Gateway. Через него доступны:

  • журналы запросов и ответов;
  • показатели задержки, ошибок и расхода токенов;
  • подключение OpenAI, Anthropic и других провайдеров;
  • guardrails и проверка чувствительных данных;
  • retries и резервная модель при сбое.
⚠️
Не включайте обычный AI Gateway cache для gateway, связанного с AI Search. Кэширование embeddings способно вернуть неправильный вектор и незаметно ухудшить поиск. Для результатов поиска используйте встроенный similarity cache AI Search. Cloudflare также рекомендует не ограничивать этот gateway общим rate limit: индексация создаёт много служебных модельных запросов.

AI Search или собственная связка с Vectorize

ВозможностьAI SearchEmbeddings + Vectorize
Входные данныеСайт и готовые файлыПодготовленные приложением данные
Разбор документовВстроенНужно реализовать
ChunkingВстроенНужно настроить
EmbeddingsСоздаются автоматическиВыбор модели и вызовы на вашей стороне
ОбновлениеПлановые и ручные заданияСобственный pipeline
Keyword searchBM25 и гибридный режимОтдельная реализация
RerankingВстроенПодключается самостоятельно
Ответ моделиДоступен через Chat CompletionsСобирается отдельно
Контроль над векторамиОграниченныйПолный

AI Search подходит, когда требуется быстро добавить поиск или RAG по обычным документам. Vectorize лучше выбирать для собственной схемы embeddings, нестандартного chunking, сложного жизненного цикла векторов или глубокой интеграции с прикладными данными.

Лимиты и стоимость

На 15 августа 2026 года AI Search находится в открытой бете и работает бесплатно в пределах лимитов.

ЛимитWorkers FreeWorkers Paid
Экземпляры на аккаунт1005 000
Файлы в экземпляре100 0001 млн или 500 000 для hybrid
Максимальный размер файла4 МБ4 МБ
Запросы в месяц20 000Без ограничения
Страницы сайта в день500Без ограничения
Экземпляры в одном cross-instance запросе1010

Хранилище, Vectorize и Browser Run входят в AI Search. Вызовы Workers AI и AI Gateway учитываются по собственным правилам этих сервисов. В предварительной модели цен Cloudflare обещает включить стандартные embedding- и reranking-модели, но условия ещё могут измениться.

Cloudflare также показала предварительную модель цен после беты:

  • индексация: $0,75 за 1 млн токенов;
  • обработка изображений: ещё $0,50 за 1 млн токенов;
  • хранение: $2 за ГБ в месяц;
  • семантический поиск: $0,75 за 1 000 запросов;
  • полнотекстовый поиск: $0,10 за 1 000 запросов.

Предусмотрены бесплатные объёмы: 5 млн токенов индексации, 10 ГБ хранения и 2 000 поисковых запросов в месяц. Это preview-цены, поэтому перед расчётом продакшен-бюджета их нужно повторно проверить.

Что делать, если поиск не работает

СимптомЧто проверить
Страницы не появились в индексеNamespace, sitemap, robots.txt, WAF, Bot Management и статус задания в Jobs
Команда не находит экземплярПередан ли --namespace pimenov-ai; без него Wrangler использует default
Worker не видит pimenov-ai-searchИспользуется ли ai_search_namespaces, а затем env.AI_SEARCH.get()
Файл получил статус errorРазмер до 4 МБ, поддерживаемый формат и объявленные поля metadata
В найденных фрагментах много меню и футераContent selectors и исключение служебных URL
Точные команды и названия теряютсяВключён ли hybrid search
Релевантный документ находится ниже постороннихReranking, размер фрагментов и качество исходного текста
Новые публикации не появляютсяSync interval, Jobs и паузу синхронизации после 31 дня без запросов

План мини-теста на материалах pimenov.ai

Ниже приведён воспроизводимый план теста для индекса сайта. Фактические оценки нужно снять после создания экземпляра AI Search: без доступа к нему нельзя честно публиковать цифры качества.

ЗапросОжидаемый материалЧто проверяем
как добавить сайт в Cloudflare и перенести DNSCloudflare — руководство для новичковСемантический поиск
Cloudflare Agents SDK Durable Objects stateful agentCloudflare Agents SDKТочные термины
мультиязычная embedding-модель для self-hosted RAGBAAI/bge-m3Поиск по смыслу
как превратить PDF в Markdown для RAGDoclingСвязь задачи и инструмента
Cloudflare Pages деплой из GitHubCloudflare PagesНазвание продукта и действие
точный поиск и скрейпинг внутри CodexFirecrawl для CodexПоиск короткого материала

Запустите каждый запрос сначала в vector, затем в hybrid-режиме. Зафиксируйте:

  1. место ожидаемой страницы в выдаче;
  2. количество релевантных результатов в топ-5;
  3. наличие правильного URL источника;
  4. попадание меню и футера в найденные фрагменты;
  5. качество ответа при включённой генерации.

Для небольшого пилота можно принять такой порог:

  • точные названия продуктов попадают на первое место;
  • минимум пять ожидаемых страниц из шести входят в топ-3;
  • в топ-5 находится не более одного явно постороннего результата;
  • сгенерированный ответ не содержит утверждений, которых нет в найденных фрагментах.

Если vector хорошо отвечает на общие вопросы, но теряет названия, команды или коды ошибок, оставьте hybrid search. Если выдача содержит правильные слова, но отвечает на другую задачу, включите reranking. Шум из меню и служебных блоков исправляется content selectors и повторной индексацией.

Официальные ссылки

Источники и параметры проверены 15 августа 2026 года.

По теме

Следующий шаг

Cloudflare Agents SDK — stateful AI-агенты на Durable Objects

Связанные материалы

Если вы выбираете между готовым AI Search и собственным RAG-контуром, полезно сначала сверить требования к данным, качеству поиска и эксплуатации.

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov