RAG-чат-бот в дипломе: от прототипа до защищаемых метрик качества
24 марта 2026 года Mail выкатил в прод чат-бот службы поддержки на технологии RAG (Retrieval-Augmented Generation). Компания не просто подключила LLM к интерфейсу — она построила связку «поиск по базе знаний + генерация ответа», а это ровно тот архитектурный паттерн, который сегодня защищаемо звучит в ВКР по AI/ML и Data Engineering. Почему это важно для выпускника? Потому что комиссия всё чаще спрашивает не «какую модель взяли», а «как вы боролись с галлюцинациями и как измерили прирост качества». Кейс реального продукта даёт вам готовый каркас: от постановки метрик до схемы пайплайна. Ниже — как разложить это на главы, какие диаграммы нарисовать и что посчитать.
Частые вопросы студентов про RAG в ВКР
Нужно ли обучать свою LLM или можно взять готовую?
В 95% случаев обучение не требуется и даже вредит защите. RAG как раз и появился, чтобы не переобучать модель под новые знания. Вы берёте предобученную модель (локальную или через API), а под предметную область адаптируете только слой поиска и промпты. Это экономит ресурсы и упрощает главу 3 — вам не нужно объяснять, где взяли GPU-кластер.
Где брать корпус документов, если у меня нет доступа к внутренней базе знаний?
Открытые наборы: Stack Overflow dump, документация библиотек, SQuAD, MS MARCO, датасеты с Hugging Face. Для темы «чат-бот поддержки» отлично работает корпус технической документации по вашему же стеку — вы его легально собираете сами и описываете в приложении к ВКР.
Как считать качество RAG, если нет эталонных ответов?
Разделите оценку на два слоя. Слой извлечения: Recall@k, Precision@k, MRR — здесь эталоном служит ручная разметка «правильного» чанка. Слой генерации: Faithfulness, Answer Relevance, Context Precision — их считают LLM-as-a-judge или фреймворком RAGAS. Подробнее — в разделе про метрики ниже.
Как оформить архитектуру, чтобы нормоконтроль не завернул схемы?
ГОСТ 34 требует читаемости и единообразия условных обозначений. Для софтверной архитектуры спокойно используйте C4 (Context + Container) и UML-диаграммы деятельности — они принимаются как приложение к главе 2. Подпишите легенду, уберите «висячие» блоки без объяснения, сошлитесь на рисунок в тексте до его появления.
Темы ВКР на базе этого кейса
-
1. Разработка RAG-ассистента службы поддержки с оценкой качества ответов
Актуальность: прямой перенос решения Mail в учебную плоскость.
Цель: спроектировать и реализовать чат-бот с измеримым снижением галлюцинаций относительно «чистой» LLM.
Задачи: анализ подходов (fine-tuning vs RAG vs гибрид); построение пайплайна чанкинга и эмбеддингов; интеграция векторного хранилища; сравнительный замер метрик.
Структура: Гл.1 — теория RAG и обзор аналогов; Гл.2 — проектирование архитектуры, выбор стека; Гл.3 — эксперименты и метрики. -
2. Оптимизация стоимости и задержки RAG-пайплайна в облаке
Актуальность: продуктивность решается не только качеством, но и TCO — тема цепляет комиссию с экономическим уклоном.
Цель: снизить latency и стоимость инференса без потери качества.
Задачи: бенчмарк моделей, кэширование эмбеддингов, семантический кэш ответов, замер p95 latency.
Структура: Гл.1 — обзор LLMOps и метрик SRE; Гл.2 — реализация кэш-слоя; Гл.3 — сравнение с baseline. -
3. Защита RAG-бота от prompt-injection и утечки конфиденциальных данных
Актуальность: ИБ-контур вокруг LLM почти не покрыт в студенческих работах — выгодная ниша.
Цель: построить защитный слой поверх retrieval-пайплайна.
Задачи: классификация угроз по OWASP LLM Top 10; фильтрация контекста; canary-токены; стресс-тесты.
Структура: Гл.1 — модель угроз; Гл.2 — проектирование фильтров; Гл.3 — пентест и метрики устойчивости.
Как разложить кейс Mail по главам ВКР
Глава 1: анализ — где статья работает как источник
Не пересказывайте новость. Используйте её как точку отсчёта: покажите, что RAG перешёл из лабораторий в продуктовую эксплуатацию. Сравните архитектурные альтернативы — чистый fine-tuning, RAG, гибридные схемы с reranker — и сведите в таблицу с колонками «стоимость обновления знаний», «задержка», «риск галлюцинаций». Здесь же уместно ввести сущности ISO/IEC 25010 (функциональная полнота, надёжность, производительность) как рамку для последующих метрик.
Глава 2: проектирование — C4 и UML под вашу систему
Нарисуйте три уровня: Context (пользователь → бот → база знаний), Container (приложение, векторная БД, LLM-сервис, слой наблюдаемости) и Component (retriever, reranker, prompt-builder, guardrails). Ниже — минимальная схема пайплайна, которую можно перенести в draw.io и подписать по ГОСТ.
Пользователь → [API Gateway] → [Orchestrator]
├── Query Rewriter
├── Embedder (модель эмбеддингов)
├── Vector Store (pgvector / FAISS)
├── Reranker (cross-encoder, top-k → top-n)
├── Prompt Builder (+ system prompt, guardrails)
└── LLM → Ответ + ссылки на чанки
↓
[OpenTelemetry: трассировка и метрики]
Глава 3: реализация и эксперименты
Минимально жизнеспособный RAG собирается на Python за вечер. Ниже — каркас, который вы адаптируете под свой стек.
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
splitter = RecursiveCharacterTextSplitter(
chunk_size=512, chunk_overlap=64,
separators=["\n\n", "\n", ". ", " "]
)
chunks = splitter.split_documents(docs)
embedder = HuggingFaceEmbeddings(model_name="intfloat/multilingual-e5-base")
store = FAISS.from_documents(chunks, embedder)
def answer(query: str, k: int = 5):
hits = store.similarity_search(query, k=k)
context = "\n---\n".join(h.page_content for h in hits)
prompt = f"Ты техподдержка. Отвечай только по контексту.\nКонтекст:\n{context}\nВопрос: {query}"
return llm.invoke(prompt), hits
Обязательно заложите ablation-исследование: базовый RAG, RAG+reranker, RAG+query rewriting. Именно таблица «конфигурация → Recall@5 → Faithfulness → p95 latency» превращает курсовую в защищаемую ВКР.
Метрики, которые спасут вас на защите
| Слой | Метрика | Как измерять | Целевой ориентир |
|---|---|---|---|
| Retrieval | Recall@k | Ручная разметка «правильного» чанка | ≥ 0.85 при k=5 |
| Retrieval | MRR | Позиция первого релевантного чанка | ≥ 0.70 |
| Generation | Faithfulness | RAGAS / LLM-as-a-judge | ≥ 0.90 |
| Generation | Answer Relevance | Семантическое сходство с эталоном | ≥ 0.80 |
| Эксплуатация | p95 latency | OpenTelemetry-трейсы | ≤ 2.5 с |
| Стоимость | ₽ / 1000 запросов | Счётчики токенов + тариф | Снижение vs baseline |
Чему вы научитесь на этой теме
- Проектировать retrieval-пайплайны и обосновывать выбор векторного хранилища (pgvector, FAISS, Qdrant).
- Строить ablation-эксперименты и защищать прирост метрик цифрами, а не «стало лучше».
- Оборачивать LLM в guardrails и оценивать устойчивость по OWASP LLM Top 10.
- Снимать трассировку через OpenTelemetry и связывать технические метрики с бизнес-эффектом.
- Оформлять ТЗ, архитектурные схемы и приложения так, чтобы нормоконтроль прошёл с первого раза.
- Каждая задача из введения отражена в выводах по главам — обратный маппинг должен сходиться 1:1.
- Схемы пронумерованы, подписаны и упомянуты в тексте до своего появления.
- Метрики посчитаны на отложенной выборке, а не на обучающей; указан размер теста.
- Список литературы содержит ГОСТ 34.601, ISO/IEC 25010 и актуальные статьи за последние 2–3 года.
- Код в приложении совпадает с кодом в репозитории; версии библиотек зафиксированы.
- Проверка на уникальность выполнена по вузовской системе, а не по «бесплатной онлайн».
- Приложения включают датасет-описание и примеры диалогов — это часто спрашивают на защите.
1. Считать только точность ответа, минуя извлечение. Если retrieval тащит мусор, никакая LLM не спасёт. Mail в своём решении явно разделяет слои — сделайте так же и покажите метрики по отдельности.
2. Брать «модную» векторную БД без обоснования. Комиссия любит вопрос «почему не pgvector?». Ответ «так в туториале было» — верный способ получить замечание. Сравните минимум два варианта по latency, стоимости и сложности эксплуатации.
3. Оставить галлюцинации без числовой оценки. Опишите методику их детекции (citation check, LLM-as-a-judge) и приведите долю ответов без опоры на контекст до и после внедрения reranker.
Источник: Mail запустил ИИ чат-бот для пользователей (опубликовано 2026-03-24)