В этом видео я показываю, как автоматически преобразовать любые таблицы в корректный Markdown-формат, разбивая их на читаемые фрагменты и делая данные понятными для нейросетей и RAG-систем.
*Прямая ссылка на видео https://www.youtube.com/watch?v=U0Mtwgk1uu8
Таймкоды
00:00:05 Введение
- Обсуждение популярности видео о работе с данными в искусственном интеллекте.
- Упоминание о форматах данных: MarkDown, таблицы, загрузка в RDF.
00:01:16 Проблемы работы с данными
- Необходимость обучения ИИ на больших объёмах данных.
- Использование контекстного окна и векторных баз данных.
00:02:21 Инструмент Deviar
- Описание инструмента для преобразования данных в MarkDown.
- Преимущества MarkDown: понимание структуры и разбивок.
00:03:19 Работа с изображениями
- Вставка изображений в промты для улучшения ответов ИИ.
- Автоматическая загрузка изображений на сервер.
- Рекомендации по правильному формату изображений.
00:05:08 Проблемы с таблицами
- Сложности работы с таблицами в MarkDown.
- Проблемы с объединением ячеек и строк в таблицах.
- Некорректная обработка таблиц онлайн-редакторами.
00:07:17 Решение проблемы с таблицами
- Адаптация решения для сложных таблиц.
- Эмуляция пустых ячеек для сохранения структуры.
- Рекомендация бесплатного и открытого решения.
00:08:56 Векторные базы данных
- Проблема нарезки больших таблиц на чанки.
- Потеря заголовков таблиц при нарезке.
- Решение: создание мелких таблиц с заголовками.
00:12:43 Заключение
- Подведение итогов и анонс будущего проекта.
- Планы по созданию универсального комбайна для работы с данными.
- Призыв к обратной связи и комментариям.
00:13:57 Завершение видео
- Автор обещает решать проблемы зрителей по мере своих сил и возможностей.
- Желает всем всего хорошего и прощается.
**Ссылка на таймкоды в нейросети https://300.ya.ru/v_Y8O8Ewlo
Расшифровка видео
0:05
Всем привет. Снова Миша, естественный
0:08
интеллект, проект DVR. Сегодня поговорим
0:12
про данные.
0:14
Я сейчас покажу. На текущем канале в
0:17
Ютбе я заметил, что одни из самых
0:20
популярных видео
0:22
моих связаны именно с данными. Это RAC
0:25
система Retrieval Augmented Generation,
0:27
когда мы загружаем большие данные. и
0:29
заставляем искусственный интеллект
0:31
работать с этими данными. Это форматы, в
0:34
которых нужно загружать информацию для
0:37
того, чтобы и работал с ней более
0:39
качественно, хорошо, не сбивался, не
0:41
путался. Мы говорили про маркдаун,
0:44
говорили про таблицу, про загрузку в
0:46
рак, рисовали э схемы, механизмы, как
0:50
это всё должно работать.
0:53
И сейчас вот последнее моё видео здесь
0:56
было предпоследнее про то, как работать
0:59
с изображениями. Сейчас я кратко всё
1:01
покажу, расскажу. Э сегодня мы
1:05
поработаем с таблицами. Я покажу, какие
1:07
есть проблемы, как их нужно
1:10
решать. Э начну с простых вещей, с
1:13
базовых.
1:16
Почему
1:17
видео по добавлению данных в
1:20
искусственный интеллект, больших данных
1:22
сейчас у меня самые просматриваемое? Я
1:25
понимаю, что эта проблема есть у
1:28
большого количества людей, потому что
1:31
все уже набаловались с и сейчас уже для
1:34
практического применения нам нужно не
1:37
просто болтать с ними, а нам нужно их
1:39
обучать на каких-то достаточно больших
1:42
объёмах знаний. объёмах данных. Лучше
1:45
всего для этого, если мы работаем, если
1:48
у нас задача не слишком крупная, мы
1:51
используем контекстное окно и умещаем
1:53
все данные в ширину контекстного окна. А
1:55
это в разных моделях, от разных
1:57
поставщиков разные размеры. У Гугла там
2:00
2 млн, э, у Клода каких-нибудь 200.000
2:04
токенов в ширине контекста, ну и так
2:07
далее.
2:09
Второй
2:10
вариант, вставить всю информацию в
2:13
вектор, векторные базы данных. Вот это
2:16
технология рак.
2:18
Сейчас я покажу, что у нас есть. Итак, в
2:23
рамках системы DVR я сделал инструмент,
2:26
задачей которого является приведение
2:29
информации в нужную форму. То есть
2:32
фактически у нас есть редактор
2:34
текстовый, мы с ним работаем, с этим
2:36
редактором.
2:38
А в на выходе получаем markкdown — это
2:41
формат разметочный, который позволяет
2:43
нам загружать его
2:46
в E и и будет с этим работать достаточно
2:51
хорошо, потому что он, в отличие от
2:53
стандартного текста, он видит структуру
2:56
и может расставлять акценты, понимать
2:58
разбивки. Э всё это я сделал и
3:02
рассказывал об этом в предыдущем, э в
3:05
предыдущих своих видео. Сейчас мы
3:07
коснёмся таблиц. Единственное, что я ещё
3:09
упомяну, э, необходимость и возможность
3:12
вставки изображений. В видео, в котором
3:14
я об этом рассказывал, не все люди
3:17
поняли, о чём идёт речь. Э, идея в том,
3:20
что все мы привыкли, что и отвечает нам
3:22
текстом. Вот. Ну, на то это и языковая
3:25
большая модель. Изначально это генерация
3:28
токенов, получение текста в ответ. Но на
3:30
самом деле гораздо интереснее, когда мы
3:32
обучаем и
3:34
ну условно обучаем, да, добавляем в него
3:36
информацию, которую он использует в
3:39
ответах на наши запросы. Если мы в него
3:42
добавляем изображение,
3:44
ответ выглядит гораздо интереснее и
3:46
красивше. Сейчас покажу. Вот я,
3:48
например, просто делаю изображение
3:50
какой-нибудь кусочек printскрин или
3:53
копирую изображение ещё откуда-нибудь.
3:55
Вставляю его, смотрите, и он уже
3:57
вставлен. А здесь он уже автоматически
3:59
загружен на сервер DVR, получено
4:02
автоматически его имя, он хранится на
4:05
сервере. И таким образом мы изображение
4:07
можем вставлять в промт. Это очень
4:09
удобно. Э, есть ещё вариант
4:13
альтернативный для того, чтобы
4:14
выставлять изображение в виде Base 64 в
4:17
специальном таком формате битовом, но он
4:19
сжирает токены, и вариант плохой,
4:22
нехороший. Поэтому, э, мои рекомендации,
4:25
если вы используете изображение и хотите
4:27
получать качественные ответы от
4:29
и-ассистентов, от и помощников с
4:31
изображениями, эти изображения должны
4:33
быть вставлены правильным образом. В
4:35
девиаре я сделал, э, вставку,
4:38
автоматическую загрузку на сервер. Также
4:40
мы добавляем альтернативное описание,
4:42
чтобы и понимал, что на этом
4:43
изображении. Там
4:45
чат чат для
4:48
тестирования, допустим, да?
4:51
И здесь вот смотрим, всё в правильном
4:53
формате, в Markдаун. И вот вот этот вот
4:57
формат будет очень удобен, а с этим
4:59
можно работать. Ну, у нас ещё есть очень
5:02
серьёзная проблема. Много кто об этом
5:04
мне писал. Это работа с
5:07
таблицами. В чём преимущество таблиц? В
5:11
том, что
5:12
в них зачастую содержатся сложные
5:14
структурированные данные. Так вот, в чём
5:18
проблема, с которой сталкиваются все.
5:21
Все. Можно добавлять таблицу в виде
5:24
HTML. Вот у каждой таблички есть
5:27
HTML-представление. Любой и умеет
5:29
понимать HTML. Проблема в том, что он
5:32
может быть сложный, в нём может быть
5:34
много описательных элементов, которые не
5:36
несут семантическую нагрузку. Допустим,
5:38
вот это всё можно удалять для и это
5:41
мусор.
5:43
Поэтому альтернатива достаточно хорошая.
5:45
Это превращение таблиц HTML превращение
5:48
в Markдау. Опять же формат есть
5:50
специальная разметка в формате
5:52
Markдаdown, которая передаёт структуры
5:54
таблиц. В чём проблема? Сейчас
5:57
покажу. Проблема есть, и очень многие
6:00
уже с ней столкнулись. Мы добавляем сюда
6:03
таблички, а наш и
6:05
неправильно
6:07
достаёт информацию из ячеек. Почему это
6:10
происходит? А я покажу, почему
6:11
происходит. Смотрите, а вот в данной
6:14
таблице она вроде бы простая, да, но у
6:17
нас есть
6:19
э объединение ячеек и объединение строк
6:22
таблицы. Вот, например, в этой вот
6:24
ячейке объединены объединены две
6:26
строчки, вот это и вот это. А вот в этой
6:29
строчке объединены два столбца таблицы.
6:32
Вот этот и вот этот соединены
6:34
в отдельную ячейку. И вот это для
6:37
формата
6:38
Marкдау непостижимая сложная задача, на
6:42
которой она делает ошибки. Я проверил
6:45
бесплатные доступные онлайнконструкторы,
6:48
которые позволяют работать с marкon,
6:51
преобразовывать. Вот я вставлял
6:53
таблички, смотрел, что получается.
6:55
Получается, ни от
6:56
одного
6:58
онлайнредактора я не получил корректной
7:01
таблицы. Этот вообще сходит с ума.
7:04
Второй здесь делает, но совершает
7:05
ошибки, потому что на самом деле он не
7:08
соблюдает
7:09
ячейки. И ещё один. И таким образом я
7:12
смотрел, я не нашёл ни одного, который
7:15
умеет работать. А своё же это решение я
7:18
адаптировал и получается придумал
7:21
лайфхак, каким образом можно обойти вот
7:24
эту проблему отсутствия в самом э
7:29
получается в самом формате. отсутствие
7:33
поддержки сложных таблиц просто за счёт
7:35
хитростей. Э, например, здесь
7:39
то есть я передаю всегда полную строку,
7:41
но с пропусками. То есть, например,
7:43
первая строчка, вот наш грейд fix месяц,
7:46
а потом передаю пустую ячейку, которая
7:48
здесь объединена, но если мы её сделаем
7:51
как бы пустой, условно, ээ заменим её на
7:53
пустую ячейку для и это будет понятно, и
7:56
структура вся сохраняется. То же самое
8:00
здесь вот то же самое. Стандартные
8:03
фиксы, пониженные фиксы. С левой стороны
8:05
ячейка отсутствует, поэтому я её
8:07
эмулирую. Я создаю несуществующую пустую
8:09
ячейку для того, чтобы привести таблицу
8:13
э к вот такому читаемому. Вот в такой
8:16
табличке и не запутается. Данные будут
8:18
доставаться корректно, потому что
8:21
несуществующие ячейки я эмулирую. Вот я
8:24
на их месте создаю структурно
8:26
псевдоячейки, которые для и э имеют
8:29
важное значение. Таким образом,
8:32
рекомендую вот это всё решение. Для тех,
8:34
кто ещё не знает, оно полностью
8:35
бесплатное, открыто. Если вы работаете с
8:37
данными, добавляете таблицы ваших
8:39
ассистентов, ваши и, а, пожалуйста,
8:43
пользуйтесь моим инструментом. Проблему
8:44
с тем, что Markдаdown не поддерживает
8:46
сложные таблицы, я решил. Теперь, э,
8:49
вернёмся к другой проблеме. Хорошо. Вот
8:52
у нас Marкdдаун. Мы решили, была
8:54
проблема в табличках, мы её решили.
8:56
Напоминаю, что готовый результат мы
8:58
можем скачать в виде макдаун формата,
9:00
также CSV формат. Он также подходит и
9:03
его также отлично понимает. Можно
9:04
использовать в промтах, но у нас же ещё
9:06
есть рак, векторная база данных, в
9:09
которую мы загружаем книги, большие
9:11
данные, и там загружаются иногда
9:13
огромные э таблицы, вообще большущие. И
9:16
в этом случае у нас ещё есть одна
9:18
проблема. Проблема в том, что когда мы
9:20
загружаем любые данные в базу данных,
9:23
они превращаются, режутся на кусочки.
9:25
Кусочки называются чанки. Чанки уже
9:28
превращаются в вектора. Вектора
9:29
сохраняются векторные базы. Потом по ним
9:31
осуществляется векторный поиск. А сейчас
9:33
вот я объясню на каком-то простом
9:36
примере. А, ну вот представьте,
9:40
сегодня добавился здесь раздел Большая
9:42
таблица. На этом разделе я сейчас вам
9:44
покажу суть проблемы и как её я решаю.
9:47
Смотрите, в чём проблема. Представьте,
9:49
что эта табличка имеет большой размер, и
9:51
мы её загружаем в векторные данные,
9:53
большую базу данных, и она автоматически
9:55
режется на кусочки. Раз кусочек, два
9:58
кусочек, три кусочек. В итоге
10:01
каждый этот кусочек превращается как бы
10:03
в чан. Дальше этот чанк
10:05
переводится в векторный формат, в
10:08
координаты мерного пространства.
10:09
Сохраняется векторную базу данных, по
10:11
которой ищется информация в дальнейшем.
10:13
Так вот, если мы таблицу порезали на
10:16
кусочки, она превращается в мусор,
10:19
просто в мусор, в бесполезный кусок
10:22
информации. Почему это происходит?
10:23
Потому что в один чанк, в один кусочек
10:26
поместилась полезная информация из
10:28
таблички. Почему она полезная? Потому
10:30
что в ней содержится заголовок таблицы.
10:32
Без заголовка таблицы мы не поймём, что
10:35
в этой таблице, в какой ячейке и для
10:36
чего. Понимаете?
10:39
Если мы уберём заголовок, таблица для
10:40
нас становится просто цифровым шумом,
10:42
мусором, которая совершенно бесполезна и
10:44
непонятно зачем и что она рассказывает,
10:47
объясняет. Какое решение для этой
10:51
проблемы у нас есть. Оно, кстати,
10:53
работает не только для рак, для
10:54
векторных данных. Перед тем, как
10:56
заливать в большую базу данных. Оно
10:58
работает также хорошо и когда мы просто
11:02
используем, создаём промт для нашего и
11:05
помощника, допустим, и у нас сложная
11:07
таблица, и чтобы он не запутался, так
11:09
как таблицы большие, ячейки получаются
11:12
уже на большом расстоянии от заголовков.
11:14
И искусственный селект, языковая модель
11:16
может путаться при извлечении данных.
11:19
Что я придумал? Я придумал делать из
11:22
такой таблицы мелкие таблицы, превращая
11:25
их
11:26
в автономное решение. Смотрите, здесь я
11:29
сделал допустимое количество строк в
11:31
табличке. Допустим, мы выберем четыре
11:33
строки. Смотрим, да, так как четыре
11:36
строки разрешено в одной табличке, он
11:38
создал одну табличку с четырьмя строками
11:40
и вторую табличку с двумя строчками,
11:41
которые остались. При этом он сохранил
11:43
заголовки. Видите, заголовки здесь,
11:45
заголовки здесь.
11:47
У нас уже есть две таблички, и это уже
11:50
корректно работает, потому что такие
11:51
таблицы, они будут маленькие, они будут
11:53
умещаться в любые чанки, в любые
11:55
кусочки. В самих промтах это также будет
11:58
работать лучше, потому что для и легче
12:01
ему найти закономерность таблицы за счёт
12:03
того, что присутствуют заголовки в
12:05
таблице и они рядышком. Можем уменьшить
12:07
количество три строки. Вот он уже создал
12:10
две таблицы по три строчки. Две строчки.
12:13
Смотрите, так у нас здесь шесть строк.
12:15
он создал три таблицы по две строки в
12:17
каждое или вообще по одной строчке.
12:20
Тогда у нас шесть табличек. При этом
12:22
каждая табличка абсолютно автономная. То
12:24
есть попадая э в семантику, в базу
12:27
данных или в промт, э такая табличка,
12:30
она всегда будет работать корректно. Для
12:32
и она максимально простая и удобная,
12:34
потому что здесь всё чётко понятно.
12:36
Семантический поиск будет по таким
12:38
таблицам осуществляться очень хорошо,
12:40
очень
12:42
эффективно. Это всё, что я хотел
12:44
показать. не хотел затягивать, хотел
12:46
показать конкретные проблемы, конкретное
12:48
их решение. Э, всё, что я показал,
12:51
доступно. Ссылка будет под этим видео.
12:54
Для тех, кто пользуется, э, и уже более
12:58
серьёзно обучает различными данными, э,
13:01
настраивает сложные промты,
13:03
структурированные, использует различные
13:05
сложные форматы, я думаю, что это
13:07
решение, оно будет очень хорошим,
13:09
полезным, принесёт вам сэкономит кучу
13:12
сил и времени. В дальнейшем, в будущем,
13:14
я
13:15
планирую сделать универсальный комбайн,
13:18
который всё это будет делать
13:19
автоматически. То есть идея в том, что
13:22
нужно сделать программу, в которую мы
13:23
загрузим PDF, какой-нибудь вордовский
13:25
файл или ещё что-нибудь, а он сам
13:28
корректно извлечёт и правильно разобьёт
13:30
таблицы, структурирует информацию,
13:33
перенесёт, извлечёт изображения и
13:36
правильно, корректно сохранит их на
13:37
сервере, позволяя и полноценно, чётко со
13:41
всем этим работать.
13:43
На текущий момент всё. Всё, что я вам
13:45
хотел сказать. Надеюсь, что мои видео
13:47
для вас
13:49
полезны. Всего вам самого доброго,
13:51
самого хорошего. Пишите, комментируйте,
13:54
спрашивайте, что ещё вам интересно. Я
13:57
буду стараться делать решения и решать
14:01
все эти моменты, которые с которыми
14:03
многие из вас сталкиваются по мере своих
14:06
сил, по мере своих возможностей. Всё.
14:08
Всем самого хорошего, самого доброго.
14:10
Всем пока. Ah.

