Amazon Web Services ブログ

非構造化金融データに隠された関連性を Amazon Bedrock と Amazon Neptune で発見する

アセットマネジメント業務において、ポートフォリオマネージャーは、リスクと機会を把握し投資判断を導くために、投資対象企業を綿密に監視する必要があります。決算報告書や信用格下げのような直接的なイベントを追跡することは簡単で、企業名を含むニュースに関する通知を設定することができます。しかし、サプライヤー、顧客、パートナー、あるいは企業のエコシステム内の他のエンティティでのイベントから生じる二次的・三次的な影響を検知することは難しいのが現状です。

例えば、主要ベンダーでサプライチェーンの混乱が発生すると下流の製造業者に悪影響を及ぼす可能性があります。また、主要クライアントで最大の顧客を失うとサプライヤーにとってデマンドリスクになります。このような出来事は、直接影響を受ける企業に注目が集まるほどの大きな出来事ではない場合が多い一方で注意を払う必要はあります。このブログでは、リアルタイムニュースとリレーションシップマップを照合するための、ナレッジグラフと生成 AI (Generative AI) を組み合わせた自動化ソリューションを示します。

このソリューションには大きく 2 つのステップがあります。第一に、企業 (顧客、サプライヤー、取締役) 間の複雑な関係をナレッジグラフに構築します。第二に、このナレッジグラフと生成 AI を用いてニュースイベントがもたらす二次的・三次的な影響を検知します。このソリューションによって、例えばポートフォリオ内の自動車メーカーでサプライヤーのパーツ遅延が生産ラインへ影響を与える可能性があることを、直接の言及がなくても明らかにする事ができます。

AWS では、このソリューションをサーバーレス、スケーラブル、完全にイベント駆動なアーキテクチャでデプロイできます。このブログでは、グラフによる知識表現と自然言語処理に適した 2 つの主要な AWS サービス (Amazon NeptuneAmazon Bedrock) を使用した概念実証システムを紹介します。Amazon Neptune は、高度に接続されたデータセットで動作するアプリケーションを簡単に構築して実行できる、高速で信頼性の高いフルマネージド型のグラフデータベースサービスです。Amazon Bedrock は、AI21 Labs、Anthropic、Cohere、Meta、Stability AI、Amazon などの主要な AI 企業の高性能な基盤モデル (Foundational Model: FM) を単一の API で提供するフルマネージドサービスで、セキュリティ・プライバシー・責任ある AI に配慮しながら生成 AI アプリケーションを構築するための幅広い機能を備えています。

全体として、このプロトタイプはナレッジグラフと生成 AI によって実現可能な技術、つまりさまざまな要素を結びつけてシグナルを導き出すことができることを示しています。これは、ノイズを避けて重要な情報の進展に常に注目できるという点において専門家にとって重要です。

知識グラフの構築

このソリューションの第一歩はナレッジグラフを構築することです。ナレッジグラフにとって価値があるが、しばしば見過ごされているデータソースが企業の年次報告書です。公式の企業出版物は発行前に精査されるため、その中に含まれる情報は正確で信頼できるものと考えられます。しかし、年次報告書は人間が読むことを想定した非構造化形式で書かれているため、機械で処理するにはふさわしくありません。この潜在力を引き出すには、その中に含まれる豊富な事実と関係性を体系的に抽出し、構造化する方法が必要になります

Amazon Bedrock のような生成 AI サービスを使うことで、この処理を自動化できるようになりました。年次報告書を取り込み、小さな単位(チャンク)に分割し、自然言語処理を適用して重要なエンティティとリレーションシップを抽出する処理パイプラインを実行できるようになります。

例えば、「[ 企業 A] は [ 企業 B] から 1,800 台の電気バンを発注し、ヨーロッパでの電気配送車両の拡大を図った」という文章があれば、Amazon Bedrock は以下の情報を特定できます。

  • [企業 A] が顧客であること
  • [企業 B] が供給者であること
  • [企業 A] と [企業 B] との間がサプライヤー関係にあること
  • 「電動配達バンのサプライヤー」というサプライヤー関係の詳細

非構造化文書から構造化データを抽出するには、企業や人物などのエンティティと、顧客やサプライヤーなどのリレーションシップを、テキストから抽出できるように適切に作成されたプロンプトを大規模な言語モデル (LLM) に対して与える必要があります。プロンプトには、注目すべき点と出力データの構造についての明確な指示が含まれています。この処理を年次報告書全体にわたり繰り返すことで、関連するエンティティとリレーションシップを抽出し、情報が豊富なナレッジグラフを構築できます。

ただし、抽出した情報をナレッジグラフに記録する前にまずエンティティの曖昧さを解決する必要があります。例えば、ナレッジグラフに既に別の「[企業 A]」エンティティがあっても、同名の別の組織を表している可能性があります。Amazon Bedrock では、ビジネスの重点領域・業界・収益を生む業界・他のエンティティとの関係などの属性の推論と比較によって、2 つのエンティティが実際に別物かを判断します。これにより、無関係の企業を 1 つのエンティティとして誤って統合することを防ぎます。

曖昧さの解決が完了すると、Amazon Neptune に格納されているナレッジグラフにエンティティとリレーションシップを追加して、年次報告書から抽出された事実によってナレッジグラフの持つ情報を拡充できます。時間が経つにつれて、信頼性の高いデータの取り込みや信頼性の高いデータソースの統合によって包括的なナレッジグラフが構築され、グラフクエリや分析によって重要な洞察が得られるようになります。

この生成 AI による自動化によって数千もの年次報告書を処理することが可能になり、手作業では非常に多大な労力が必要なために活用されなかったであろうナレッジグラフキュレーションのための非常に貴重な資産を活用できるようになります。

次のスクリーンショットは、Graph Explorer ツールを使用して Amazon Neptune グラフデータベースで可能なビジュアル探索の例を示しています。

ニュース記事の処理

ソリューションの次のステップは、ポートフォリオマネージャのニュースフィードを自動的に充実させ、彼らの関心や投資に関連する記事を強調することです。ニュースフィードについては、ポートフォリオマネージャは AWS Data Exchange からサードパーティのニュースプロバイダやその他のニュース API を利用することができます。

ニュース記事がシステムに入ると、コンテンツを処理するためのデータ取り込みパイプラインが呼び出されます。年次報告書の処理と同様の手法を使用して、Amazon Bedrock はニュース記事からエンティティ、属性、リレーションシップを抽出します。その後、抽出された情報についてナレッジグラフに対して曖昧さを解決し、ナレッジグラフ内の対応するエンティティを特定します。

ナレッジグラフには企業と人物のリレーションシップが存在するので、記事内のエンティティを既存のノードにリンクさせることでポートフォリオマネージャーが着目している企業が 2 ホップ以内に含まれているかを特定できます。このようなリレーションシップが見つかるということは、記事がポートフォリオマネージャーに関連する可能性があることを意味します。また、基となるデータがナレッジグラフで表現されているため、ポートフォリオマネージャーがこの関連性の理由や仕組みを理解しやすいよう可視化することもできます。さらに、Amazon Bedrock を使えば、参照されているエンティティの感情分析も行えます。

最終的な出力は、ポートフォリオマネージャの関心分野や投資に影響を与えると思われる記事を表示するよう強化されたニュースフィードです。

ソリューション概要

ソリューション全体のアーキテクチャは次の図のようになります。

ワークフローは以下のステップで構成されています。

  1. ユーザーが公式報告書 (PDF 形式) を Amazon Simple Storage Service (Amazon S3) バケットにアップロードします。ナレッジグラフに不正確なデータを含めないために、公式に発行された報告書である事が望ましいです (ニュースや週刊誌とは対照的です)。
  2. S3 イベント通知が AWS Lambda 関数を呼び出し、S3 バケットとファイル名を Amazon Simple Queue Service (Amazon SQS) キューに送信します。First-In-First-Out (FIFO) キューを使用すると、報告書の受信処理が順次行われるため、ナレッジグラフに重複データが含まれる可能性が低くなります。
  3. Amazon EventBridge の時間ベースのイベントが毎分実行され、非同期で AWS Step Functions ステートマシンの実行を開始します。
  4. Step Functions ステートマシンは、一連のタスクを実行してアップロードされた文書から重要な情報を抽出し、ナレッジグラフに挿入します。
    1. Amazon SQS からキューメッセージを受信します。
    2. Amazon S3 から PDF レポートファイルをダウンロードし、複数の小さな文章チャンク (約 1,000 語) に分割し、それらの文章チャンクを Amazon DynamoDB に保存します。
    3. Anthropic の Claude v3 Sonnet on Amazon Bedrock を使用して、最初のいくつかの文章チャンクを処理し、報告書が参照する主なエンティティと関連する属性 (業界など) を特定します。
    4. DynamoDB から文章チャンクを取得し、各チャンクで Lambda 関数を呼び出して、Amazon Bedrock を使用してエンティティ (企業や個人など) とそのエンティティが主なエンティティとの関係 (顧客、サプライヤー、パートナー、競合相手、ディレクターなど) を抽出します。
    5. 抽出された全ての情報を統合します。
    6. Amazon Bedrock を使用して、ノイズや無関係なエンティティ (「消費者」などの一般的な用語) を除去します。
    7. Amazon Bedrock を使用して、抽出された情報とナレッジグラフ内の類似エンティティのリストを照合し、推論によって曖昧さを解決します。エンティティが存在しない場合は新規にインサートし、そうでない場合はナレッジグラフ内の既存のエンティティを使用します。抽出された全てのリレーションシップをインサートします。
    8. クリーンアップとして、SQS キューメッセージと S3 ファイルを削除します。
  5. ユーザーは React ベースの Web アプリケーションにアクセスし、エンティティ、感情、接続パスの情報を補足したニュース記事を表示します。
  6. Web アプリケーションを使用して、ユーザーは監視する接続パスのホップ数 (デフォルト N = 2) を指定します。
  7. Web アプリケーションを使用して、ユーザーは追跡するエンティティのリストを指定します。
  8. フィクションのニュースを生成するには、ユーザーは Generate Sample News を選択して、ニュース受信プロセスに送信するランダムなコンテンツを持つ 10 件のサンプル金融ニュース記事を生成します。コンテンツは Amazon Bedrock を使用して生成され、完全に架空のものです。
  9. 実際のニュースをダウンロードするには、ユーザーは Download Latest News を選択して、本日のトップニュース (NewsAPI.org で提供) をダウンロードします。
  10. ニュースファイル (TXT 形式) が S3 バケットにアップロードされます。手順 8 と 9 では、ニュースを自動的に S3 バケットにアップロードしますが、お好みのニュースプロバイダー (AWS Data Exchange やサードパーティのニュースプロバイダなど) との統合を構築して、ニュース記事をファイルとして S3 バケットにドロップすることもできます。ニュースデータファイルのコンテンツは <date>{dd mmm yyyy}</date><title>{title}</title><text>{news content}</text> の形式にする必要があります。
  11. S3 イベント通知が S3 バケットまたはファイル名を Amazon SQS (標準) に送信し、複数の Lambda 関数を呼び出してニュースデータを並列で処理します。
    1. Amazon Bedrock を使用して、ニュース内で言及されたエンティティとそれに関連する情報、リレーションシップ、感情を抽出します。
    2. Amazon Neptuneに格納されているナレッジグラフを参照し、Amazon Bedrock を使用して曖昧さを解決します。ニュースとナレッジグラフからの情報を利用して推論し、対応するエンティティを特定します。
    3. エンティティが特定された後、ナレッジグラフ内の INTERESTED = YES とマークされたエンティティへの N = 2 ホップ以内の接続パスを検索し、返します。
  12. Web アプリケーションは 1 秒ごとに自動的に最新の処理済みニュースセットを取得し、Web アプリケーションに表示します。

プロトタイプのデプロイ

プロトタイプのソリューションをデプロイして、自分で検証を始めることができます。プロトタイプは GitHub から入手でき、以下の詳細が含まれています。

  • デプロイの前提条件
  • デプロイのステップ
  • クリーンアップのステップ

概要

このポストでは、ポートフォリオマネージャーがモニタリングしている企業への直接の言及がされていないニュースイベントによる 2 次リスクや 3 次リスクを検出するための概念実証ソリューションを紹介しました。Amazon Neptune に格納されている複雑な企業関係のナレッジグラフと、Amazon Bedrock を使ったリアルタイムのニュース分析を組み合わせることで、サプライヤーの問題による生産遅延などの影響の連鎖を明らかにすることができます。

このソリューションはプロトタイプにすぎませんが、ナレッジグラフと言語モデルが様々な要素を結びつけてシグナルを導き出す可能性を示しています。これらの技術は、リレーションシップのマッピングと推論により、専門家がリスクをより早く発見することを支援します。全体として、このソリューションは投資分析と意思決定を補助するための検証が必要なものの、グラフデータベースと AI の有望な応用例となっています。

この金融サービスにおける生成 AI の例がビジネスにとって興味深いものであれば、またはそれと同様のアイデアがあれば、AWS アカウントマネージャーにご連絡ください。

本ブログはソリューションアーキテクトの三厨が翻訳しました。原文はこちら

著者について

Xan Huang はシンガポールを拠点とするAWSのシニアソリューションアーキテクトです。主要な金融機関と協力し、クラウド上で安全で、拡張性が高く、高可用性のソリューションを設計および構築しています。仕事の合間には、ほとんどの自由時間を家族と過ごし、3歳の娘に振り回されています。 Xan の LinkedInはこちら。