Интеллектуальный Telegram-бот с технологией RAG (Retrieval-Augmented Generation) для ответов на вопросы на основе базы знаний.
- Описание
- Возможности
- Технологии
- Установка
- Настройка
- Использование
- Структура проекта
- Команды бота
- Метрики оценки
- Скриншоты
- Разработка
- Лицензия
RAG Telegram Assistant — это интеллектуальный бот, который использует технологию RAG для ответов на вопросы пользователей на основе предоставленной базы знаний. Бот объединяет:
- Векторный поиск (FAISS) для быстрого нахождения релевантной информации
- LLM модель (Claude Sonnet 4.5) для генерации точных ответов
- Кеширование для оптимизации производительности
- Оценку качества через RAGAS метрики
- Пользователь задает вопрос в Telegram
- Система проверяет кеш на наличие готового ответа
- Если ответа нет, выполняется векторный поиск по базе знаний
- Найденный контекст передается в LLM для генерации ответа
- Ответ сохраняется в кеш и отправляется пользователю
- 💬 Интеллектуальные ответы на основе базы знаний
- 🔍 Векторный поиск с использованием FAISS
- 💾 Кеширование ответов для быстрого доступа
- 📊 Статистика системы в реальном времени
- 🎯 Оценка качества через RAGAS метрики
- 🚀 Telegram интерфейс для удобного взаимодействия
- 📚 Поддержка больших документов с умным chunking
- python-telegram-bot (21.0+) - Telegram Bot API
- anthropic (0.34.0+) - Claude API через ProxyAPI
- openai (1.3.0+) - OpenAI API для embeddings
- faiss-cpu (1.7.4+) - Векторный поиск
- ragas (0.2.0+) - Оценка качества RAG систем
- LLM: Claude Sonnet 4.5 (через ProxyAPI)
- Embeddings: text-embedding-3-small (OpenAI)
- Vector DB: FAISS (IndexFlatIP для cosine similarity)
- Python 3.11+
- pip
- Git
- Клонируйте репозиторий:
git clone https://github.com/yourusername/rag-telegram-assistant.git
cd rag-telegram-assistant- Создайте виртуальное окружение:
python -m venv venv-
Активируйте виртуальное окружение:
- Windows (PowerShell):
.\venv\Scripts\Activate.ps1
- Windows (CMD):
venv\Scripts\activate.bat
- Linux/Mac:
source venv/bin/activate
- Windows (PowerShell):
-
Установите зависимости:
pip install -r requirements.txt- Откройте @BotFather в Telegram
- Отправьте команду
/newbot - Следуйте инструкциям для создания бота
- Сохраните полученный токен
- Зарегистрируйтесь на ProxyAPI
- Получите API ключ для Anthropic
- Сохраните ключ
- Зарегистрируйтесь на OpenAI
- Создайте API ключ
- Сохраните ключ
Создайте файл .env в корне проекта со следующим содержимым:
# Telegram Bot
TELEGRAM_BOT_TOKEN=your-telegram-bot-token-here
# Anthropic API (ProxyAPI)
ANTHROPIC_API_KEY=your-anthropic-api-key-here
# OpenAI API (для embeddings)
OPENAI_API_KEY=your-openai-api-key-hereПоместите ваши документы в папку data/. Поддерживаются текстовые файлы (.txt).
Пример структуры:
data/
├── FAQ.txt # Часто задаваемые вопросы
├── Инструкции.txt # Инструкции
└── Описание услуг.txt # Описание услуг
Примечание: Вы можете объединить все документы в один файл
docs.txtили использовать несколько файлов. Система автоматически загрузит все документы при первом запуске.
- Убедитесь, что виртуальное окружение активировано
- Убедитесь, что файл
.envсоздан и заполнен - Запустите бота:
python app.pyВы должны увидеть:
✅ Бот запущен и готов к работе!
Нажмите Ctrl+C для остановки
- Найдите вашего бота в Telegram (по имени, которое вы указали при создании)
- Отправьте команду
/start - Начните задавать вопросы!
rag-telegram-assistant/
├── app.py # Telegram бот (главный файл)
├── rag_pipeline.py # RAG pipeline (основная логика)
├── vector_store.py # Векторное хранилище (FAISS)
├── cache.py # Кеширование ответов
├── evaluate_ragas.py # Оценка качества через RAGAS
├── requirements.txt # Зависимости проекта
├── .env # Переменные окружения (не в git)
├── README.md # Документация
│
├── data/ # База знаний
│ ├── FAQ.txt
│ ├── Инструкции.txt
│ └── Описание услуг.txt
│
├── faiss_db/ # Векторная база данных (FAISS)
│ ├── *.index
│ └── *.pkl
│
└── *.db # Базы данных кеша (SQLite)
Приветствие и информация о боте. Показывает список доступных команд.
Подробная справка по использованию бота и всех доступных команд.
Показывает статистику системы:
- Количество документов в векторном хранилище
- Размер и количество записей в кеше
- Информация о модели и режиме работы
Очищает кеш ответов. Полезно при обновлении базы знаний.
Запускает оценку качества RAG системы через RAGAS. Выполняет:
- Подготовку тестового датасета
- Оценку по метрикам RAGAS (Faithfulness, Context Precision)
- Вывод детальных результатов
Время выполнения: 1-2 минуты
Любой текст, отправленный боту (кроме команд), обрабатывается как вопрос. Бот найдет релевантную информацию и сгенерирует ответ.
Команда /evaluate использует следующие метрики RAGAS:
-
Faithfulness (Точность ответа)
- Оценивает соответствие ответа предоставленному контексту
- Диапазон: 0.0 - 1.0 (1.0 = полное соответствие контексту)
-
Context Precision (Точность контекста)
- Оценивает качество извлеченного контекста для ответа на вопрос
- Диапазон: 0.0 - 1.0 (1.0 = идеальный контекст)
- ≥ 0.7 - Отличное качество ✅
- 0.5 - 0.7 - Удовлетворительное качество
⚠️ - < 0.5 - Требует улучшения ❌
Команда /start показывает приветствие и список команд
Бот отвечает на вопросы на основе базы знаний
Команда /stats показывает детальную статистику
Команда /evaluate показывает результаты оценки по всем метрикам
Детальные результаты оценки по каждому вопросу
Проект состоит из следующих модулей:
Telegram бот с обработчиками команд и сообщений. Использует python-telegram-bot для взаимодействия с Telegram API.
Основной pipeline RAG системы:
- Проверка кеша
- Векторный поиск
- Формирование промпта
- Генерация ответа через LLM
- Сохранение в кеш
Векторное хранилище на основе FAISS:
- Загрузка и chunking документов
- Создание embeddings через OpenAI
- Поиск по векторам (cosine similarity)
- Сохранение индекса на диск
Кеширование ответов в SQLite:
- Хранение пар вопрос-ответ
- Быстрый поиск по хешу запроса
- Статистика использования
Оценка качества системы через RAGAS:
- Подготовка тестового датасета
- Запуск метрик оценки
- Вывод результатов
- Поместите текстовые файлы в папку
data/ - Удалите файлы индекса FAISS (если нужно переиндексировать):
rm -rf faiss_db/*.index faiss_db/*.pkl
- Перезапустите бота - документы загрузятся автоматически
Вы можете изменить параметры в app.py:
pipeline = RAGPipeline(
collection_name="api_rag_collection", # Имя коллекции
cache_db_path="api_rag_cache.db", # Путь к кешу
data_path="data", # Папка с .txt файлами (загружаются все .txt файлы)
model="claude-sonnet-4-5-20250929" # Модель LLM
)В файле rag_pipeline.py измените параметр model:
model: str = "claude-sonnet-4-5-20250929" # Текущая модель
# Или используйте другую модель ClaudeВ файле vector_store.py измените модель:
model="text-embedding-3-small" # Текущая модель
# Или используйте text-embedding-3-large для большей точностиПроблема: TELEGRAM_BOT_TOKEN не установлен
- Решение: Проверьте наличие файла
.envи правильность токена
Проблема: ANTHROPIC_API_KEY не установлен
- Решение: Добавьте ключ ProxyAPI в
.env
Проблема: ModuleNotFoundError: No module named 'faiss'
- Решение: Установите зависимости:
pip install -r requirements.txt
Проблема: Метрики не вычисляются (NaN)
- Решение: Проверьте наличие OpenAI API ключа для embeddings
Проблема: Оценка занимает слишком много времени
- Решение: Это нормально, оценка может занять 1-2 минуты
Если видите ошибки с кодировкой, убедитесь, что используете UTF-8:
$env:PYTHONIOENCODING='utf-8'
python app.pyЭтот проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.
- PSLSP - @pslsp
- Zerocoder - Университет Zerocoder
- RAGAS - за отличную библиотеку оценки RAG систем
- python-telegram-bot - за удобный API для Telegram ботов
- FAISS - за быстрый векторный поиск
- Anthropic - за Claude модели
- OpenAI - за embeddings модели
- Daniil Sobolev - за концепцию и базовую структуру проекта
Если у вас есть вопросы или предложения:
- Создайте Issue
- Напишите Pull Request
Пользователь: Можно ли у вас разместить решения 1С?
Бот: Да, можно разместить решения 1С. Согласно предоставленной информации, доступны следующие варианты:
- Облако 1С — можно разворачивать сервисы 1С в облаке для повышения доступности и производительности проектов.
- Выделенные серверы 1С — адаптированы специально для работы в 1С и прошли тест Гилева с высоким результатом.
Пользователь: Какие услуги вы предоставляете?
Бот: У компании есть следующие услуги:
Облачные решения:
- Облачные базы данных (DBaaS)
- Серверы 152-ФЗ (защищенная облачная инфраструктура на территории РФ)
- Выделенные серверы 1С
Сервисы и администрирование:
- DevOps as a Service (делегирование DevOps-процессов)
- DevSecOps as a Service (делегирование DevSecOps-процессов)
- Проектирование IT-инфраструктуры
- Базовые задачи администрирования
Бизнес-решения:
- Корпоративная почта на вашем домене
Отраслевые решения:
- E-Commerce (для маркетплейсов и онлайн-магазинов)
- Медицина (инфраструктура с защитой персональных данных)
- IT (для запуска и тестирования цифровых продуктов)
- Решения для интеграторов
- Телеком (для операторов связи)
- Никогда не коммитьте файл
.envв репозиторий - Храните API ключи в безопасности
- Используйте переменные окружения для продакшена
- Регулярно обновляйте зависимости
- Поддержка мультимодальных документов (изображения, PDF)
- Веб-интерфейс для управления базой знаний
- Интеграция с другими мессенджерами
- Экспорт истории диалогов
- Аналитика использования бота
Мы приветствуем вклад в проект! Пожалуйста:
- Fork проекта
- Создайте ветку для новой функции (
git checkout -b feature/AmazingFeature) - Commit изменения (
git commit -m 'Add some AmazingFeature') - Push в ветку (
git push origin feature/AmazingFeature) - Откройте Pull Request
- ✨ Первый релиз
- 🤖 Telegram бот интерфейс
- 🔍 Векторный поиск через FAISS
- 📊 Оценка качества через RAGAS
- 💾 Кеширование ответов
- Документация RAGAS
- Документация python-telegram-bot
- Документация FAISS
- ProxyAPI Документация
- Anthropic Claude API
Если проект был полезен, поставьте звезду на GitHub! Это мотивирует продолжать разработку.
Сделано с ❤️ используя RAG технологию




