Этот пост был написан в соавторстве с Энтони Медейросом, менеджером по разработке решений и архитектуре для искусственного интеллекта в Северной Америке, и Блейком Санчи, менеджером по бизнес-аналитике из Schneider Electric. Среди других экспертов Schneider Electric — Джесси Миллер, Сомик Чоудхури, Шасват Бабхулгаонкар, Дэвид Уоткинс, Марк Карлсон и Барбара Слечковски.
Системы планирования ресурсов предприятия (ERP) используются компаниями для управления несколькими бизнес-функциями, такими как учет, продажи или управление заказами, в одной системе. В частности, они обычно используются для хранения информации, связанной со счетами клиентов. Разные организации внутри компании могут использовать разные системы ERP, и их объединение представляет собой сложную техническую задачу в масштабе, требующую знаний в конкретной области.
Schneider Electric — лидер в области цифровой трансформации энергоменеджмента и промышленной автоматизации. Чтобы наилучшим образом удовлетворить потребности своих клиентов, Schneider Electric необходимо отслеживать связи между учетными записями связанных клиентов в своих ERP-системах. По мере роста клиентской базы ежедневно добавляются новые клиенты, и их командам по работе с клиентами приходится вручную сортировать этих новых клиентов и связывать их с соответствующей родительской организацией.
Решение о связывании основывается на самой последней информации, доступной публично в Интернете или средствах массовой информации, и на него могут повлиять недавние приобретения, новости рынка или реструктуризация подразделения. Примером связывания учетных записей может быть определение отношений между Amazon и ее дочерней компанией Whole Foods Market (источник).
Schneider Electric развертывает большие языковые модели из-за их возможностей отвечать на вопросы в различных областях знаний, но дата обучения модели ограничивает ее знания. Они решили эту проблему, используя модель большого языка с открытым исходным кодом Retriever-Augmented Generation, доступную на Amazon SageMaker JumpStart, для обработки больших объемов внешних знаний и демонстрации корпоративных или общедоступных связей между записями ERP.
В начале 2023 года, когда Schneider Electric решила автоматизировать часть процесса связывания своих учетных записей с помощью искусственного интеллекта (ИИ), компания стала партнером Лаборатории решений машинного обучения AWS (MLSL). Благодаря опыту MLSL в консультировании и реализации машинного обучения компания Schneider Electric смогла разработать архитектуру искусственного интеллекта, которая позволила бы сократить ручной труд при объединении рабочих процессов и обеспечить более быстрый доступ к данным для своих последующих аналитических групп.
Генеративный ИИ
Генеративный искусственный интеллект и модели большого языка (LLM) меняют способы решения бизнес-организациями традиционно сложных задач, связанных с обработкой и пониманием естественного языка. Некоторые из преимуществ, предлагаемых LLM, включают способность понимать большие части текста и отвечать на связанные вопросы, давая ответы, подобные человеческим. AWS позволяет клиентам легко экспериментировать и реализовывать рабочие нагрузки LLM, предоставляя множество опций через Amazon SageMaker JumpStart, Amazon Bedrock и Amazon Titan.
Приобретение внешних знаний
LLM известны своей способностью сжимать человеческие знания и продемонстрировали замечательные способности отвечать на вопросы в различных областях знаний, но их знания ограничены датой обучения модели. Мы устраняем эту проблему отсутствия информации, объединяя LLM с API поиска Google, чтобы создать мощный LLM с расширенным поиском (RAG), который решает проблемы Schneider Electric. RAG может обрабатывать большие объемы внешних знаний, полученных из поиска Google, и отображать корпоративные или общественные связи между записями ERP.
См. следующий пример:
Вопрос: Кто является материнской компанией One Medical?
Гугл запрос: «Единая медицинская материнская компания» → информация → LLM
Отвечать: One Medical, дочерняя компания Amazon…
Предыдущий пример (взятый из базы данных клиентов Schneider Electric) касается приобретения, которое произошло в феврале 2023 года и, следовательно, не может быть раскрыто только LLM из-за отсутствия знаний. Дополнение LLM поиском Google гарантирует получение самой актуальной информации.
Модель Флан-Т5
В этом проекте мы использовали модель Flan-T5-XXL от производителя. Флан-Т5 семейство моделей.
Модели Flan-T5 настраиваются с помощью инструкций и поэтому способны выполнять различные задачи НЛП с нулевым результатом. В нашей последующей задаче не было необходимости использовать огромный объем мировых знаний, а скорее нужно было хорошо отвечать на вопросы в контексте текстов, предоставленных в результатах поиска, и, следовательно, модель T5 с параметрами 11B работала хорошо.
JumpStart обеспечивает удобное развертывание этого семейства моделей с помощью Amazon SageMaker Studio и SageMaker SDK. Сюда входят Flan-T5 Small, Flan-T5 Base, Flan-T5 Large, Flan-T5 XL и Flan-T5 XXL. Кроме того, JumpStart предоставляет несколько версий Flan-T5 XXL с разными уровнями квантования. Мы развернули Flan-T5-XXL на конечной точке для вывода с помощью Amazon SageMaker Studio Jumpstart.
Поиск расширенного LLM с LangChain
Лангчейн — это популярная и быстрорастущая среда, позволяющая разрабатывать приложения на базе LLM. В его основе лежит концепция цепи, которые представляют собой комбинации различных компонентов, предназначенных для улучшения функциональности LLM для конкретной задачи. Например, это позволяет нам настраивать подсказки и интегрировать LLM с различными инструментами, такими как внешние поисковые системы или источники данных. В нашем случае мы использовали Google Серпер компонент для поиска в Интернете и развернул модель Flan-T5-XXL, доступную в Amazon SageMaker Studio Jumpstart. LangChain выполняет общую оркестрацию и позволяет передавать страницы результатов поиска в экземпляр Flan-T5-XXL.
Генерация с расширенным поиском (RAG) состоит из двух этапов:
- Retrieval соответствующих фрагментов текста из внешних источников
- Увеличение фрагментов с контекстом в подсказке, переданной LLM.
В случае использования Schneider Electric RAG действует следующим образом:
- Данное название компании объединяется с вопросом типа «Кто является материнской компанией X», где X — данная компания) и передается в запрос Google с использованием Serper AI.
- Извлеченная информация объединяется с подсказкой и оригинальным вопросом и передается LLM для ответа.
Следующая диаграмма иллюстрирует этот процесс.
Используйте следующий код для создания конечной точки:
Инструмент мгновенного поиска:
В следующем коде мы объединяем компоненты поиска и дополнения:
Оперативное проектирование
Сочетание контекста и вопроса называется подсказкой. Мы заметили, что общий запрос, который мы использовали (варианты запроса материнской компании), хорошо работал для большинства государственных секторов (доменов), но не распространялся на образование или здравоохранение, поскольку понятие материнской компании там не имеет смысла. Для образования мы использовали «X», а для здравоохранения — «Y».
Чтобы включить этот выбор подсказки для конкретного домена, нам также пришлось определить домен, к которому принадлежит данная учетная запись. Для этого мы также использовали RAG, в котором вопрос с несколькими вариантами ответов «Каков домен {account}?» в качестве первого шага и на основе ответа, который мы запросили у родительской учетной записи, используя соответствующее приглашение в качестве второго шага. См. следующий код:
Подсказки для конкретных секторов повысили общую производительность с 55% до 71% точности. В целом, усилия и время, затраченные на разработку эффективных подсказки по-видимому, значительно улучшают качество ответа LLM.
РЭГ с табличными данными (SEC-10k)
Отчеты SEC 10K являются еще одним надежным источником информации о дочерних компаниях и подразделениях, ежегодно подаваемых публичными компаниями. Эти документы доступны непосредственно в SEC. ЭДГАР или через CorpWatch API.
Мы предполагаем, что информация представлена в табличном виде. Ниже приведен псевдо csv набор данных, имитирующий исходный формат набора данных SEC-10K. Возможно объединение нескольких csv источники данных в комбинированный фрейм данных pandas:
# A pseudo dataset similar by schema to the CorpWatch API dataset
df.head()