PROJECT 05
Telegram RAG-бот
с памятью
Полноценный Telegram-бот с RAG-архитектурой: отвечает на вопросы по базе знаний, управляет историей диалога и сессиями пользователей через 7 независимых модулей.
// интерактивное демо
🧩 RAG Bot — семантический поиск по базе знаний
Привет! Я RAG-бот. Задай любой вопрос — найду ответ в базе знаний и отвечу с указанием источника.
📚 база знаний загружена · сессия активна
// 7 модулей архитектуры
🗄️
VectorDatabase
ChromaDB + embeddings
👥
UserDatabase
user_data.json
🤖
GigaChatClient
LLM generaion
✍️
PromptBuilder
system prompt + context
🔍
ContextRetriever
top-k vector search
🔁
SessionManager
timeout + history
💬
TelegramBot
interface layer
// ключевой код
main.py — инициализация компонентов
# 1. Vector store — хранение и поиск по смыслу vector_db = VectorDatabase( persist_directory=settings.chroma_persist_dir, openai_api_key=settings.openai_api_key ) # 2. Память диалога через PromptBuilder prompt_builder = PromptBuilder( system_prompt=response_generator.system_prompt ) context_retriever = ContextRetriever( vector_db=vector_db, n_results=settings.rag_n_results # top-k чанков ) # 3. Управление сессиями session_manager = SessionManager( session_timeout=settings.session_timeout ) # 4. Всё соединяется в TelegramBot bot = TelegramBot( token=settings.telegram_token, session_manager=session_manager, context_retriever=context_retriever, response_generator=response_generator, user_db=user_db, vector_db=vector_db )
// задача и решение
ЗАДАЧА
Создать чат-бота, который отвечает только по конкретной базе знаний, помнит контекст разговора и не "галлюцинирует" за пределами загруженных документов.
РЕШЕНИЕ
- ChromaDB как векторное хранилище с OpenAI Embeddings
- ContextRetriever находит top-k релевантных чанков на каждый вопрос
- SessionManager хранит историю диалога с таймаутом
- PromptBuilder собирает промпт: system + context + history + вопрос