Калифорнийский университет в Беркли создал систему для анализа текстов DocETL

от автора

Система DocETL предлагает инструмент для создания и выполнения пайплайнов обработки данных, заточенных для анализа текстовых документов с помощью больших языковых моделей. Агентный подход помогает задействовать принципы low-code для описания операций. Код DocETL открыт, готовится научная статья о системе.

Кажется, что большие языковые модели (БЯМ) максимально упростили анализ данных. Достаточно разместить в промпте кусок текста и попросить модель написать краткое содержание, выделить какую-то тему или ответить на заданные вопросы. Однако иногда данные попросту не влезают в контекстное окно БЯМ.

На релизе БЯМ семейства Claude 3 компания Anthropic демонстрировала необъятность контекстного окна сравнением с литературными произведениями. Было замечено, что в 200 тыс. токенов контекста без проблем войдёт знакомый американцам по школьной программе роман «Моби Дик» Германа Мелвилла. Однако даже без умозрительных примеров бывают задачи в разы крупнее, чем выгрузить в промпт хрестоматийный образец американского романтизма.

DocETL для описания проблемы предлагает представить датасет со стенограммами президентских дебатов США за последние 40 лет. Общий объём входных данных составляет 738 094 слов. Допустим, что кто-то захотел проанализировать, что обсуждалось и как менялись точки зрения представителей Демократической и Республиканской партий за все эти годы.

Формулировка задачи звучит реалистично. Легко вообразить журналиста, который пытается разобраться в тенденциях американской политики. Однако в промпт большинства существующих БЯМ такой огромный корпус текстов попросту не влезет.

Если «скармливать» в БЯМ по одному тексту, результат будет хуже учитывать глобальный контекст. Неясно, сколько возможно обработать стенограмм за один раз. К тому же легко потратить несколько дней на выстраивание целой группы аккуратно составленных промптов, а потом обнаружить, что результат получился неудовлетворительным.

Даже если данные проходят по объёму в один запрос к БЯМ, то качество ответов с ростом числа токенов может оказаться неудовлетворительным.

БЯМ, которая в один присест «переварит» настолько огромный датасет из стенограмм, всё же существует — это Gemini компании Google. В промпт модели Gemini 1.5 Pro с поддержкой до 2 млн токенов контекста засунули все тексты. БЯМ попросили для каждого случая президентских дебатов указать основные темы, а затем выявить, как эти темы развивались по годам, обращая внимание на внешние события и цитируя релевантные фрагменты.

Нужно отметить, что модель самая современная — Gemini-1.5-Pro-002 вышла позавчера, 24 сентября 2024 года. Но результат работы не радует разнообразием. БЯМ выделила всего 5 разных тем за четыре десятка лет политической жизни США. Качество отчётов при этом лишь ухудшается по мере генерации ответа.

Эту и другие проблемы пытается решить DocETL — система с открытым исходным кодом для быстрого создания пайплайнов обработки данных с помощью БЯМ.

DocETL написали члены EPIC Data Lab и группы Data Systems and Foundations Калифорнийского университета в Беркли для Police Records Access Project. В рамках последнего проекта журналисты ищут в разношёрстных полицейских отчётах паттерны нарушения служебных полномочий, к примеру чрезмерное применение силы. Датасет этой задачи ещё больше, чем даже немаленький пример с президентскими дебатами за 40 лет.

Был нужен фреймворк обработки данных одновременно низкоуровневый, чтобы допускать простоту написания и адаптируемость к конкретным применениям, и декларативный, чтобы допускать автоматическую оптимизацию. В результате была разработана система DocETL для создания пайплайнов обработки документов на более высоких уровнях абстракций.

Рабочий процесс DocETL с точки зрения пользователя. Пользователь задаёт пайплайн операторов и промптов для запуска на датасете, а DocETL сама оптимизирует их для точности. DocETL

Рабочий процесс DocETL с точки зрения пользователя. Пользователь задаёт пайплайн операторов и промптов для запуска на датасете, а DocETL сама оптимизирует их для точности. DocETL

В документации системы DocETL перечисляются набор операторов для анализа: разбитие больших документов на части, контекстно-зависимая обработка, entity resolution, итеративные улучшения вывода и так далее.

Два оператора специально заточены для обработки больших текстов. Это split и gather. Первый разбивает документ в более удобоваримые куски, что важно для случаев небольшого размера контекстного окна или падения качества работы БЯМ на больших промптах. Второй помогает добавить в обрабатываемый фрагмент релевантный контекст из других частей документа.

Система DocETL — не первый и не единственный проект подобной направленности. Схожие задачи перед собой ставит LOTUS, который аналогичным образом выполняет заданные пользователем операторы для обработки данных. Но в случае DocETL проходит шаг оптимизации пайплайна агентом-БЯМ.

Пайплайны пишутся на YAML (принципы low-code) или Python, DocETL их затем автоматически оптимизирует. Пользователь пишет пайплайны, а DocETL их улучшает с помощью БЯМ механизмами переписывания запросов [query rewriting] и оценки качества. Сложные операции представляются более простыми, а выводы запросов оценивает сама БЯМ. Затем система показывает пользователю оптимизированный пайплайн, чтобы тот ознакомился с тем, как изначальный план был улучшен до более эффективного.

Если вернуться к примеру с президентскими дебатами, то изначальный пайплайн от пользователя выглядел так:

  1. Операция map: обрабатывая отдельно каждую стенограмму, собрать список тем и ассоциированных с ними точек зрения.

  2. Операция unnest: выравнивание структуры для лучшей обработки.

  3. Операция reduce: обобщить темы на основании всех стенограмм.

Быстрый тест выявляет проблемы. На первом шаге получилось 339 тем, многие из которых похожи: «соцзащита и медицинское страхование» и «медицинское страхование и соцзащита». Такие дубли сводят эффективность третьего шага на нет.

Пайплайн, который оптимизировала система DocETL. data-people-group.github.io

Пайплайн, который оптимизировала система DocETL. data-people-group.github.io

После запуска docetl build pipeline.yaml DocETL оптимизирует пайплайн. Изменения два:

  1. Канонизация тем: шаг resolve удаляет схожие или дублирующие темы. Так их число сокращается на 55 %.

  2. Итеративное улучшение: операция reduce была переписана в цикл map + reduce, что помогает итеративно улучшать краткие содержания на основе оценки. В качестве судьи используется БЯМ.

Процесс оптимизации исследовал несколько различных конфигураций и лишь затем предложил такую архитектуру. На оптимизацию было потрачено запросов к API на $0,86, на запуск на всех стенограммах дебатов — $0,29.

В итоге получается значительно лучше, чем невнятный ответ с 5 темами. DocETL составила 152 отчёта, в каждом из которых в среднем было по 730 слов. Результат работы на датасете со стенограммами президентских дебатов представлен на сайте проекта.

Заявлено, что DocETL распоряжается с запросами эффективно и кэширует данные. Например, если пользователь пожелает что-то поменять в промптах создания краткого содержания, система повторно запустит только необходимые части пайплайна. Это значит, что хотя полный прогон пайплайна сто́ит $0,29, небольшое изменение может обойтись в несколько центов.

DocETL открыта и доступна для скачивания. В списке ссылок системы представлены сайт, документация, репозиторий с кодом и даже сервер в Discord, но вот научной статьи пока нет. Указывается, что папир скоро опубликуют.

Код проекта распространяется под лицензией MIT.

DocETL.com

github.com/ucbepic/docetl


ссылка на оригинал статьи https://habr.com/ru/articles/846300/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *