Amazonの金融テクノロジー(FinTech)チームは、さまざまな管轄区域の規制問い合わせを管理するシステムを構築・運用しています。これらのチームは、規制当局からの問い合わせを処理しますが、各問い合わせは異なる要件、文書形式、複雑さを持っています。対応プロセスでは、文書のレビュー、関連情報の抽出、複数のシステムからのデータ取得、期限内での回答作成が求められます。問い合わせの頻度とビジネスの複雑さが増すにつれ、よりスケーラブルなアプローチが必要となりました。
この課題に対処するため、Amazon FinTechチームはAmazon Bedrock、AWS Lambda、その他のAWSサービスを活用した、インテリジェントな規制対応自動化システムを構築しました。このシステムは、Retrieval Augmented Generation(RAG)アーキテクチャを採用し、Amazon Bedrock Knowledge BasesとAmazon OpenSearch Serverlessでベクトルストレージを実現することで、数千の履歴文書から情報を効率的に検索できるようにしています。
ナレッジベースの取り込みフローは、自動化された文書処理パイプラインを提供します。ユーザーが文書をアップロードすると、API GatewayがLambda関数をトリガーしてプリサインURLを生成し、S3に文書をアップロードします。その後、文書処理LambdaがAmazon Bedrock Knowledge Basesを呼び出し、階層的チャンク戦略で文書を分割し、Amazon Titan Text Embeddingsで埋め込みを生成して、OpenSearch Serverlessにベクトルを保存します。この戦略は、構造化された複雑な金融文書に適しており、小さなチャンクで正確に検索しつつ、大きな親チャンクで十分なコンテキストを提供します。
チャットアプリケーションは、AWSサーバーレスアーキテクチャとWebSocket接続を活用したリアルタイムの対話インターフェースを提供します。ユーザーはWebSocketを介して質問を送信し、Chat Service Lambda関数がClaude 3.5 Haikuモデルでクエリ拡張を行い、最大5つのバリエーションを生成して、ナレッジベースのRetrieve APIに並列呼び出しします。検索結果はDynamoDBの会話履歴と結合され、Claude Sonnet 4.5のConverse Stream APIでストリーミング応答が生成されます。応答はマークダウン形式でクライアントに返され、DynamoDBに保存されます。
マルチターン会話機能では、Amazon Cognitoでセッション認証を行い、一意の会話IDを割り当てます。DynamoDBがメッセージを時系列で保存し、ユーザーは以前の会話をシームレスに再開できます。各クエリでは、まず入力をサニタイズしてプロンプトインジェクションを防止し、LLMによってクエリがナレッジベース検索を必要とするかどうかを分類します。知識集約型の質問にはクエリ拡張戦略を採用し、マルチスレッドの並列処理により検索レイテンシを10秒から2秒未満に短縮しました。最終的にAmazon Bedrock Guardrailsで機密情報をフィルタリングし、コンプライアンスを確保します。
可観測性については、Chat Service LambdaがOpenTelemetryを統合し、セルフホストのLangfuseインスタンスにエンドツーエンドのトレースを送信します。これにより、レイテンシ、トークン使用量、プロンプトテンプレート、モデル応答などの詳細なテレメトリデータが取得されます。システムはモデルの幻覚やナレッジベース内の古いガイドラインを検出し、コンプライアンスと正確性を確保します。全体として、サーバーレスでイベント駆動型の設計により、自動スケーリングと継続的改善が実現されています。