presentation-search / docs /system_design_doc.md
Ilia Tambovtsev
doc: refining
0357647
# Presentation-RAG System Design
## Цели и предпосылки
### Зачем идем в разработку продукта?
**Цель проекта:** Разработать эффективный инструмент для автоматизированного поиска информации по базе из презентаций.
**Проблематика:**
- Большой объем бизнес-информации хранится в форме презентаций.
- Поиск по ним усложняется визуальным содержимым - графиками, диаграммами, картинками.
- Нет универсального подхода - решение задачи зависит от домена информации и визуального содержимого
- `Сложность навигации по докладам на многосекционных конференциях`
**Почему станет лучше от использования ML:**
1. LLM способны интерпретировать естественно-языковые запросы и связывать их с релевантным контентом.
2. Visual Transformers (ViT) эффективно анализируют содержимое изображений и распознают текст.
3. Интеграция ViT и LLM улучшает понимание контекста документов.
4. RAG позволяет эффективно работать с неструктурированными данными, такими как презентации.
### Ожидаемые результаты
#### Пользовательский опыт
- Пользователь вводит естественно-языковой запрос в поисковую строку.
- Ожидание в течение *адекватного* времени.
- Результат:
- Ранжированный список из релевантных презентаций/слайдов.
- Ссылки на оригиналы.
- Можно просматривать презентации.
- Если результат не устроил, можно задать переформулированный запрос в том же чате.
- История поиска сохраняется.
#### Сценарии использования
Основной сценарий использования:
- Помним отрывок информации или визуальное оформление из презентации.
- Формируем запрос. Описываем все, что помним, и просим найти такую презентацию.
- Система выдает презентации, наиболее подходящие под описание.
Сценарий бизнес:
1. Подготовка к встрече:
- Пользователь ищет "последние презентации о финансовых показателях компании"
- Система выдает релевантные слайды из различных презентаций
- Пользователь быстро составляет краткий отчет на основе найденной информации
2. Анализ конкурентов:
- Запрос: "Сравнение наших продуктов с конкурентами за последний квартал"
- Система находит слайды с таблицами сравнения и диаграммами
- Пользователь легко идентифицирует ключевые различия и преимущества
3. Подготовка презентации:
- Поиск "креативные слайды о запуске нового продукта"
- Система предлагает разнообразные визуальные решения из прошлых презентаций
- Пользователь быстро адаптирует найденные идеи для новой презентации
Сценарий исследователь:
1. Анализ трендов:
- Запрос: "Графики роста рынка AI за последние 5 лет"
- Система выдает релевантные графики из различных презентаций
- Исследователь анализирует тренды и формирует гипотезы
2. Поиск методологии:
- Пользователь ищет "методология оценки эффективности ML моделей"
- Система находит слайды с описанием методов и формулами
- Исследователь изучает различные подходы и выбирает наиболее подходящий
3. Сравнение результатов:
- Запрос: "Сравнительные таблицы производительности GPU и TPU"
- Система предоставляет релевантные таблицы и графики
- Исследователь сопоставляет данные для своего эксперимента
#### Функционал поиска
##### Обработка запросов
- Поддержка запросов на естественном языке, включающих текстовое и визуальное содержание.
- Интерпретация запроса и понимание намерения пользователя.
- Обработка запросов со сложной струтурой:
- Несколько условий
- ~~Произвольное форматирование: списки, **bold**, CAPS~~
- Произвольная формулировка:
- Вопросы, требования, их комбинации
- Термины?
- Поиск по визуальными элементами презентаций.
- Стиль (минималистичный, "много текста", ...)
- Диаграммы разных типов (круговые, столбчатые, графики)
- Табличные данные
- Метаданные (автор, дата, ...)
- Специфические визуальные элементы (воронки продаж, таймлайны, схемы, ...)
- Примеры поддерживаемых запросов:
- "Найди презентации в минималистичном стиле о стратегии компании"
- "Покажи слайды с воронкой продаж в презентациях о digital-маркетинге"
- "Выдай презентацию по data-аналитике, в которой были картинки с лягушками"
- "В каких презентациях были графики зависимости X от размера модели?"
##### Генерация ответов
- Запрос пользователя проходит предобработку для поиска. Формулируется запрос для RAG
- RAG выдает ссылки на релевантные результаты
- К результам генерируется пояснение в контексте запроса. Ответ на вопрос "Почему этот слайд попал в ответ?"
#### Веб интерфейс
- Чат-интерфейс
- Поле для поиска
- Панель с результатами. Можно экспортировать ссылки.
- Можно задавать сколько угодно вопросов. История сохраняется.
- Чат сохраняется
## Методология
### Постановка задачи
Разработка *ассистента* на основе LLM и RAG для автоматического поиска информации из *набора* презентаций.
- Данные - [Подробное описание](docs/workflow/data_description.md)
- Презентации про ML на русском языке (69)
- AIConf
- YappiDays
- Презентации на бизнес тематику (100): отчеты, обзоры, ...
- [tg: businessincognita](https://t.me/businessincognita)
- [tg: insider_infor](https://t.me/insider_infor)
### Этапы
#### Proof of Concept (PoC)
##### Данные
- 10 простых презентаций
- до 30 слайдов ?
- много текста
- простой дизайн: текст, картинки четко отделены от текста (границы у графиков, контраст с фоном)
##### Вопросы
| Доля | О чем? | Что в презентации? | Примеры |
| ---- | ------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| 60% | Строго по тексту (заголовки, контент) | Подробный текст про X | Найди презентацию на тему `Чтото с титульного слайда` <> В какой презентации рассказывали про `чтото из текста`? |
| 20% | По обобщенному содержимомоу | Подробный текст <> Перечисления | В какой презентации о маркетинге говорили о продажах? <> ... |
| 10% | Простые визуальные элементы | графики <> картинки (четко отделены от текста) | В какой презентации был график зависимости X от Y? <> В какой презентации были изображения машин? |
| 5% | Сложные визуальные элементы | Воронки продаж <> Флоу-чарты | Где показывали воронку продаж для X <> ... |
| 5% | Отсылки на визуальные элементы | Графики продаж <> Диаграмы | В какой презентации говорили о продажах за последние 5 лет? |
Общие моменты
- Вопросы понятные. Понятно намерение. Легко интерпретировать ответ.
- Ответ на вопрос **точно есть** в презентациях.
- Но можно добавить несколько out of domain
- Ручная проверка.
##### Оформление
Интерфейс - оформление в виде кода / ноутбука. Таблица с отчетом о результатах.
##### Результаты
Что мы узнаем?
- возможности модели
- темп разработки
Сценарий 1: все работает через 2 недели. Тогда идем в усложнение.
Сценарий 2: ничего не работает через месяц. Тогда паника.
По итогам этапа станет понятно, как скорректировать требования для MVP.
#### Minimal Viable Product (MVP)
- 100 презентаций на МЛ тематику. Сложность определим после POC
- Реализованы основные функции поиска
- Веб интерфейс
#### План работы
- Ресерч и тестирование существующих решений `1нед`
- Что уже есть?
- Как оценивать качество?
- Выбор моделей
- Как разрабатывать?
- Разработка POC
- Код `1w+`
- setup `1 день`
- Удобная архитектура проекта
- Зависимости: Библиотеки / Окружения / docker / ...
- Разработка `1нед`
- Предобработка презентаций
- Разработка промптов для LLM
- RAG
- узнать как пользоваться
- ...
- Подготовка небольшого датасета `2 дня`
- Выбор презентаций
- Просмотр
- Заметки по презентации. Научиться в них ориентироваться. Знать все про эти 10 презентаций
- Составление вопросов
- Ресерч как сейчас составляют вопросы `2ч`
- Составление по шаблону + свои `2ч`
- Интеграция с RAG - разметка, `1 день`
- Тестирование
- Выбор метрик - "как автоматически понимать что выдача ок?"
- Проведение тестов `1 день на тест`
- Обсуждения со взрослыми
- Корректировки, итерации
- Дальнейшее планирование
- что можно сделать? что нет?
- будет понятно, как масштабировать
- Разработка MVP
- Подготовка большого датасета
- Тестирование
- Оценка метрик
- Выводы
- Разработка веб-интерфейса
- Ресерч фреймворков `2д`
- Реализация `3д`
- Тестирование функционала `1д` -- будет +/- параллельно с другими задачами
- Фичи
- Форматы сохранение результатов
- Юзабилити
##### Времязатраты
**POC**
| Задача | Ожидаемое время | Затраченное время |
| ------------------------------------------ | --------------- | ----------------- |
| Ресерч и тестирование существующих решений | 1н+ | |
| Подготовка данных для POC | 2д | |
| Разработка POC | 1н+ | |
| Тестирование и итерации | 3д | |
**MVP**
| Задача | Ожидаемое время | Затраченное время | Комментарий |
| ------------------------------------------ | --------------- | ----------------- | ------------------------------------- |
| Осмысление результатов POC <> Планирование | 2д | | |
| Подготовка данных для MVP | 5д | | как составить много хороших вопросов? |
| Разработка MVP | ? | | База есть с POC, что дальше? |
| Тестирование и итерации | 3д | | |
| Веб-интерфейс и деплой | 5д | | |
## Студенческие моменты
- Цели
- Научиться адаптировать RAG для нестандартных задач
- Презентовать свои результаты перед публикой
- Закрыть курс проектной практики
- Ожидаемый результат
- *RAG для поиска по презентациям*
- Выступление на DataFest
- Закрытая сессия
## Вопросы
- На какую тему презентации? Какой домен? Важно ли это?
- Что делать с терминами? Если они нетипичные?
- Как загружаются презы? Это сервис с двумя типами акков: хост и юзер?
- Как измерять качество поиска?
- Как размечаем датасет?
- Объем?
- Позитивные/негативные примеры
- Что делаем с шумом? В презентации часто добавляют картинки для отвлечения внимания. Хотя они же могут и запомниться
- Мб обучать темам по одним данным а обучать поиску по другим?