Comments 30
> Даже самые передовые LLM пока не могут справиться с анализом больших сложных таблиц.
Но ведь вы не проанализировали ни одну из передовых LLM. Уверен, что результаты Claude 3.5 Sonnet или GPT-o1 были бы гораздо лучше
Правильнее было бы сказать «самые передовые и при этом доступные». Согласен, что от o1 и Claude 3.5 Sonnet ожидаются более высокие результаты, но в качество 100% я не верю, особенно в постановке задачи без Chain-of-Thought. Когда опубликуем бенчмарк, все желающие смогут проверить на нем и другие модели, в том числе названные вами.
А в чем проблема с доступом к обеим моделям? Обе доступны по подписке за $20 в месяц. А по API ещё дешевле. Вам помочь получить бесплатные $1000 кредитов на Azure, чтобы вы могли протестировать GPT o1?
Каждое подмножество --- это 10000 уникальных таблиц, каждая из которых до 32 тысяч токенов. У нас 5 синтетических сетов.токенов. С ценой $3 за млн токенов получается 1600 баксов, и это только Claude 3.5 Sonnet без учета затрат на генерацию. o1 с их test-time compute будет еще дороже.
Но цена не главное.
Мы хотим использовать модели не только для того, чтобы выполнить замеры и впечатлить вас, но и для ряда других задач, в том числе на внутренних данных, передача которых по API в сторонние компании запрещена. Поэтому и рассматриваем только те модели, которые возможно использовать локально.
Дальше будем улучшать бенчмарк, добавлять в него новые задачи и готовить академическую статью. Вот тогда и проведем замеры на более дорогих моделях.
А когда публикация бенчмарка? Хотя бы примерно. Я бы хотел на нем погонять некоторые русскоязычные файнтюны, для задач используем не сильно большие локальные LLM и с таблицами довольно часто приходится работать.
Заливать в контекст все данные и ожидать что современный слабый ИИ сумеет это все корректно переработать - опрометчиво. Собственно любые результаты в приведенных в табличках, отличных от зеленых - уже неприемлемы.
p.s. А теперь сделайте по другому, данные нужно передавать ИИ в режиме чата построчно (если нужна информация о прошлых решениях, этого кстати нужно избегать) илилучше по одному объекту за раз (используя KV-cache), в системном промпте нужно собственно привести несколько примеров (разных но охватывающих по больше особенностей), затем задать вопрос.
Например - нам нужно найти 'совпадения по смыслу', например собираем справочники (да, знаю для этого лучше дообучить свою модель - классификатор, но обычно это дороже). Мы описываем в системном промте что то типа - На каждую приведенную строку с данными нужно определить, к какой области знаний она относится (можно указать список доступных а если нет, как то описать, до какой степени их нужно дробить, типа наука, математика, геометрия, матанализ, методы перемножения матриц), ответ давать как в следующих примерах:
данные: Химия твердых тел
ответ: химия
данные: Рассуждения о смысле жизни
ответ: философия
После чего достаточно в виде чата слать модели данные в указанном формате и получать ответ. Строгий формат позволит уйти от проблем с поиском конца ответа и излишними рассуждениями (кстати можно РАЗРЕШИТЬ рассуждать, но требовать ответа в нужном формате все равно), чем страдают слабые модели (та же qwen хоть и лучшая из открытых, но может легко выплюнуть китайский иероглиф в ответе).
p.p.s. я понимаю, что всем хочется, что бы можно было скормить случайную pdf-ку с таблицами в любом оформлении, и модель все поняла и сделала (с этим люди то справляются не очень)
С утверждением про опрометчивость я согласен частично. Наши эксперименты показали, что для таблиц определенной структуры и сложности подход «заливать в контекст все данные» оказывается рабочим, чего не ожидали даже мы сами!
Построчно можно, но представьте, насколько это будет дольше. В нашей постановке делается один запрос в LLM и получается один короткий ответ. В вашем решении нужно делать до 64 вызовов, получать 64 ответа, потом еще как-то их агрегировать.
Вообще говоря, то, что для таблицы из одной строки (и заголовка) модель будет отвечать хорошо, мы уже показали. На тепловых картах все метрики близки к 90-100% для , причем это когда ответ находится в первой строке, хотя сами таблицы могут быть и больше.
Про случайную pdf-ку всё правда. Задача сложная, но тем и интересная!
Да, даже openai показала что одним запросом решать - тупиковый (ну пока) путь, и сделали агентную систему o1, где под капотом ИИ последовательно и параллельно обрабатывает запрос, вопрос и что то еще, собирая и добавляя промежуточные данные в контекстное окно.
Скорее всего сначала нужно проанализировать вопрос, потребовав от ИИ алгоритм решения задачи на основе которого провести серию запросов к данным, преобразование данных, возможно понадобится запрос во внешние базы и сервисы и т.п.
Надеяться ВСЕ свои задачи решать, заливая одним махом все в GPT - просто глупо, уже столько обсосали его недостатков... GPT это конвертер данных (не только между языками но и стилистически, по смыслу и наполнению), он почти не умеет в анализ (удивительно что ИНОГДА у него получается, что говорит о колоссальной избыточности), это что то типа интуиции, которая может очень быстро дать ответ, возможно правильный, но тщательная подготовка перед вопросом может увеличить точность ответа кратно.
Интересно принципиально иной алгоритм проверить, типа табличного RAG
Конкретно эту задачу можно решить и генерацией простого SQL/pandas-запроса к таблице. Через RAG она тоже решается, однако если бы вопрос стоял «Какое максимальное значение в столбце ?», то RAG был бы бессилен.
Мы специально стали решать задачу «в лоб», поскольку любой частный подход не будет универсальным, а от LLM часто ждут именно этого.
Таблицы выбирали шириной от 2 до 16 столбцов, высотой от 1 до 64 строк.
Таблицы взяты слишком маленькие.
Поэтому вывод:
Даже самые передовые LLM пока не могут справиться с анализом больших сложных таблиц.
Неверный.
Во-первых, о каких БОЛЬШИХ таблицах речь? 😀
Большие - это по миллиону строк/столбцов. У вас в эксперименте не большие, а микроскопические 😉
Во-вторых, такую таблицу LLM (например, ChatGPT) "видит" на 100% (вся тепловая карта будет сплошь зелёная), если закинуть её в виде изображения (скрин таблицы), а не в виде вашего промпта (проверено не раз).
Попробуйте, убедитесь 😏
Пожалуйста за идею 😘
Это была критика 😉
А вообще статья хорошая, идея интересная, полезная, только реализация "хромает" и выводы неверные. Попробуйте сменить подход (выше описал пример), по крайней мере для небольших таблиц.
П.с. сразу предвосхищая некоторые "возражения": дело не в мультимодальности, а именно в подходе, т.к. сам файл изображения можно передать в виде текста, если модель "не понимает" картинки.
Вывод как раз верный. Если модели плохо отвечают по таблицам из 64 строк, то вряд ли они смогут ответить и по более сложным.
Что касается подачи картинки, то мы явно прописали, что оценивали только текстовые модели (LLM), а мультимодальные картиночно-текстовые (LVLM) оставили как future work. Это написано следующим предложением после «неверного» вывода.
Вашу идею можно еще развить. Например, в модель можно подавать одновременно и скриншот, и текст таблицы.
Или вы утверждаете, что ChatGPT как текстовая модель умеет понимать base64? Может быть, вы тоже? Потому что я нет.
Когда выложим бенчмарк, ждем от вас самбита и SOTA-метрик. И, конечно, верных выводов!
Вывод "llm вряд ли справятся с обработкой большой таблицы" можно сделать и без вашего исследования, просто поработав немного с этими моделями. Вы тестировали одну гипотезу, а вывод делаете про другую, так тестирование не работает.
Вывод как раз верный. Если модели плохо отвечают по таблицам из 64 строк, то вряд ли они смогут ответить и по более сложным
Тогда сразу пишите, что рассуждения ваши ненаучные (чтобы не вводить читателей в заблуждение), ибо в серьезных экспериментах, во-первых, то что вы называете выводом, называется аппоксимацией, во-вторых, отсутствуют переходы вроде "вряд-ли", в третьих, в данном случае можно сделать только предположение, а никак не вывод.
Или вы утверждаете, что ChatGPT как текстовая модель умеет понимать base64?
Мой ChatGPT умеет:
Принимать картинки в виде текста
Понимать трёхмерную структуру объекта по его текстовому формату obj
Преобразовывать (туда-обратно) 2д имитацию трехмерной графики в текстовый формат
Генерить obj файл 3д модели по одной её фото в изометрии
Рисовать воксельной графикой 2д имитацию 3д мира (недавно научил)
Все эти примеры - без API, расширений, файнтьюна и джейлбрейков - всё в рамках официального приложения.
И ещё много чего недокументированного, что исследователям LLM только предстоит открыть (частично о своих изысканиях я писал в разных комментариях и статьях тут, можете посмотреть, если интересно)
Что касается подачи картинки, то мы явно прописали, что оценивали только текстовые модели (LLM), а мультимодальные картиночно-текстовые (LVLM) оставили как future work.
Видимо, вообще проигнорировали то, что я написал постскриптум предвосхищая именно такой комментарий...
Генерить obj файл 3д модели по одной её фото в изометрии
Это точно не умеет, я проверял. Скорее всего не умеет и остальное, что вы написали.
Это точно не умеет, я проверял.
Это означает, что у вас не получилось этого сделать при помощи ChatGPT, только и всего.
Скорее всего не умеет и остальное, что вы написали.
А это означает, что вы считаете свой опыт единственно возможным и судите по нему обо всех остальных. Это называется высокомерие 😁
А для меня лично ваш опыт (и не только ваш, так как я от многих людей слышу о том, что у них не получается того взаимодействия с ChatGPT, которое получается у меня) только в очередной раз подтверждает насколько уникален от глубок мой собственный опыт и способ взаимодействия с этой ИИ. Благодарю 😌
Хм, действительно. Попробовал пример с покрытием закинуть в GigaChat от Сбера - получил верный ответ!

Что за клоунада? Где лучшие?
а их нету.
Тут пытаемся LLM (на секундочку - просто тексто-дробилкам) скормить работу не с текстом. И ждем чуда.
Мне вообще кажется, что текущий хайп вокруг LLM уже давно должен был бы закончится. Слова они хорошо составляют.(ТОЧКА) А вот со всем остальным у них заметно хуже.... Но людям хочется верить, что LLM могут абсолютно все.
В правильных руках
LLM могут абсолютно все.
😏
L(arge) (L)ANGUAGE (M)odel - по сути свой тескто-дочилдробилка. Как тренировка на туевой хуче текстов поможет работать хорошо с чем либо кроме текстов?
Это примерно как человека с детства зубрившего БСЭ (ну или любую другую многотомную энциклопедию) выпустить в RL году так на 20-м.
Вот эти нынешние попытки натянуть LLM на все подряд, по сути своей, являются попыткой такого 20-и летнего энциклопедиста посадить и за экскаватор, и в гоночную машину, и в самолет, а потом еще посадить ядерным реактором "порулить" с парой гранат в руках.
Пригодны ли они вообще для работы с данными. Джемини например не справляется с такими простыми видами работ как выбор куска текста из куска текста, не может выбрать и показать 1 анекдот со страницы книги с анекдотами, постоянно переделывает текст и становится не смешно (цензура по признаку копирайт?).
И так же не может работать с именами паролями явками, подменяет их, причем так что и не заметить можно, красиво работает.
А реально нужно ли в первом промпте обозначать роль?
«Ты — эксперт по интеллектуальной обработке документов.»
Если не сказать волшебное слово «эксперт», то будет ли работать?) Выглядит как заклинание
не особо верю в понимание именно таблиц. Единственный подход, который у нас полетел, это просить модель сгенерировать sql. Хотя бы мы точно знаем, что такие данные в таблице есть и это не галлюцинация. Если модель придумает несуществующую колонку, то запрос не сработает и мы про это узнаем.
Запросы SQL хорошо подходят, если таблицы имеют «правильную» структуру. Мы в основном проекте тоже так пробовали, показывали заголовок и превью таблицы, но подход имел ряд ограничений. Например, в таблицах в документах (подчеркиваю, в документах, неструктурированных!) часто бывают сноски. Мы ищем значение, равное "1234", а в ячейке на самом деле стоит "1234*" --- получаем не тот ответ, на который рассчитывали.
Понимают ли большие языковые модели данные из таблиц?