File size: 17,775 Bytes
8856d88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0357647
 
 
 
 
8856d88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1e974ab
 
8856d88
 
 
 
 
 
 
 
 
 
 
 
 
0357647
8856d88
 
 
 
 
 
 
 
 
 
 
 
 
0357647
 
8856d88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0357647
8856d88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0357647
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# 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
  - Закрытая сессия

## Вопросы

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