Обнаружение скрытых связей в неструктурированных финансовых данных с помощью Amazon Bedrock и Amazon Neptune
Этот репозиторий содержит код для развертывания прототипа решения, которое демонстрирует, как можно объединить генеративный искусственный интеллект и граф знаний для создания масштабируемой, управляемой событиями, бессерверной системы для обработки неструктурированных данных для финансовых услуг. Это решение может помочь управляющим активами в вашей организации обнаружить скрытые связи в своих инвестиционных портфелях и предоставить образец простого в использовании пользовательского интерфейса для просмотра финансовых новостей и понимания их связи с их инвестиционными портфелями.
Вариант использования в бизнесе
Управляющие активами обычно инвестируют в большое количество компаний в своих портфелях, и им необходимо иметь возможность отслеживать любые новости, связанные с этими компаниями, поскольку эти новости помогут им опережать движения рынка, определять инвестиционные возможности и лучше управлять своими инвестициями. портфель.
Как правило, отслеживание новостей можно легко осуществить, настроив простое новостное оповещение на основе ключевых слов с использованием названия инвестируемой компании, но это становится все более трудным, когда новостное событие не влияет напрямую на инвестируемую компанию. Например, воздействие может быть нанесено поставщику инвестируемой компании, что потенциально может нарушить цепочку поставок компании. Или это может повлиять на клиента клиента вашей инвестируемой компании. Если доходы этих компаний будут сконцентрированы на нескольких ключевых клиентах, это потенциально может иметь негативные финансовые последствия для ваших инвестиций.
Такое воздействие второго или третьего порядка трудно выявить и еще труднее отследить. С помощью этого автоматизированного решения управляющие активами могут построить граф знаний о взаимосвязях своего инвестиционного портфеля, а затем использовать эти знания для извлечения корреляции и анализа последних новостей.
Архитектура
График ступенчатой функции (из пункта №4)
Ход решения (шаг за шагом)
- Загрузите официальные прокси/годовые отчеты/10 тыс. отчетов (.PDF) в корзину Amazon S3.
- Имя корзины S3 для загрузки можно получить из консоли CloudFormation — вывод основного стека — «IngestionBucket».
- Обратите внимание, что используемые отчеты должны быть официально опубликованными, чтобы свести к минимуму включение неточных данных в ваш график знаний (в отличие от новостей/таблоидов).
- Уведомление о событии S3 запускает функцию AWS Lambda, которая отправляет имя сегмента/файла S3 в очередь Amazon Simple Queue Service Queue (FIFO).
- Использование очереди FIFO призвано гарантировать, что процесс приема отчетов выполняется последовательно, чтобы уменьшить вероятность внесения дублирующихся данных в ваш граф знаний.
- Событие Amazon EventBridge, основанное на времени, запускается каждую минуту для вызова функции AWS Lambda. Функция получит следующее доступное сообщение очереди из SQS и начнет асинхронное выполнение пошаговой функции AWS.
- Конечный автомат ступенчатой функции выполняет ряд задач по обработке загруженного документа, извлекая ключевую информацию и вставляя ее в ваш граф знаний.
- Задачи
- Используя Amazon Textract, извлеките текстовое содержимое из файла отчета proxy/annual/10k (PDF) в Amazon S3 и разбейте его на несколько более мелких текстовых фрагментов для обработки. Сохраните фрагменты текста в Amazon DynamoDB.
- Используя Anthropic Claude v3 Sonnet на Amazon Bedrock, обработайте первые несколько фрагментов текста, чтобы определить основной объект, на который ссылается отчет, вместе с соответствующими атрибутами (например, отраслью).
- Извлекает фрагменты текста из DynamoDB и для каждого фрагмента текста вызывает лямбда-функцию для извлечения объектов (компания/человек) и их отношений (клиент/поставщик/партнер/конкурент/директор) с основным объектом с помощью Amazon Bedrock.
- Объедините всю извлеченную информацию
- Отфильтровывает шум и ненужные объекты (например, общие термины, такие как «потребители») с помощью Amazon Bedrock.
- Используйте Amazon Bedrock для устранения неоднозначности, сравнивая извлеченную информацию со списком аналогичных объектов из графа знаний. Если сущность не существует, вставьте ее. В противном случае используйте сущность, которая уже существует в графе знаний. Вставляет все извлеченные связи.
- Выполните очистку, удалив сообщение очереди SQS и файл S3.
- После завершения этого шага ваш график знаний будет обновлен и готов к использованию.
- Пользователь обращается к веб-приложению на основе React для просмотра новостных статей, которые обогащены информацией об объектах/настроениях/путях подключения.
- URL-адрес веб-приложения можно скопировать из консоли CloudFormation — выходные данные стека веб-приложения — «WebApplicationURL».
- Поскольку это пример решения для демонстрационных целей, пользователь указывает конечную точку API, ключ API и ключ API новостей в веб-приложении, щелкнув значок шестеренки в правом верхнем углу.
- Конечную точку API можно скопировать из консоли CloudFormation — вывод основного стека — «APIEndpoint».
- Ключ API можно скопировать из консоли API-ключа API-шлюза — основной стек.
- Ключ News API можно получить на NewsAPI.org после бесплатного создания учетной записи.
- Нажмите кнопку «Обновить настройки» после заполнения значений.
- Используя веб-приложение, пользователь указывает количество прыжков (по умолчанию N=2) на пути подключения, который необходимо отслеживать.
- Для этого нажмите на значок шестеренки в правом верхнем углу, а затем укажите значение N.
- Используя веб-приложение, пользователь указывает список объектов для отслеживания.
- Для этого щелкните значок шестеренки в правом верхнем углу, а затем переключите переключатель «Заинтересовано», который помечает соответствующий объект как ЗАИНТЕРЕСОВАН = ДА/НЕТ.
- Это важный шаг, и его необходимо сделать до обработки каких-либо новостных статей.
- Чтобы создать вымышленные новости, пользователь нажимает кнопку «Создать образец новостей», чтобы создать 10 образцов финансовых новостей со случайным содержанием, которые будут использоваться в процессе приема новостей.
- Контент создается с помощью Amazon Bedrock и является чисто вымышленным.
- Чтобы загрузить актуальные новости, пользователь нажимает кнопку «Загрузить последние новости», чтобы загрузить самые важные новости сегодняшнего дня (на базе NewsAPI.org).
- Загрузите новости (.TXT) в корзину S3.
- Имя корзины S3 для загрузки можно получить из консоли CloudFormation — вывод основного стека — «NewsBucket».
- Шаги № 8 или № 9 автоматически загружают новости в корзину S3, но вы также можете интегрировать ее с предпочитаемым вами поставщиком новостей, например AWS Data Exchange, или любым сторонним поставщиком новостей, чтобы помещать новостные статьи в виде файлов в корзину S3.
- Содержимое файла данных новостей должно быть отформатировано как: {дд ммм гггг{title>{содержание новости
- Уведомление о событии S3 отправляет имя сегмента/файла S3 в SQS (стандарт), который запускает несколько лямбда-функций для параллельной обработки данных новостей.
- Используя Amazon Bedrock, лямбда-функция извлекает объекты, упомянутые в новостях, вместе со всей связанной информацией, отношениями и настроениями упомянутого объекта.
- Затем он сверяется с графом знаний и использует Amazon Bedrock для устранения неоднозначности, рассуждая, используя доступную информацию из новостей и из графа знаний, чтобы идентифицировать соответствующий объект.
- Как только объект обнаружен, он затем ищет и возвращает все пути подключения, соединяющиеся с объектами, отмеченными INTERESTED=YES в графе знаний, которые находятся в пределах N = 2 переходов.
- Веб-приложение автоматически обновляется каждую секунду, чтобы получить последний набор обработанных новостей для отображения в веб-приложении.
Веб-приложение React — Настройки
Обозреватель графов
В этом репозитории также развернут Graph Explorer (github/aws/graphexplorer), который представляет собой веб-приложение на основе React, которое позволяет пользователям визуализировать извлеченные сущности и связи.
- Чтобы получить доступ к Graph Explorer, получите URL-адрес из консоли CloudFormation — вывод основного стека — «GraphExplorer».
- При доступе к веб-приложению вы получите предупреждение о потенциальной угрозе безопасности в вашем браузере, поскольку сертификат, используемый для сайта, является самоподписанным. Вы можете продолжать действовать. Чтобы избавиться от предупреждения, прочитайте это.
- После запуска приложение автоматически подключится к базе данных AWS Neptune и синхронизирует свои данные. Вы можете в любой момент нажать на значок обновления, чтобы повторно синхронизировать данные.
- Нажмите «Открыть графический обозреватель» в правом верхнем углу, чтобы начать визуализацию графика знаний.
- Перейдите на github/aws/graphexplorer для получения дополнительной информации о Graph Explorer.
- Обратите внимание, что Graph Explorer не требуется как часть решения, но упрощает изучение извлеченных связей.
Демо — начало работы с Graph Explorer
начало работы с-graph-explorer.mp4
Вот еще одна видеодемонстрация возможностей Graph Explorer: ссылка на видеодемонстрацию
Обозреватель графиков — Граф знаний
(визуальное исследование графовой базы данных Amazon Neptune с помощью инструмента Graph Explorer)
Инструкции по развертыванию
Этот репозиторий предоставляет приложение CDK, которое развернет весь прототип решения в двух стеках CDK:
- основной стек приложений («основной стек»), который можно развернуть в любом регионе (например, us-east-1, us-west-2), где есть необходимые сервисы и модели Amazon Bedrock.
- стек веб-приложений («стек веб-приложений»), который можно развернуть только на us-east-1, поскольку для него требуется AWS WAF.
Вы можете развернуть два стека в разных регионах или в одном регионе (например, us-east-1).
Используемые сервисы AWS
- Амазонка
- Амазонка Нептун
- Амазон Тексттракт
- Амазон ДинамоБД
- Шаговая функция AWS
- AWS Лямбда
- Простая служба очередей Amazon (SQS)
- Amazon EventBridge
- Amazon Simple Storage Service (S3)
- Amazon CloudFront
- АВС ВАФ
- Облако Amazon Elastic Compute (EC2)
- Амазон ВПК
- API-шлюз Amazon
- AWS Управление идентификацией и доступом
Предварительные требования
- Amazon Bedrock — вам понадобится доступ к сонету Anthropic Claude v3. Чтобы настроить доступ к модели в Amazon Bedrock, прочтите это.
- Python — вам потребуется Python 3 и выше.
- Узел — вам потребуется версия 18.0.0 и выше.
- Docker — вам потребуется версия 24.0.0 или выше с Docker Buildx и работающий демон docker.
Настройка виртуального окружения
Чтобы вручную создать виртуальную среду в MacOS и Linux:
После завершения процесса инициализации и создания виртуального окружения вы можете использовать следующий шаг для активации виртуального окружения.
$ source .venv/bin/activate
Если вы используете платформу Windows, вы должны активировать virtualenv следующим образом:
% .venvScriptsactivate.bat
После активации virtualenv вы можете установить необходимые зависимости.
$ pip install -r requirements.txt
Предварительное развертывание
Если вы впервые развертываете свой код через CDK в своей учетной записи AWS, вам необходимо сначала загрузить свою учетную запись AWS как в us-east-1, так и в регионе, в котором вы развертываете. В противном случае вы можете пропустить этот шаг.
$ cdk bootstrap aws:///us-east-1 aws:///
Затем приступайте к выполнению приведенной ниже команды, чтобы:
- создать веб-приложение на основе React
- загрузить зависимости Python, необходимые для создания слоя AWS Lambda
- скопировать пользовательскую библиотеку (connectionsinsights)
Развертывать
Чтобы развернуть решение (это занимает около 30 минут):
Очистить
Чтобы уничтожить решение:
Если вы столкнулись с ошибкой удаления из-за того, что корзины S3 не пусты, это может быть связано с файлами журнала доступа, записанными в корзины S3 после их очистки в рамках процесса уничтожения cdk. Если это произойдет, просто очистите эти ведра и еще раз запустите команду очистки.