Гайд · grounder

Как дать LLM доступ к вебу: SearXNG, Tavily или grounder

Чтобы модель искала и читала веб, есть три частых пути. Разберём, чем они отличаются и что реально работает из России без VPN.

Сначала - что вообще значит «дать модели веб»

Языковая модель это файл весов. Она не открывает сайты и не делает сетевых запросов: всё, что она «знает», зафиксировано на дату обучения. «Доступ к вебу» это не свойство самой модели, а отдельный конвейер вокруг неё: поиск (превратить вопрос в запрос и получить ссылки), загрузка (скачать страницы), очистка (убрать навигацию и рекламу, оставить текст), ранжирование (оставить только релевантные фрагменты) и подстановка в промпт. Модель делает только последний шаг.

Инструменты, которые советуют для этой задачи, различаются тем, сколько шагов конвейера они берут на себя и откуда физически читают веб. Отсюда четыре разных семейства: локальный self-hosted поиск, поисковый API для агентов, скрапер для чтения страниц и сервис веб-граундинга, который отдаёт готовый пакет под контекст модели. Разберём каждое честно и сведём в таблицу.

Локальный поиск: SearXNG

SearXNG это бесплатный self-hosted метапоиск: вы поднимаете его у себя, он рассылает ваш запрос по многим поисковым движкам, агрегирует выдачу и отдаёт её без трекинга и без оплаты за вызовы. На нём же построены self-hosted сборки вроде Perplexica (в его README прямо сказано «Web search powered by SearxNG») - именно потому, что он бесплатный и открытый.

Важная оговорка: SearXNG отдаёт вам только первый шаг - ссылки и сниппеты. Загрузку страниц, очистку и ранжирование под окно контекста вы пишете сами:

# Шаг 1 и только он: спросить у SearXNG ссылки на выдачу
import requests

def searxng_search(query, instance="http://localhost:8080"):
    r = requests.get(f"{instance}/search",
                     params={"q": query, "format": "json"}, timeout=15)
    r.raise_for_status()
    return [hit["url"] for hit in r.json().get("results", [])[:5]]

# Дальше вы сами качаете каждую страницу, чистите вёрстку, ранжируете
# фрагменты и режете их под окно контекста - это уже не SearXNG.

Для читателя из России есть ещё два подводных камня. Первый: и поиск, и загрузка страниц идут из вашей сети, поэтому закрытые в РФ сайты так и не откроются - метапоиск не телепортирует ваш трафик за границу. Второй - эксплуатация: публичные инстансы ограничивают и блокируют автоматические запросы, а режим format=json на многих из них выключен, так что надёжности ради вы поднимаете свой инстанс и обслуживаете его. Почему серверная схема удобнее локальной, разбираем отдельно: веб-поиск для локальной LLM без VPN.

Поисковый API для агентов: Tavily и Exa

Tavily

Tavily это поисковый API, заточенный под LLM и агентов: возвращает результаты поиска плюс извлечённое содержимое страниц, есть официальный MCP-сервер и бесплатные кредиты на старте. Удобен, когда вы пишете агента и вам нужен готовый поиск, не поднимая ничего у себя. Минус для РФ: это зарубежный сервис с оплатой по вызовам, и к нему ещё надо дотянуться и как-то оплатить его из России. Выдача приходит в произвольном объёме, не обрезанная под окно вашей модели.

Exa

Exa это нейропоисковый (семантический) API с официальным MCP: он ищет по смыслу, а не по точному совпадению слов, и хорош там, где ответ на странице сформулирован иначе, чем ваш запрос. Тоже оплата по вызовам и тоже зарубежный биллинг. Если вам нужен именно смысловой поиск, Exa сделан ровно под это - честно говорим, что это его сильная сторона, а не наша.

Скрапер для чтения страниц: Firecrawl

Firecrawl решает другую половину задачи: он превращает страницу в чистый markdown, готовый для LLM, и умеет обходить верхние результаты выдачи. Это скорее «прочитать», чем «найти». Хорош, когда нужно собрать корпус для RAG или аккуратно вытащить содержимое известных страниц. Есть облачная (платная) версия и open-source редакция, которую можно поднять у себя. Учтите: он отдаёт целую страницу markdown, а не обрезанный под контекст пакет, так что шаг «уложить в окно модели» всё равно остаётся на вас.

Веб-граундинг под контекст модели: grounder

grounder переносит и поиск, и чтение страниц на свои серверы за пределами России, а модели возвращает не сырой HTML, а несколько релевантных фрагментов со ссылками на источники, обрезанных под ваше окно контекста параметром max_tokens. Для маленькой модели это ключевое: чистые фрагменты влезают в окно 8k, тогда как пара целых страниц его переполнит и модель вернёт ошибку или пустоту.

Подключается по MCP - одним блоком конфига, без локального браузера и скрапера. Тариф плоский помесячный, оплата в USDT или TON, что снимает проблему зарубежной карты. Тонкий клиент ставится через uvx и просто передаёт вызовы на серверы grounder:

// MCP-конфиг клиента: LM Studio, Claude Desktop, Cursor
{
  "mcpServers": {
    "grounder": {
      "command": "uvx",
      "args": ["grounder-mcp"],
      "env": { "GROUNDER_API_KEY": "gnd_live_ваш_ключ" }
    }
  }
}

Так как страницы открывают серверы снаружи РФ, закрытые у вас сайты читаются без VPN - вашей машине достаточно доступа к grounder.dev. Пошаговая настройка: как подключить нейросеть к интернету.

Сравнение

СпособЧто покрываетВлезает в маленькое окноЗакрытые в РФ сайтыОплатаНастройка и обслуживание
SearXNGпоиск (ссылки)собираете самине откроет, читает из вашей сетибесплатно, self-hostподнять и обслуживать
Tavilyпоиск + извлечениенет, выдача без обрезкичитает снаружи, но API зарубежныйпо вызовам, зарубежный биллингключ API
Exaнейропоиск по смыслунет, выдача без обрезкичитает снаружи, но API зарубежныйпо вызовам, зарубежный биллингключ API
Firecrawlчтение страниц в markdownнет, целая страницачитает снаружи, но API зарубежныйпо вызовам / self-hostключ API или self-host
grounderпоиск + чтение + очистка + ранжированиеда, max_tokensоткрывает, читает снаружи РФплоский тариф, USDT / TONодин блок MCP

Что выбрать

У каждого подхода своё место, и «лучшего вообще» тут нет - есть подходящий под вашу ситуацию:

Скажем прямо про предел grounder: это внешний сервис, а не self-host, поэтому «ничего не уходит с моей машины» - это не про него, тут честнее SearXNG. И он бессилен при полном отключении интернета, когда оператор оставляет только белый список российских доменов: наружу тогда не пробивается никто. grounder решает ежедневные блокировки, а не тотальный shutdown. Подробнее про эту связку: нейросети без VPN в России.

grounder это наш продукт, так что у нас есть коммерческий интерес. При этом сам конвейер (поиск, загрузка, очистка, ранжирование) и ограничения каждого инструмента верны независимо от того, что вы выберете: SearXNG, Tavily, Exa и Firecrawl - реальные и рабочие варианты, у каждого своя сильная сторона. Актуальные лимиты и цены зарубежных сервисов проверяйте на их официальных страницах.

Частые вопросы

Что лучше для локальной LLM: SearXNG, Tavily или grounder?

SearXNG хорош, если нет блокировок и нужен полный self-host. Tavily удобен как поисковый API для агентов. grounder ближе тем, кто в России хочет читать в том числе закрытые сайты без VPN и по плоскому тарифу.

Можно ли дать LLM доступ к вебу без VPN?

Да, если поиск и чтение выполняет сервис за пределами России. Тогда вашему компьютеру VPN не нужен.