3,583 papers
arXiv:2304.09433 90 1 апр. 2023 г. FREE

Модели языка позволяют простым системам генерировать структурированные представления гетерогенных озер данных.

КЛЮЧЕВАЯ СУТЬ
Генерация множества простых программ-экстракторов и последующее объединение их результатов оказывается значительно дешевле, быстрее и, что удивительно, даже качественнее, чем прямая обработка каждого документа с помощью LLM.
Адаптировать под запрос
📌

1. Ключевые аспекты исследования:

Исследование изучает, как лучше всего извлекать структурированную информацию (например, создавать таблицы) из большого количества разнородных документов (PDF, веб-страниц, писем). Авторы сравнивают два подхода: прямой (просить LLM обработать каждый документ) и косвенный (просить LLM написать программу для извлечения данных, а затем запустить эту программу).

Ключевой результат: Генерация множества простых программ-экстракторов и последующее объединение их результатов оказывается значительно дешевле, быстрее и, что удивительно, даже качественнее, чем прямая обработка каждого документа с помощью LLM.

🔬

2. Объяснение всей сути метода:

Представьте, что у вас есть 500 резюме в формате PDF, и вам нужно составить из них таблицу в Excel с колонками: "Имя", "Университет", "Опыт работы (лет)".

Подход 1: Прямое извлечение (Evaporate-direct) Это самый очевидный способ. Вы берете первое резюме, вставляете его в чат-бот и пишете: "Извлеки из этого текста имя, университет и опыт работы". Получаете результат. Повторяете это 500 раз.

* Проблема: Это очень медленно, дорого (если вы платите за токены), и LLM может начать "уставать" — на 100-м резюме она может назвать колонку "Вуз" вместо "Университет", нарушая структуру таблицы.

Подход 2: Генерация кода (Evaporate-code) Это более хитрый подход, который предлагает исследование. Вы берете 2-3 разных резюме, показываете их LLM и говорите: "Напиши мне, пожалуйста, простую программу на Python, которая умеет находить в таких текстах имя, университет и опыт работы". LLM анализирует структуру и пишет вам небольшой скрипт. После этого вы запускаете этот скрипт на всех 500 файлах.

* Проблема: Скрипт может быть неидеальным. Например, он ищет "Опыт работы:", а в некоторых резюме написано "Трудовой стаж:".

Лучший метод: Агрегация кода (Evaporate-code+) — "Мудрость толпы" Это гениальное развитие второго подхода. Вы просите LLM написать не один, а 5-10 разных скриптов для извлечения данных (можно использовать разные примеры или слегка менять промпт). Затем вы запускаете все эти скрипты на каждом резюме и смотрите на результаты. Если 8 из 10 скриптов сказали, что опыт работы "5 лет", а два других не нашли ничего или выдали ошибку, вы с большой уверенностью берете ответ "5 лет". Это как совет директоров из маленьких, но эффективных программ. Этот метод оказывается самым надежным и точным.

📌

3. Анализ практической применимости:

*Прямая применимость:Пользователь может немедленно использовать идеюпрямого извлечения (Evaporate-direct). Для этого нужно составить промпт, в котором вы даете модели 1-2 примера того, как именно нужно извлекать данные. Этот few-shot паттерн значительно повышает качество структурированных ответов по сравнению с zero-shot запросом ("извлеки данные").

  • Концептуальная ценность: Главный вывод для пользователя — LLM может быть не исполнителем, а генератором инструкций. Вместо того чтобы просить модель выполнить 100 однотипных действий, эффективнее попросить ее один раз составить "рецепт" (в данном случае — код, но это может быть и пошаговый план, и набор правил, и даже формула для Excel/Google Sheets), который пользователь затем сможет применить самостоятельно. Это учит мыслить в категориях автоматизации и масштабирования.

  • Потенциал для адаптации: Идею генерации "инструмента" можно легко адаптировать.

    • Без кода: "Составь пошаговую инструкцию для моего ассистента, как находить в этих отчетах ключевые показатели и заносить их в таблицу".
    • С простыми инструментами: "Напиши регулярное выражение (regex), которое находит все email-адреса в тексте". Это регулярное выражение потом можно использовать в любом текстовом редакторе.
    • Механизм адаптации — переосмыслить запрос с "Сделай за меня" на "Научи меня, как сделать" или "Дай мне инструмент, чтобы я сделал сам".

🚀

4. Практически пример применения:

### Роль

Ты — опытный ассистент маркетолога, специализирующийся на анализе отзывов клиентов.

### Контекст

Я предоставляю тебе отзывы на наш новый кофейный бленд "Утренняя Бодрость". Твоя задача — извлечь из каждого отзыва ключевую информацию в структурированном виде.

### Формат вывода

Для каждого отзыва предоставь данные в формате:
- **Оценка:** [оценка по 5-балльной шкале, если есть]
- **Понравилось:** [что именно понравилось клиенту]
- **Не понравилось:** [что именно не понравилось клиенту]
- **Ключевой продукт:** [название кофейного бленда]

### Пример

**Текст отзыва:** "В целом, неплохо, ставлю 4 звезды. Аромат у Утренней Бодрости просто божественный, очень насыщенный. А вот помол показался слишком крупным, моя кофемашина его не очень любит. Но вкус хороший."
**Твой анализ:**
- **Оценка:** 4/5
- **Понравилось:** божественный аромат, насыщенность
- **Не понравилось:** слишком крупный помол
- **Ключевой продукт:** Утренняя Бодрость

### Твоя задача

Теперь проанализируй следующий отзыв по тому же принципу:

**Текст отзыва:** "Это просто ужас, а не кофе! Какая еще Утренняя Бодрость, я чуть не уснул. Вкуса нет, одна горечь. Жаль потраченных денег. 1/5. Единственный плюс — красивая упаковка."
**Твой анализ:**

🧠

5. Почему это работает:

Этот промпт эффективен, потому что он напрямую реализует метод Evaporate-direct из исследования, используя ключевые механики промпт-инжиниринга:

  1. Few-Shot Learning (Обучение на примерах): Секция ### Пример — это самая важная часть. Мы не просто говорим модели, что делать, мы показываем ей как это делать на конкретном примере. Модель видит вход (Текст отзыва: ...) и эталонный выход (Твой анализ: ...), что позволяет ей усвоить паттерн и требуемую структуру гораздо точнее.
  2. Четкая спецификация формата: Инструкция Для каждого отзыва предоставь данные в формате... с использованием буллетов и [плейсхолдеров] не оставляет модели пространства для интерпретации. Она точно знает, какие поля нужно заполнить.
  3. Ролевая модель и контекст: Заголовки ### Роль и ### Контекст настраивают LLM на нужный лад. Она перестает быть универсальным ассистентом и становится "маркетологом", что помогает ей лучше понять семантику задачи (например, отличить реальный недостаток от нейтрального комментария).

📌

6. Другой пример практического применения

### Роль

Ты — внимательный риелтор, который помогает мне быстро оценить объявления о сдаче квартир.

### Контекст

Я буду присылать тебе тексты объявлений. Твоя задача — извлечь из каждого объявления ключевые параметры для удобного сравнения.

### Формат вывода

Для каждого объявления предоставь данные в формате:
- **Количество комнат:** [число комнат или "студия"]
- **Станция метро:** [название станции метро и время пешком, если указано]
- **Цена:** [месячная стоимость аренды в рублях]
- **Ключевые плюсы:** [2-3 основных преимущества, упомянутых в тексте]

### Пример

**Текст объявления:** "Сдается уютная однушка в 5 минутах от м. Сокол. Светлая, чистая, после ремонта. Есть вся необходимая мебель и техника (холодильник, стиральная машина). Идеально для одного человека или пары. Цена 55000 руб/мес + счетчики. Агентам не беспокоить."
**Твой анализ:**
- **Количество комнат:** 1
- **Станция метро:** Сокол, 5 минут пешком
- **Цена:** 55000 руб/мес
- **Ключевые плюсы:** после ремонта, есть вся мебель и техника, близко к метро

### Твоя задача

Теперь проанализируй следующее объявление по тому же принципу:

**Текст объявления:** "Предлагаем в аренду просторную 2-комнатную квартиру у метро Университет (15 мин пешком). Отличный вид из окна, есть застекленный балкон. Кухня полностью оборудована. Стоимость аренды 78 тысяч рублей в месяц. Рассмотрим семью, можно с детьми."
**Твой анализ:**

🧠

7. Объяснение механизма почему этот пример работает.

Этот пример работает по тем же фундаментальным причинам, что и предыдущий, демонстрируя универсальность подхода из исследования.

  1. In-context Learning (Обучение в контексте): Предоставленный ### Пример является "шпаргалкой" для модели. Она не пытается заново изобрести способ структурирования информации, а точно копирует логику и формат из примера. Это центральная идея прямого подхода (Evaporate-direct): показать, а не только рассказать.
  2. Снижение неоднозначности: Запрос "извлеки основное из объявления" слишком размыт. Модель может решить, что "агентам не беспокоить" — это основное. Предоставляя четкие поля (Количество комнат, Цена и т.д.), мы направляем внимание LLM только на ту информацию, которая нам нужна, игнорируя "шум".
  3. Воспроизводимость: Использование такого структурированного шаблона гарантирует, что при обработке 10 или 50 разных объявлений формат вывода будет одинаковым, что позволяет легко переносить эти данные в таблицу или сравнивать их. Модель не будет импровизировать, меняя названия полей от ответа к ответу.

📌

Основные критерии оценки

  • A. Релевантность техникам промтинга: Высокая. В исследовании приводятся конкретные шаблоны промптов для извлечения данных (Рис. 2 и 4), которые можно адаптировать.
  • B. Улучшение качества диалоговых ответов: Очень высокое. Хотя речь идет не о диалоге, а о задаче извлечения, исследование напрямую посвящено повышению точности и полноты структурированных ответов.
  • C. Прямая практическая применимость: Смешанная. Метод Evaporate-direct (прямое извлечение) полностью применим пользователем без кода. Однако самый мощный метод Evaporate-code+ (генерация и агрегация кода) недоступен обычному пользователю, так как требует запуска Python-скриптов.
  • D. Концептуальная ценность: Исключительно высокая. Работа блестяще раскрывает фундаментальный компромисс между "прямой работой" LLM и "LLM как генератором инструментов". Она дает глубокое понимание проблем масштабирования, стоимости и надежности при работе с большими объемами текста.
  • E. Новая полезная практика (кластеризация): Работа попадает сразу в несколько ключевых кластеров:
    • №1 (Техники формулирования): Демонстрирует few-shot подход для извлечения.
    • №5 (Извлечение и структурирование): Это ядро всего исследования.
    • №6 (Контекст и память): Обсуждаются стратегии работы с длинными документами путем их разбиения на части (chunking).
    • №7 (Надежность и стабильность): Основная идея метода Evaporate-code+ — повышение надежности и снижение ошибок через ансамблирование.
  • Чек-лист практичности (+15 баллов): Да, работа дает готовые конструкции, объясняет (косвенно через примеры) как структурировать запросы, раскрывает неочевидные проблемы (нестабильность прямого извлечения) и предлагает способы повысить точность. Бонус в 15 баллов применен.
📌

2 Цифровая оценка полезности

Аргументы в пользу высокой оценки (90 баллов):

* Фундаментальная концепция: Исследование дает пользователю мощнейшую ментальную модель: "Не заставляй LLM делать всю рутинную работу, попроси ее дать тебе инструмент (рецепт, план, скрипт) для этой работы". Это меняет подход к решению сложных задач.
* Прямая польза: Метод Evaporate-direct и шаблон промпта из Рисунка 2 — это готовый к использованию, очень эффективный паттерн для структурированного извлечения данных, который любой пользователь может скопировать и адаптировать под свои задачи.
* Объяснение "почему не работает": Работа наглядно показывает, почему простые запросы на извлечение данных из сотен файлов терпят неудачу — это дорого, долго и ненадежно. Это понимание само по себе ценно для формирования правильных ожиданий и стратегий.

Контраргументы (почему оценка могла быть ниже):

* Недоступность лучшего метода: Самый эффективный и качественный метод, предложенный в статье (Evaporate-code+), требует навыков программирования и запуска внешних скриптов, что делает его бесполезным для широкой аудитории в рамках простого чата.
* Узкая специализация: Исследование сфокусировано на одной, хоть и важной, задаче — извлечении структурированных данных. Это не универсальный метод для улучшения всех типов диалогов.

Контраргументы (почему оценка могла быть выше):

* Если бы современные LLM-интерфейсы (например, через GPTs или плагины) позволяли бесшовно выполнять сгенерированный код, ценность этого исследования для пользователя взлетела бы до 100 баллов, так как оно предлагает полный и самый эффективный цикл решения задачи.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с