# 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 - Закрытая сессия ## Вопросы - На какую тему презентации? Какой домен? Важно ли это? - Что делать с терминами? Если они нетипичные? - Как загружаются презы? Это сервис с двумя типами акков: хост и юзер? - Как измерять качество поиска? - Как размечаем датасет? - Объем? - Позитивные/негативные примеры - Что делаем с шумом? В презентации часто добавляют картинки для отвлечения внимания. Хотя они же могут и запомниться - Мб обучать темам по одним данным а обучать поиску по другим?