Как стать автором
Обновить

Сверхспособность LLM в понимании документа, сконвертированного в текст с ошибками — или почему наш RAG работает

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.8K

Недавно я столкнулся с интересным поведением языковой модели, которое меня по-настоящему удивило, и хочу поделиться этим наблюдением с сообществом.

Такую иллюстрацию к статье предложил ChatGPT. Ладно
Такую иллюстрацию к статье предложил ChatGPT. Ладно

Мы разрабатывали RAG-систему для ответов на вопросы по корпоративным документам. Как часто бывает, большинство таких документов хранятся в форматах, которые языковые модели напрямую не понимают — например, PDF или DOCX. С этой проблемой сталкивается практически любая команда, работающая над RAG для бизнеса, так как бизнес привык работать именно с такими файлами.

Первым делом такие документы необходимо сконвертировать в удобный для LLM текстовый формат — например, в Markdown или обычный текст. Одна из главных сложностей при конвертации PDF-файлов возникает, когда они сверстаны в несколько столбцов. Корректно “распрямить” такой текст в последовательный поток — нетривиальная задача. Сегодня с этим хорошо справляются мультимодальные модели, принимающие на вход скриншот страницы, но в тот раз я воспользовался старым добрым конвертером Aspose, который отлично зарекомендовал себя при работе с DOCX (PDF не пробовал).

В результате эксперимента я хотел понять, насколько хорошо LLM отвечает на вопросы по страницам документа, сверстанных в виде столбцов.

Исходный документ: годовой отчет компании Mercia.

Документ был сконвертирован с помощью Aspose. Далее я вырезал из него фрагмент для уменьшения числа токенов.

И задал вопрос по содержанию третьего столбца на одной из страниц (выделен красным) просто в ChatGPT (4o):

in this document:

Faradion was sold in January 2022 to
...
...
“Mercia has generated over £60million of  pre-tax profits during the last  two years.”

find answer to question:
what Oddbox achived to date?

ссылка на чат

ChatGPT успешно ответил на вопрос:

Oddbox has achieved the following to date:

Rescued 13,790 tonnes of fruit and vegetables
that would otherwise have gone to waste.

Saved 1,519 million litres of water, equivalent to the
amount that 25,682 people drink in a lifetime.

Prevented 15,365 tonnes of carbon emissions, which is
enough energy to power 3,513 houses for a year.

Я решил, что конвертер справился с задачей корректно — раз модель смогла найти и понять нужную информацию. Но мне стало интересно, и я решил посмотреть, как именно выглядит этот фрагмент текста после конвертации.

Здесь меня ждал сюрприз: оказалось, что Aspose очень плохо работает с многостолбцовыми PDF. Конвертер просто склеивает текст из всех столбцов подряд — в результате получается каша из текста трёх столбцов, которую человеку прочитать почти невозможно. Но языковая модель, что удивительно, отлично справилась с этим “зашифрованным” текстом и правильно ответила на вопрос!

Вот как выглядит фрагмент текстового файла (без переноса длинных строк):

и соответствующие строки в документе:

Ближе присмотревшись к тексту, я заметил, что в некоторых местах столбцы всё же разделяются парой пробелов (выделено розовым), но в целом структура сильно искажена. Это всё, что получает LLM — и, несмотря на это, модель каким-то образом “расшифровывает” и находит нужную информацию. Интересно что ChatGPT даже не упоминает то ему пришлось "восстанавливать" документ.

Не знаю, как это ещё назвать, кроме как сверхспособностью. Я ни разу не встречал упоминаний о подобных особенностях, поэтому был действительно удивлён.

Практический вывод здесь такой: даже если документ сконвертирован некачественно, модель всё равно способна его понимать. Причём ошибки конвертации могут быть разными — например, я также замечал, что модель правильно интерпретирует таблицы (в формате Markdown), даже если в результате конвертации значения в отдельных строках оказываются не в тех столбцах. Но таблицы — это уже отдельная история, и о них расскажу в другой раз.

И наш RAG работает.

Обо мне

Больше двух лет пишу проекты про интеграцию LLM в приложения: агентский RAG, мультиагентский DeepResearch, голосовое управление приложениями и т.д. Оказываю консультации по интеграции LLM.
Недавно начал вести телеграм-канал о сильных и слабых сторонах LLM: LLM => AGI?

Теги:
Хабы:
+1
Комментарии8

Публикации

Ближайшие события