← Назад к портфолио

PROJECT 05

Telegram RAG-бот
с памятью

Полноценный Telegram-бот с RAG-архитектурой: отвечает на вопросы по базе знаний, управляет историей диалога и сессиями пользователей через 7 независимых модулей.

Python ChromaDB GigaChat OpenAI Embeddings RAG Telegram Bot Session Management Vector Search
// интерактивное демо
🧩 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 + вопрос