Свежая выжимка ml и AI статей - каждый день
С момента появления таких систем, как ChatGPT, технологии искусственного интеллекта (AI) стремительно развиваются и внедряются в производственные процессы. Основой этих систем являются Фундаментальные Модели (Foundation Models, FMs), которые способны генерировать текст, изображения и даже видео. Однако, несмотря на их мощные возможности, интеграция FMs в программное обеспечение представляет собой сложную задачу, требующую новых подходов и методов проектирования.
В данной статье мы рассмотрим две ключевые техники, которые помогут в проектировании систем на основе генеративного AI: Декомпозиция Задач (Task Decomposition) и Генерация с Увеличением Извлечением (Retrieval-Augmented Generation, RAG). Оба метода являются важными проектными паттернами, которые могут значительно улучшить качество и эффективность разработки AI-систем.
Декомпозиция задач представляет собой метод, основанный на принципе "разделяй и властвуй". В контексте машинного обучения (ML) это означает разбиение сложной задачи на более простые подзадачи, которые легче решать. Этот подход позволяет улучшить масштабируемость, модульность и функциональную корректность систем, основанных на AI.
Масштабируемость: Разделение задачи на подзадачи позволяет избежать проблем с производительностью, связанных с большими объемами выходных данных. Генерация меньших подзадач помогает контролировать размер выходных данных и снижает риски, связанные с производительностью.
Модульность: Упрощение структуры задачи позволяет использовать разные модели для решения различных частей проблемы, что улучшает поддерживаемость системы.
Функциональная корректность: Разбиение задачи на подзадачи может повысить качество выходных данных, так как каждая подзадача может быть более точно настроена и протестирована.
Время отклика: Генерация выходных данных на уровне подзадач сокращает время, необходимое для получения ответа от системы.
Модифицируемость: Система становится более гибкой, так как добавление новых функций или подзадач не нарушает общую архитектуру.
Тестируемость: Тестирование отдельных подзадач упрощает процесс выявления и устранения ошибок.
Декомпозиция задач находит применение в различных областях, таких как обработка речи, генерация трейлеров фильмов и абстрактное визуальное рассуждение. Важно отметить, что этот метод подходит для задач, которые требуют сложного структурированного вывода, например, генерации кода или написания эссе.
RAG – это метод, который позволяет Фундаментальной Модели взаимодействовать с данными из окружающей среды. Это означает, что знания модели не ограничены только тем, что хранится в её весах. Вместо этого, RAG обеспечивает доступ к актуальной информации, что позволяет уменьшить количество "галлюцинаций" (неверных выводов) и повысить точность генерации.
Безопасность: Использование RAG позволяет моделям взаимодействовать с данными из окружающей среды более безопасным образом, снижая риски, связанные с вызовом функций или инструментов.
Корректность: Обогащение знаний модели актуальной информацией из окружающей среды увеличивает её точность.
Модульность: Разделение задач на извлечение данных и генерацию позволяет упростить ML-задачу.
Интероперабельность: Современные AI-системы требуют взаимодействия с артефактами или знаниями, доступными в окружающей среде.
Тестируемость: RAG позволяет независимо оценивать извлекающую модель и источники данных.
RAG полезен в случаях, когда Фундаментальная Модель должна получить доступ к актуальным знаниям из окружающей среды, что позволяет ей обобщать на сценарии или данные, которые не были представлены во время обучения. Это особенно актуально для задач, связанных с генерацией контента, таких как суммирование или ответы на вопросы.
Генерация рабочих процессов представляет собой автоматизацию повторяемых процессов с помощью структурированного списка шагов. Каждый шаг в рабочем процессе может быть представлен в виде кода, но пользователи могут избегать написания кода, используя интерфейсы низкого кода.
Рабочий процесс состоит из упорядоченного списка шагов, где каждый элемент представляет собой определённое действие. Важно, чтобы значения входных данных шагов могли использовать выходные данные предыдущих шагов, а также артефакты окружающей среды, такие как имена таблиц баз данных и значения строк.
Использование декомпозиции задач и RAG в проекте по созданию рабочих процессов позволяет значительно улучшить качество и эффективность разработки. Декомпозиция задач помогает разбить процесс на более управляемые подзадачи, такие как создание структуры рабочего процесса и заполнение входных данных для каждого шага. RAG, в свою очередь, обеспечивает доступ к актуальной информации и позволяет избежать ошибок при генерации.
В ходе разработки системы Workflow Generation, наша команда столкнулась с рядом вызовов, таких как необходимость сопоставления неоднозначного текста с конкретными шагами и понимание взаимозависимостей между шагами. Мы решили разбить задачу на две подзадачи: создание структуры рабочего процесса и заполнение входных данных для каждого шага.
Создание структуры рабочего процесса: На этом этапе мы генерировали только названия шагов и их порядок, что значительно упростило задачу и позволило быстрее получить результаты.
Заполнение входных данных: На втором этапе мы использовали RAG для получения актуальных значений из окружающей среды, таких как имена таблиц и значения полей. Это позволило нам значительно снизить количество "галлюцинаций" и повысить точность выходных данных.
В результате применения Декомпозиции Задач и RAG в разработке системы Workflow Generation мы смогли создать модульную, гибкую и безопасную систему, которая эффективно решает задачи генерации рабочих процессов. Эти методы не только облегчают процесс разработки, но и повышают качество итогового продукта. Мы надеемся, что наш опыт будет полезен другим разработчикам и специалистам в области AI, стремящимся к созданию эффективных и надежных систем на основе генеративного AI.