
Шесть лет разработки Telegram‑бота: от токенайзера к LLM, RAG и векторным базам
Автор делится опытом создания Ио — LLM‑бота для Telegram, который отвечает на сообщения, распознаёт изображения и голос, учитывает контекст переписки и использует RAG с векторными базами.
В статье на Habr AI рассказывается о шестилетнем пути создания Ио — LLM‑бота для Telegram‑чатов. Первоначально проект представлял собой простой токенайзер, который разбивал входящие сообщения на токены и отправлял их в небольшую нейросеть. Через год автор заменил эту схему на полноценную LLM‑модель, подключив публичный API (OpenAI/Claude) и добавив поддержку генерации ответов в реальном времени.
Следующим шагом стало внедрение контекстного управления: бот начал хранить историю диалога, учитывать текущий тред и сохранять метаданные о пользователе (имя, роль, предпочтения). Для этого была построена небольшая SQLite‑таблица, а позже – более масштабируемый слой на PostgreSQL.
Ключевым прорывом стал RAG‑модуль (Retrieval‑Augmented Generation). Автор интегрировал векторную базу (Qdrant) и построил пайплайн: запрос → эмбеддинг (sentence‑transformers) → поиск похожих фрагментов в базе → добавление их к промпту LLM. Это позволило Ио отвечать на вопросы, требующие фактической информации, без «галлюцинаций».
Дополнительно бот получил возможности распознавания изображений (via CLIP) и голосовых сообщений (Whisper). Все сервисы объединены в Docker‑контейнеры и оркестрируются через Docker‑Compose, что упрощает деплой на VPS.
В статье перечислены практические трудности: лимиты API, задержки при поиске в векторных базах, необходимость балансировать объём контекста и стоимость запросов. Автор делится готовыми конфигурациями и открытым репозиторием, где можно изучить код и адаптировать под свои задачи.
Ссылка на оригинал: https://habr.com/ru/articles/1065060/
Для разработчиков LLM‑ботов эта история – ценное руководство: RAG и векторные базы становятся обязательными, если нужен достоверный контент. Важно заранее продумать хранение контекста и ограничения API, иначе проект быстро выйдет за бюджет. Пример Ио показывает, что даже небольшая команда может построить масштабируемую систему, используя открытые инструменты и контейнеризацию.


