03-20-2026 · dev/slides-in-fifteen-minutes.md

Слайды за пятнадцать минут

Кажется, никто не любит собирать слайды. Я точно не люблю. Это всегда выглядит примерно одинаково: содержание готово, выводы есть, данные собраны — и тут нужно всё это перенести в PowerPoint, выровнять, подобрать шрифт, сдвинуть таблицу на три пикселя влево. Час уходит не на мысли, а на вёрстку.

Какое-то время я пытался обойти это через vibe-coding — накидывал презентацию на vanilla HTML, CSS, немного JS для переходов. Работало, выглядело неплохо. Но каждый раз это был новый файл с нуля, стили ехали, таблицы верстались руками, и к третьей презентации стало понятно, что это тупик.

Я хотел другого: один исходный документ — и на выходе готовая презентация. Без вёрстки, без позиционирования, без того чтобы думать о шрифтах. Просто содержание — и результат.

Так я нашёл Marp.

Marp собирает PDF прямо из markdown-файла. И здесь есть кое-что важное: сегодня почти у всех базы знаний уже в Markdown — документация, внутренние вики, отчёты. Языковые модели тоже отдают результат в нём по умолчанию. А ещё они знают синтаксис Marp — можно попросить модель собрать структуру презентации и сразу получить готовый файл, который компилируется без правок. Это меняет процесс: ты работаешь с содержанием, а не с формой.

Момент, когда я это оценил по-настоящему, был такой. Мы заканчивали пилотный проект с клиентом — RAG-ассистент, январь 2026, результаты собраны, выводы есть. Всё уже было в markdown. Отчёт, таблицы, куски конфигов. Переносить это в PowerPoint руками — потерять час на форматирование того, что уже написано.

Вместо этого я собрал вот такой файл:

---
marp: true
theme: default
paginate: true
footer: 'RAG Pilot · Январь 2026'
---

# RAG-ассистент: результаты пилотного проекта

Команда · Январь 2026

---

## Что тестировали

- Корпус: 12 000 внутренних документов
- Период: 3 недели, 500 реальных запросов от сотрудников
- Модель: Qwen3 A3B 30B + векторный поиск по chunks размером 512 токенов
- Оценка: ручная разметка 500 ответов по трём критериям

---

## Метрики качества

| Метрика                  | Результат |
|--------------------------|-----------|
| Точность ответов         | 71%       |
| Полнота (recall)         | 68%       |
| TTFT (медиана)           | 4.8с      |
| Покрытие базы знаний     | 83%       |
| Доля отказов («не знаю») | 14%       |

---

## Где теряем точность

- Редкие доменные термины — модель не знает внутреннего сленга
- Документы старше 2022 года — устаревшие данные в корпусе
- Составные вопросы с несколькими условиями — retrieval вытаскивает не тот chunk

---

## Рекомендации

- Расширить корпус в двух категориях: HR-политики и технические регламенты
- Добавить re-ranking на топ-5 чанков перед генерацией
- Запустить A/B на размере chunk: 512 vs 256 токенов

---

## Вывод

Ассистент работает на реальных запросах, но требует доработки корпуса.
Основные потери — решаемы итерацией retrieval-пайплайна.
Рекомендуем продолжать.

Клиент получил PDF через полчаса после того, как я мог бы открыть PowerPoint.

Собрать PDF — одна команда:

npx @marp-team/marp-cli presentation.md -o presentation.pdf --no-stdin

Node.js нужен, Marp глобально ставить не надо — npx подтянет сам. Поставить Node.js просто:

macOS:

brew install node

Windows:

winget install OpenJS.NodeJS

Debian/Ubuntu:

sudo apt install nodejs npm

Если у вас более экзотический Linux-билд — вы и сами знаете, что делать.

Под капотом используется Chrome для рендеринга, поэтому при первом запуске чуть подождёт. Если на слайдах есть картинки с диска — добавь --allow-local-files, иначе не подхватит.

Презентация живёт в гите как обычный файл. В PR виден дифф, можно ревьюить как код. Никаких бинарников, никакого «пришли последнюю версию».

Есть расширение для VS Code и Cursor — Marp for VS Code. Ставишь — рядом с редактором появляется превью в реальном времени. Удобно, если хочешь видеть результат без сборки.

Для сложных корпоративных презентаций с брендингом и анимациями — не сюда. Но если нужно быстро и по делу — Marp закрывает задачу раньше, чем PowerPoint успевает загрузиться.