Содержание статьи
- Кто есть кто на GitHub
- Что будем пробовать
- Модель-оркестратор
- Подготовка: WSL 2 и Docker Desktop
- Vane
- Проверяем интеграцию WSL в Docker Desktop
- Запускаем Vane через WSL
- Настройка в браузере
- Технические особенности и ограничения Vane
- GPT Researcher
- Deep Research от dzhng
- Установка и русификация
- Убираем зависимость от Firecrawl
- Ставим CrawlRouter
- Настраиваем SearXNG
- Мастер-файл Docker Compose
- Патч deep-research.ts
- Настройка и запуск
- Бонус
- Заключение
info
Не так давно я писал статью о принципах работы глубокого исследования с использованием языковых моделей. Сегодня плотнее займемся этим на практике.
Ситуация с галлюцинированием, когда модель придумывает ответ вместо того, чтобы хотя бы сказать «не знаю», стала меняться только тогда, когда LLM (и пока мы говорим только о крупных облачных моделях) научились пользоваться инструментами, запрашивая недостающую информацию из интернета. Теперь вместо уверенных галлюцинаций модель может выйти в сеть, поискать информацию — и оформить в виде красивого отчета.
Поиск — это еще не Deep Research. Модель генерирует один запрос, смотрит результаты и на их основе дает ответ. Следом появились агенты — автономные сущности, которые могут самостоятельно запрашивать и анализировать данные.
На смену классическим, хоть и умным поисковикам пришли системы глубокого исследования (Deep Research). Эти системы не просто находят ссылки, как это делает Google, и даже не просто генерируют обзорную статью «по мотивам», а выполняют многоэтапный аналитический процесс: анализируют сложный запрос пользователя и разбивают его на части, самостоятельно ищут в интернете информацию по каждой подзадаче, скачивают и дистиллируют веб‑страницы и распознают PDF-документы, постоянно проверяя себя: найден ли ответ на запрос пользователя? А точно найден? А точно на оригинальный запрос или мы закопались в ненужные дебри? И только после того, как критерии будут выполнены (или у системы закончатся выделенные ресурсы), система сгенерирует итоговый аналитический отчет со всеми ссылками и цитатами.
Звучит как фантастика? Но это работает. Если ты еще не пробовал сервис Perplexity — попробуй, даже бесплатная версия способна заменить традиционные поисковики, если тебе нужен не набор ссылок, а ответ на конкретный вопрос. Если же у тебя есть доступ к платной версии, то тебе будут доступны как более мощные модели‑оркестраторы, так и фирменный режим Deep Research, который не просто выдаст ответ на вопрос, а напишет по теме целую диссертацию. Подобные режимы есть у большинства крупных облачных моделей — где‑то за деньги, но где‑то и бесплатно. Gemini, Claude, ChatGPT, Grok — режим исследователя есть во всех этих моделях.
Если у тебя нет доступа ни к одной из них — не проблема. Deep Research есть, например, у Kimi K2.5. Это мощная модель с открытыми весами на 1Т параметров. У нее есть режимы Agent и Agent Swarm.
Еще вариант — GLM-5 от z.ai. Здесь можно просто включить режимы Advanced Search и Deep Thinking, а можно попробовать новый режим Agent. Запусти исследование, и модель будет выдавать тебе подробный лог: какие инструменты использовались, какие скрипты вызывались, какие именно поисковые запросы; строки кода и команды красиво и убедительно бегут в терминале.
Все это прекрасно, но… это облачные модели со всеми вытекающими: отсутствие приватности, прописанная в политиках безопасность и сохранение всех твоих запросов на серверах моделей, а также более (у западных моделей) или менее (у китайских) жесткие цензурные рамки. Что делать, если Claude просто заблокирует твой аккаунт, потому что ты зашел из «неправильной» локации? Да и завести у себя подобную систему, у которой в сеть будут уходить только анонимные запросы к поисковикам, хочется как минимум из спортивного интереса.
Давай разберемся, что предлагает сообщество разработчиков с открытым исходным кодом.
Кто есть кто на GitHub
Рынок систем автономного поиска и агрегации данных сегодня перенасыщен проектами разной степени паршивости. Чтобы отделить зерна от плевел, мы сфокусируемся исключительно на опенсорсных проектах, имеющих репозитории на GitHub, высокую популярность среди разработчиков и активную поддержку. Проекты, не получавшие коммитов больше года, мы рассматривать не будем, так как в индустрии ИИ год без обновлений равносилен смерти.
В статье «Агенты ИИ. Как работает режим Deep Research и как его развернуть у себя» я упоминал Perplexica (уже переименован в ItzCrazyKns/), langchain-ai/, zilliztech/, LearningCircuit/ и HKUDS/. Добавлю к ним проекты dzhng/ и assafelovic/, после чего список можно считать достаточно подробным.
Впрочем, для наших целей подойдет далеко не каждый из этих проектов. Так, система Open Deep Research, разработанная создателями популярного фреймворка LangChain, — это прекрасный инструмент для построения пайплайнов глубокого анализа. В основе системы лежит архитектура графовой оркестрации агентов LangGraph, позволяющая гибко настраивать состояния и переходы между фазами исследования.
Процесс разделен на три логических этапа: определение масштаба (scope), непосредственно само исследование с использованием поисковых инструментов и финальный отчет. Система прекрасно показывает себя в бенчмарках, а интеграция с серверами MCP позволяет натравливать агента не только на веб, но и на локальные базы данных. Тем не менее нам он не подойдет: слишком сложен. Это скорее фреймворк для гиков и разработчиков, чем готовый продукт.
Проект DeepSearcher от Zilliz тоже не наш вариант: он ориентирован на Enterprise Knowledge Management — корпоративный поиск по приватным данным. Интересно, но не для нас.
Сюда же запишем Local Deep Research — инструмент, созданный специально для глубоких исследований в домашних условиях. Мне он показался избыточно сложным; он отличается параноидальным подходом к безопасности: все локальные базы данных шифруются, учетные данные живут только в рамках сессии. Пожалуй, перебор.
Что будем пробовать
Одним из фаворитов, совместивших локальные модели и простой интерфейс в виде строки в браузере, стал проект Perplexica, в начале марта сменивший название на Vane. Изначально он задумывался как опенсорсный клон известного поисковика Perplexity. Vane представляет собой приватный поисковый ИИ, который разворачивается локально и работает прямо в окне браузера.
Perplexica может использовать любую локальную модель LLM, которую ты заведешь на своем компьютере; для поиска — движок SearXNG, который анонимно парсит Google, Bing и другие платформы, не оставляя цифровых следов. Есть «быстрый» и «качественный» режимы, можно загружать PDF, искать по изображениям.
Приятно, что SearXNG уже входит в состав контейнера — не нужно возиться с Docker Compose. Устанавливается просто, работает интуитивно, обновления выходят регулярно, а архитектура позволяет запускать весь комбайн одной командой.
GPT Researcher, созданный Ассафом Эловиком, тоже интересный проект, по крайней мере на бумаге; попробуем запустить и его. GPT Researcher умеет проводить параллельный сбор данных из множества источников и генерировать отчеты с цитированием, поддерживает облачные и локальные модели. В общем, будем пробовать!
Наконец, многообещающе — опять же на бумаге — смотрится проект dzhng/, написанный на Node.js и подкупающий простотой, настройками глубины и охвата исследования и обещанной интерактивностью (задаст тебе уточняющие вопросы по теме исследования). Рассмотрим и его.
Модель-оркестратор
Умный поиск требует не столько знаний, сколько логики. Для Deep Research вовсе не обязательно использовать модель с триллионом параметров — вполне приличные результаты, сравнимые с бесплатной версией Perplexity, можно получить и с компактной моделью.
Общие рекомендации просты: бери современную модель максимального размера, который (вместе с кешем контекста) поместится в видеопамять твоего компьютера с квантом Q4_K_M, Q5_K_M или выше. Если же ты используешь современную модель с архитектурой MoE, то слои экспертов вполне можно разместить и в обычной памяти компьютера (в KoboldCpp это либо галочка Auto Fit, либо ручной подбор параметра MoE CPU Layers) с незначительным падением производительности.
Для работы тебе потребуется локальная языковая модель, запущенная на твоем компьютере, — она будет использоваться в качестве оркестратора и генератора финального отчета. В качестве бэкенда используем KoboldCpp — я писал о его настройке в одной из статей, но, если ты предпочитаешь llama.cpp или ik_llama, это тоже отличный выбор. От движка тебе нужен API, совместимый с OpenAI.
Далее нужно выбрать языковую модель, которая будет обрабатывать запросы, управлять агентами и генерировать финальный отчет. Для исследования тебе понадобится окно контекста порядка 32K токенов (32 768), причем уместить его крайне желательно в видеопамять, иначе работать все будет очень медленно.
В то же время собственные знания модели нам не слишком важны: ее роль — понять запрос, суметь разбить его на подзадачи и суметь сделать внятную выжимку из найденных материалов (в разных проектах используются разные подходы, от очищенного текста веб‑страниц в формате JSON до векторного представления для RAG).
В теории с этим справится даже модель с 7–9B параметров, но лучше взять что‑то с 12–15B (для плотных моделей) или 30–35B (для MoE). Если же ты можешь себе позволить запустить с приемлемой скоростью плотную модель на 24–27B, то ты сможешь работать даже с русскоязычными исследованиями.
Я проверил следующие модели:
- Gemma 3 27B на моих запросах показала лучшие результаты. Если будешь качать эту модель (например, квант Q4_M), обрати внимание на организацию контекста: нужно обязательно активировать режим SWA (Sliding Window Attention) в настройках KoboldCpp. Для этого выбрать Context → Use SWA (Sliding Window Attention), размер контекста указать 32 768 (или столько, сколько поместится), а в Hardware → Batch Size укажи максимум, который позволяет видеопамять (я сделал 4096). Для моделей семейства Gemma 3 последний параметр влияет на эффективный размер окна.
- Qwen 3.5 27B (плотная) или 35B (MoE) — отличные модели, но архитектура Qwen 3.5 пока слишком новая: иногда модели могут надолго «задумываться»; несколько раз зацикливались. Вполне возможно, что на момент выхода этой статьи поддержку моделей семейства Qwen 3.5 допилят. Модели интересны своей гибридной архитектурой: кеш контекста занимает у них значительно меньше видеопамяти, чем у традиционных моделей; окно контекста можно значительно расширять без особых проблем.
- GLM 4.7 Flash — еще одна современная MoE-модель на 30B параметров. Очень и очень неплохо.
Для всех перечисленных моделей есть аблитерированные варианты. Для Gemma это gemma-3-27b-it-ultra-uncensored-heretic, для моделей семейства Qwen 3.5 предпочтительнее использовать версии Derestricted от ArliAi (в моих тестах они лучше работали с инструментами по сравнению с версиями heretic), для GLM 4.7 Flash — версию absolute herecy.
Кроме них, можно использовать и специализированные модели, заточенные под Deep Research, например модели семейства Nemotron или Alibaba-NLP/Tongyi-DeepResearch-30B-A3B. Разумеется, никто не мешает тебе запустить и чрезвычайно быстрый, работающий и на крышке от консервной банки GPT-OSS 20B (MoE с нативным квантом MXFP4), для которого тоже есть аблитерированная версия. Вариантов множество, пробуй!
Помимо контекста, стоит указать параметр Default Gen Amount — это максимальное число токенов, которое за один проход будет генерировать модель. С одной стороны, он влияет на объем финального отчета, но с другой — если что‑то пойдет не так (например, на одном из промежуточных этапов модель зациклится), тебе придется ждать окончания генерации всех этих токенов. Начни с 4096, потом можно будет поменять.
Подготовка: WSL 2 и Docker Desktop
Большинство проектов доступно в виде готовых контейнеров Docker. Если ты работаешь в Windows, нужно будет настроить среду WSL 2, установить в ней дистрибутив Linux, настроить виртуализацию, установить и настроить Docker Desktop. Если у тебя все это уже есть — переходи сразу к следующему разделу.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
