Для Telegram-бота @ponaehaliam_bot по вопросам переезда в Армению нужен был поиск по базе знаний с точными ответами и ссылками на источники. Вместо векторной базы и эмбеддингов мы взяли GrepRAG — текстовый поиск через ugrep с передачей найденных фрагментов в LLM. Бот работает в продакшене с ~5000 пользователями, 500+ запросов за два месяца, а стоимость инфраструктуры минимальна.
Почему текстовый поиск, а не эмбеддинги
У бота 500+ запросов за февраль и март. Больше всего про ИП и налоги, ВНЖ, банки и переводы. Это не тот сценарий, где нужно красиво рассуждать на широкую тему. Здесь человеку нужен ответ с опорой на документ: что делать после приезда, как открыть ИП, нужен ли SSN, какие бумаги готовить для банка.
GrepRAG vs векторный RAG
| Критерий | GrepRAG (текстовый поиск) | Векторный RAG (эмбеддинги) |
|---|---|---|
| Точность на специфичных терминах | Высокая — ищет точные формулировки | Зависит от качества эмбеддинг-модели |
| Прозрачность результатов | Видно, откуда взят фрагмент | Черный ящик similarity search |
| Инфраструктура | Файлы в директории + ugrep | Векторная БД (Pinecone, Qdrant, pgvector) |
| Отладка | grep-запрос можно повторить руками | Нужен анализ эмбеддингов и расстояний |
| Масштаб базы | Малый и средний (до тысяч документов) | Любой, включая миллионы |
| Семантический поиск | Нет — только текстовое совпадение | Да — находит по смыслу |
Поэтому мы пошли не от модного стека, а от формы задачи.
Как работает бот
GrepRAG работает просто: вы складываете нужные PDF и текстовые файлы в одну директорию, система ищет по ним через ugrep, а уже потом дает модели только релевантные фрагменты для сборки ответа. На выходе бот @ponaehaliam_bot возвращает не только формулировку, но и цитаты из файлов. Для миграционной и налоговой базы это важнее, чем «умный» общий ответ без опоры.
Формат ответа
Формат ответа тоже подчинен этой логике. Бот не пытается написать трактат. Он дает короткий ответ по сути вопроса, а ниже прикладывает 5 самых релевантных ссылок, где можно дочитать детали. Например, по запросу про taxservice.am он сначала объясняет, что это домен налоговой службы Армении и где он используется, а потом отдает ссылки на статьи про декларации, коды налоговых органов и подачу отчетности.
Почему простота — не компромисс
И да, слово grep звучит как привет из 2009. Но в этом и смысл. Когда база знаний маленькая или средняя, а документы нужно находить по формулировкам близко к оригиналу, простой текстовый поиск часто полезнее слоя с эмбеддингами, который сложнее отлаживать и легче переоценить.
Anthropic в Building effective agents формулируют похожий принцип: для многих задач хватает retrieval и хорошего контекста, а усложнять систему стоит только там, где простая схема уже не держит качество. У нас был именно такой случай. Сначала нужно надежно найти нужный кусок в документе. И только потом просить модель собрать ответ.
Продакшен-связка
Михаил, автор базы знаний по релокации в Армению, поддерживает ее из Канады и обновляет статьи. Сам бот встроен в чат-группу: если вопрос уходит в оффтопик, пользователя банят и перенаправляют в бота. Тут уже есть не только поиск по документам, но и рабочая связка «контент, бот, модерация, продакшен».
Частые вопросы
Когда GrepRAG лучше векторного RAG?
Когда база знаний до нескольких тысяч документов, а запросы содержат конкретные термины — названия форм, законов, сервисов. Текстовый поиск находит точное совпадение надежнее, чем similarity search по эмбеддингам. Если запросы размытые и нужен семантический поиск — эмбеддинги выиграют.
Сколько стоит GrepRAG в продакшене?
Инфраструктура почти бесплатна: файлы в директории, ugrep, без векторной БД. Основная статья расходов — вызовы LLM для генерации ответа. При 500 запросах в месяц и средней длине контекста это единицы долларов.
Какой объем базы знаний держит текстовый поиск?
Сотни и тысячи документов — без проблем. На десятках тысяч ugrep все еще быстр, но релевантность начинает падать: слишком много совпадений, модели сложнее выбрать нужный фрагмент. На этом масштабе стоит добавить гибридный поиск или перейти на эмбеддинги.
GrepRAG здесь полезен не потому, что он «проще». А потому, что он ближе к правде задачи. Когда знания живут в PDF, справках и заметках, хороший бот начинается не с самой сложной архитектуры, а с нормального поиска по тексту.
