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. Подпишите легенду, уберите «висячие» блоки без объяснения, сошлитесь на рисунок в тексте до его появления.

Темы ВКР на базе этого кейса

Как разложить кейс 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» превращает курсовую в защищаемую ВКР.

Метрики, которые спасут вас на защите

СлойМетрикаКак измерятьЦелевой ориентир
RetrievalRecall@kРучная разметка «правильного» чанка≥ 0.85 при k=5
RetrievalMRRПозиция первого релевантного чанка≥ 0.70
GenerationFaithfulnessRAGAS / LLM-as-a-judge≥ 0.90
GenerationAnswer RelevanceСемантическое сходство с эталоном≥ 0.80
Эксплуатацияp95 latencyOpenTelemetry-трейсы≤ 2.5 с
Стоимость₽ / 1000 запросовСчётчики токенов + тарифСнижение vs baseline

Чему вы научитесь на этой теме

Что проверить перед сдачей
  1. Каждая задача из введения отражена в выводах по главам — обратный маппинг должен сходиться 1:1.
  2. Схемы пронумерованы, подписаны и упомянуты в тексте до своего появления.
  3. Метрики посчитаны на отложенной выборке, а не на обучающей; указан размер теста.
  4. Список литературы содержит ГОСТ 34.601, ISO/IEC 25010 и актуальные статьи за последние 2–3 года.
  5. Код в приложении совпадает с кодом в репозитории; версии библиотек зафиксированы.
  6. Проверка на уникальность выполнена по вузовской системе, а не по «бесплатной онлайн».
  7. Приложения включают датасет-описание и примеры диалогов — это часто спрашивают на защите.
Три ошибки, которые топят RAG-темы

1. Считать только точность ответа, минуя извлечение. Если retrieval тащит мусор, никакая LLM не спасёт. Mail в своём решении явно разделяет слои — сделайте так же и покажите метрики по отдельности.

2. Брать «модную» векторную БД без обоснования. Комиссия любит вопрос «почему не pgvector?». Ответ «так в туториале было» — верный способ получить замечание. Сравните минимум два варианта по latency, стоимости и сложности эксплуатации.

3. Оставить галлюцинации без числовой оценки. Опишите методику их детекции (citation check, LLM-as-a-judge) и приведите долю ответов без опоры на контекст до и после внедрения reranker.

Если тема уже выбрана, но непонятно, как упаковать её в три главы и защищаемые метрики, — начните с бесплатной консультации: разберём ваш черновик за 30–40 минут. Мы сопровождаем студентов до защиты и помогаем собрать работу под ключ, включая расчёты качества RAG, схемы по ГОСТ и подготовку к вопросам комиссии. Наши специалисты готовы подсказать по любой теме — от LLMOps до ИБ-контуров. Помощь с дипломом доступна как срочно, так и по этапам — 120 часов сопровождения обычно хватает, чтобы выйти на защиту с уверенным результатом.

Материал подготовлен экспертами компании Diplom-IT. Мы помогаем студентам с 2010 года: сопровождаем от выбора темы до финальной защиты, консультируем по архитектуре AI/ML-систем, оформлению по ГОСТ и подготовке речи. Если вам нужна помощь в разработке темы или оформлении работы, наши специалисты готовы подсказать и подстраховать на каждом этапе.

Последнее обновление: 2026-09-15

Источник: Mail запустил ИИ чат-бот для пользователей (опубликовано 2026-03-24)