ЧТО ТАКОЕ DEEP RESEARCH И ПОЧЕМУ ОБЫЧНЫЙ ЧАТ НЕ СПРАВЛЯЕТСЯ
Обычный запрос к LLM — это один проход: модель отвечает из весов плюс, если повезёт, из одного-двух результатов поиска. Проблема очевидна: галлюцинации, устаревшие данные, отсутствие проверки. Deep research переворачивает подход. Вместо «ответь сразу» — «спланируй, собери, проверь, синтезируй». Это агентный цикл, где модель сама решает, что искать дальше, пока не наберёт достаточно доказательной базы.
Ключевое отличие ресёрч-агента от простого RAG: агент управляет собственным поиском в цикле. Он не получает готовый контекст — он его добывает. По наблюдениям сообщества, качественный deep research делает от 15 до 60 поисковых запросов на одну задачу и открывает десятки страниц, прежде чем написать первое предложение отчёта.
АНАТОМИЯ РЕСЁРЧ-АГЕНТА: ЧЕТЫРЕ СТАДИИ
Любой рабочий пайплайн deep research раскладывается на четыре стадии. Понимание этой структуры важнее выбора конкретной библиотеки — фреймворки меняются, архитектура остаётся.
- Планирование (decomposition). Модель разбивает исходный вопрос на 4-8 подзапросов. «Как менялся рынок векторных БД в 2025?» → «топ векторных БД по adoption», «pgvector vs Qdrant бенчмарки», «раунды инвестиций векторных стартапов» и т.д.
- Fan-out поиск. Каждый подзапрос уходит в поисковый API параллельно. Веерная параллелизация — главный ускоритель: 8 запросов последовательно это 40 секунд, параллельно — 5.
- Верификация. Извлечённые утверждения проверяются против источников. Здесь живёт борьба с галлюцинациями: агент отдельным проходом спрашивает «подтверждается ли этот тезис текстом источника?».
- Синтез. Финальная модель собирает отчёт с инлайн-цитатами. Каждый факт привязан к URL.
СРАВНЕНИЕ СТЕКОВ ДЛЯ СБОРКИ В 2026
Строить с нуля или взять фреймворк — зависит от того, сколько контроля вам нужно. Вот честный расклад по актуальным вариантам. Свежие релизы агентных библиотек отслеживаются в каталоге REDDYX.
| Стек | Порог входа | Контроль | Когда брать |
|---|---|---|---|
| Голый API + свой цикл | Средний | Полный | Нужна кастомная логика верификации |
| LangGraph | Высокий | Высокий | Сложные графы с ветвлением и памятью |
| LlamaIndex | Низкий | Средний | Ресёрч поверх своих документов (RAG) |
| smolagents / code-agents | Низкий | Средний | Быстрый прототип, агент пишет код |
| Готовые (Perplexity API и аналоги) | Минимальный | Низкий | Не хочется поддерживать инфру |
Мой практический совет: для обучения и полного контроля начинайте со своего цикла на голом API. Вы поймёте, где именно теряется качество, и потом любой фреймворк ляжет легко. Фреймворк, взятый до понимания механики, превращается в чёрный ящик, который невозможно дебажить.
ВЫБОР ПОИСКОВОГО СЛОЯ
Поиск — это топливо. Модель без свежих источников галлюцинирует, каким бы умным ни был промпт. В 2026 для агентов используют не «человеческие» поисковики, а API, заточенные под LLM: они возвращают чистый текст вместо HTML-мусора.
- Tavily — популярный выбор именно под ресёрч-агентов, отдаёт готовые сниппеты и опциональный «answer».
- Brave Search API — независимый индекс, адекватные лимиты, хорош для приватности.
- SearXNG — self-hosted метапоисковик, если нужен полный контроль и ноль внешних расходов.
- Exa — семантический поиск по смыслу, а не по ключам, силён на нишевом контенте.
Отдельный слой — извлечение содержимого страницы. Сниппета из поиска мало для серьёзной проверки, поэтому агент тащит полный текст найденных URL (readability-парсеры вроде trafilatura хорошо чистят статьи от навигации и рекламы).
РАБОЧИЙ ПРИМЕР: МИНИ-АГЕНТ НА PYTHON
Ниже — скелет ресёрч-агента без фреймворков. Он показывает все четыре стадии в явном виде. Замените вызовы на свой провайдер LLM и поисковый API — логика останется той же.
import asyncio, os, json
from anthropic import Anthropic
import httpx
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
TAVILY = os.environ["TAVILY_API_KEY"]
async def web_search(query: str) -> list[dict]:
async with httpx.AsyncClient(timeout=30) as s:
r = await s.post("https://api.tavily.com/search", json={
"api_key": TAVILY, "query": query,
"max_results": 5, "search_depth": "advanced",
})
return r.json().get("results", [])
def plan(question: str) -> list[str]:
msg = client.messages.create(
model="claude-sonnet-4-6", max_tokens=512,
messages=[{"role": "user", "content":
f"Разбей исследовательский вопрос на 5 поисковых "
f"подзапросов. Верни JSON-массив строк.\n\n{question}"}],
)
return json.loads(msg.content[0].text)
def synthesize(question: str, evidence: str) -> str:
msg = client.messages.create(
model="claude-sonnet-4-6", max_tokens=4096,
messages=[{"role": "user", "content":
f"Вопрос: {question}\n\nИсточники:\n{evidence}\n\n"
f"Напиши отчёт. КАЖДЫЙ факт снабди инлайн-ссылкой [URL]. "
f"Если источники противоречат — укажи это явно."}],
)
return msg.content[0].text
async def deep_research(question: str) -> str:
subqueries = plan(question)
results = await asyncio.gather(*[web_search(q) for q in subqueries])
evidence = "\n".join(
f"[{r['url']}] {r['content'][:800]}"
for batch in results for r in batch
)
return synthesize(question, evidence)
print(asyncio.run(deep_research(
"Как менялся рынок векторных БД в 2025 году?")))
Это работающий каркас на ~50 строк. Он уже делает fan-out поиск и синтез с цитатами. Чего здесь не хватает для продакшена — верификации и рекурсии, о которых ниже.
ВЕРИФИКАЦИЯ: ГЛАВНЫЙ РАЗДЕЛИТЕЛЬ ИГРУШКИ И ИНСТРУМЕНТА
Синтез с цитатами не гарантирует правды: модель может процитировать URL и всё равно исказить его содержание. Поэтому серьёзный deep research добавляет адверсариальный проход — отдельный вызов, который проверяет каждое утверждение против текста источника.
Как это выглядит на практике
- Из черновика отчёта извлекаются атомарные утверждения (по одному факту на строку).
- Для каждого утверждения агент проверяет: подтверждается ли оно текстом процитированного источника — да / нет / частично.
- Неподтверждённые утверждения либо помечаются флагом, либо запускают новый поисковый цикл для добора доказательств.
Именно верификация даёт скачок доверия. Один проход синтеза даёт красивый текст; второй, адверсариальный, отсекает уверенно звучащую чушь. По опыту практиков, отдельный verify-проход снижает долю ошибочных утверждений в разы — это самая дешёвая инвестиция в качество из всех.
РЕКУРСИЯ И БЮДЖЕТ: КОГДА ОСТАНОВИТЬСЯ
Настоящий агент не делает фиксированное число шагов — он решает сам. После первого раунда он оценивает: «покрыт ли вопрос?». Если в подтеме дыра — генерирует новые подзапросы и уходит на второй круг. Здесь появляется главный риск автоматизации ресёрча: бесконтрольный расход токенов и времени.
Практические предохранители, без которых агент разорит вас на API:
- Лимит глубины. Максимум 2-3 рекурсивных раунда. Дальше отдача падает, а счёт растёт.
- Бюджет запросов. Жёсткий потолок на число поисков и вызовов LLM за сессию.
- Дедупликация URL. Агенты обожают ходить по одним и тем же страницам — кэшируйте.
- Таймаут. Общий дедлайн на всю задачу, иначе один зависший fetch тормозит весь пайплайн.
ГДЕ ЭТО ЛОМАЕТСЯ: ЧЕСТНЫЕ ОГРАНИЧЕНИЯ
Чтобы не продавать иллюзий — вот реальные грабли, на которые наступают все.
- Пейволлы и антибот. Половину качественных источников агент физически не откроет. Cloudflare-челленджи и платный контент — постоянная головная боль.
- SEO-помойка. Поисковая выдача в 2026 забита ИИ-генерённым контентом. Агент рискует «подтвердить» факт по трём статьям, которые сами написаны одной моделью.
- Дата отсечки против свежести. Модель может незаметно подмешивать знания из весов вместо источников. Явно инструктируйте опираться только на переданный контекст.
- Стоимость. Полноценный deep research по одной задаче — это десятки тысяч токенов. На потоке это ощутимые деньги, считайте юнит-экономику заранее.
Частые вопросы
Чем deep research отличается от обычного RAG?
RAG извлекает контекст один раз из заранее готовой базы и отвечает. Deep research — это агентный цикл: модель сама планирует поиск, добывает источники из открытого веба, проверяет утверждения и при нехватке данных уходит на новый круг. RAG отвечает, агент исследует.
Сколько стоит собрать AI агента для ресёрча самому?
Код — вечер работы и ~200 строк. Основной расход операционный: поисковый API (у большинства есть бесплатный тариф на старте) плюс токены LLM. Одна серьёзная задача deep research с верификацией — это десятки тысяч токенов, так что для потока считайте бюджет заранее.
Какой поисковый API выбрать для агента?
Для быстрого старта — Tavily, он заточен именно под LLM и отдаёт чистые сниппеты. Нужна независимость и приватность — Brave Search API. Полный контроль без внешних расходов — self-hosted SearXNG. Семантический поиск по смыслу — Exa.
Можно ли доверять отчёту, который сгенерировал агент?
Только с верификацией. Без адверсариального прохода агент выдаёт уверенно звучащий текст, который может искажать даже процитированные источники. Всегда добавляйте отдельный шаг проверки утверждений против текста источника и сохраняйте ссылки для ручного контроля ключевых фактов.
Соберите свой ресёрч-пайплайн за вечер, а мы будем присылать инструменты, из которых его строить. Telegram-канал REDDYX AI — новые репозитории каждые 30-60 минут.