Как стать автором
Поиск
Написать публикацию
Обновить

Создание Telegram-бота на основе RAG: идеи и принципы работы

Зачем RAG-бот в Telegram — кейс из жизни

Привет, Хабр!

Это моя первая статья здесь, и я решил посвятить её проекту, который недавно завершил — Telegram-бот на основе архитектуры Retrieval-Augmented Generation (RAG). Этот бот позволяет отвечать на вопросы пользователя, используя внешние источники данных и возможности современных языковых моделей.

Сама идея пришла из личной потребности: мне нужен был простой, но умный ассистент, который мог бы справляться с задачами в стиле "поиск + генерация ответа". Погружаясь в RAG, я понял, насколько мощным может быть такой подход, даже при использовании относительно простых технологий.

Для того чтобы можно было испытать данного бота, перейдя по ссылке ниже, вы можете бесплатно задать 3 вопроса и оценить релевантность ответов.

Проект всё ещё развивается, и вы можете поучаствовать в его продвижении!

Протестировать бота

Репозиторий на Github

Связь с разработчиком

Чем этот бот может быть полезен?

В современном информационном шуме, когда даже краткий поиск требует времени и усилий, важно иметь инструмент, который мгновенно комбинирует «что» и «почему» — извлекает факты и формулирует понятные объяснения.

Вот несколько сценариев, где Telegram-бот на базе RAG показывает свою ценность:

Для работы:

  • Исследование документации: скидываешь ссылку статью — и получаешь краткий ответ на конкретный вопрос.

  • Внутренние базы знаний: можно использовать внутри компании для быстрой ориентации в внутренних документах.

  • Автоматизация поддержки: подключив базу FAQ, бот сможет отвечать на вопросы пользователей и сотрудников.

Для обучения:

  • Подготовка к экзаменам: загрузи учебный материал и спрашивай любые уточнения — бот выдаст ответ по контексту.

  • Изучение сложных тем: бот умеет объяснять, приводить определения, формулы, код — всё по делу и без выдумок.

Для повседневного использования:

  • Уточнение новостей: отправляешь статью с новостного сайта — бот извлекает суть, объясняет термины и предлагает выводы.

  • Сбор инсайтов из длинных текстов: лонгриды, блоги, обзоры — всё можно превратить в сжатую, релевантную информацию.

Главное — не нужно читать всё целиком. Просто спроси бота.

Как работает бот: от URL до осмысленного ответа

Основные функции:

  • Интеллектуальное индексирование — обрабатывает статьи с любого URL

  • Многоязычность — поддерживает вопросы и ответы на английском и русском языках

  • Настраиваемые запросы — управление стилем и форматом ответов

  • Поддержка прокси-серверов — работает с API OpenAI в регионах с ограниченным

    доступом

  • Ссылка на источник — всегда показывает подтверждение ответа

  • Постоянное хранилище — сохраняет проиндексированные статьи между сеансами

С полным списком команд вы можете ознакомиться здесь

Работа бота:

Приведу пример работы бота:

Пользователь отправляет свою статью

- User: https://example.com/

Бот корректно ее обрабатывает и разбивает на какое-то количество чанков

- Bot: "✅ Article indexed! Processed 15 chunks"

Далее пользователь задает свой вопрос

- User: "What is chain-of-thought prompting?"

И бот выдает релевантный ответ

- Bot: "Answer: A technique that breaks down problems into intermediate reasoning steps..."

Скриншоты:

Приветственное сообщение
Приветственное сообщение
Ответ на вопрос
Ответ на вопрос

Новый промпт:

Также вы можете изменить текущий промпт, нажав prompts settings -> write new prompt.

Пример текущего промпта:

urrent prompt: Expert Research Assistant Guidelines:

  1. Source Accuracy:

    • Strictly use ONLY the provided context

    • For missing info: "The article doesn't specify"

    • Never hallucinate facts

  2. Response Structure:

    • Core Answer (1 bolded sentence)

    • Key Evidence (3-5 bullet points max)

    • Practical Implications (when relevant)

    • Limitations (if data is incomplete)

  3. Technical Content:

    • Code: ```python ...

   - Formulas: $E=mc^2$ format
   - Terms: "API (Application Programming Interface)"

4. Language Rules:
   - Match question's language
   - Auto-correct grammar subtly
   - Use ISO standards for dates/units

Context:
{context}

Question: {question}

Вы же можете изменить его на более вам подходящий.

Установка

Подробную инструкцию по установке можно найти здесь.

git clone https://github.com/Konstantin-vanov-hub/RAG_bot.git

cd RAG_bot python -m venv venv

source venv/bin/activate # Linux/Mac

venv\Scripts\activate # Windows

pip install python-dotenv==1.1.1

pip install -r requirements.txt

Configuration

Create .env file:

Также вам нужно будет создать свой Telegram token и OpenAI API ключ. Добавьте их в файл .env, пример, как должен выглядеть этот файл можно посмотреть в .env.example

Со списком всех необходимых файлов для начала работы можно ознакомиться в requirements.txt

Что такое RAG и как он реализован в боте

Архитектура:

RAG архитектура
RAG архитектура

Что такое RAG?

RAG (Retrieval-Augmented Generation) — это архитектура, совмещающая в себе два ключевых этапа:

  1. Retrieval (Извлечение): сначала из внешнего хранилища знаний (например, векторной базы или базы документов) извлекаются релевантные фрагменты, которые связаны с запросом пользователя.

  2. Generation (Генерация): затем эти фрагменты подаются на вход языковой модели (например, GPT), которая генерирует финальный ответ, используя как сам запрос, так и найденную информацию.

Таким образом, модель не полагается только на "память", встроенную в параметры нейросети, а обогащает свой ответ за счёт актуальных данных.

Как это применяется в Telegram-боте?

Мой бот реализует классическую цепочку RAG следующим образом:

  1. Пользовательский ввод

  2. Преобразование текста в эмбеддинг (через Sentence Transformers / Hugging Face модель) →

  3. Поиск ближайших фрагментов из базы данных (использую FAISS для векторного поиска) →

  4. Формирование запроса к языковой модели (например, OpenAI API) с учётом найденных документов →

  5. Генерация и отправка ответа пользователю в Telegram.

Какие данные можно использовать?

Вы можете подгружать любую информацию: документацию, статьи, внутренние базы знаний компании, заметки и даже логи. Главное — правильно их предварительно обработать (чанкать, эмбеддить и сохранять).

Такой подход позволяет использовать LLM максимально эффективно: она не "выдумывает", а опирается на факты, которые вы ей дали.

Заключение

Как я уже говорил проект еще не закончен и может быть доработан. В любом случае я буду рад если вы зайдете на мой проект  и оставите feedback – вдруг именно ваш кейс станет следующей фичей проекта!

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.