ユースケース: 人工知能、 インテリジェント検索、 単一ビュー
業種: 金融サービス
製品: MongoDB Atlas 、 MongoDB Atlas 検索する、 MongoDB Atlas Vector Search、 MongoDB Atlas Stream Processing
ソリューション概要
このソリューションでは、MongoDB の金融犯罪防止機能を紹介します。ベクトル埋め込みを使用したリアルタイムトランザクションのスクリーニング、 $rankFusion ハイブリッド検索を使用した高度なエンティティ解決、LLM 活用型リスク分類とケース生成、$graphLookup による関係ネットワークトラバーサル、システムを中断せずに更新する動的リスクモデル。
図 1. MongoDB を使用した金融犯罪軽減プラットフォーム
図 1は、金融犯罪緩和プラットフォーム「ThreatSight 360」の概要を示しています。エンドツーエンドのエンティティ解決と金融犯罪緩和ワークフローを説明し、次の主要な機能に焦点を当てています。
不正検出フロー: エンドツーエンドのリアルタイムパイプラインを示します。トランザクションシミュレーターは、不正シナリオを実行するための合成イベントを生成します。次に、不正検出エンジンは、各トランザクションをカスタマープロファイルデータで強化し、ルールを適用し、ベクトル検索を実行して、AWS Bedrock経由で組み込みを生成します。リスクモデルエンジンは、MongoDB 変更ストリームを使用してリアルタイムで更新されるリスクモデルを管理し、決定が常に最新のリスクロジックを反映するのを確実にします。
検索とエンティティ解決: あいまいなテキストベースの一致(名前、住所、識別子)には MongoDB Atlas Search を使用し、セマンティック類似性には MongoDB Atlas Vector Search を使用します。両方を並行して実行し、結果を
$rankFusionで結合して、各エンティティに対して単一のランク付けされた候補リストを生成します。ネットワーク分析とグラフトラバーサル: 明示的な関係と推測的な関係を専用のコレクションに保存します。
$graphLookupと集計パイプラインを使用してマルチホップ ネットワークをトラバースし、隠れたリンクを明らかにして、接続性メトリクスでエンティティ コンテキストを強化します。AIアシストのリスク評価: エンティティプロファイル、トランザクション履歴、検索マッチ、ネットワークコンテキストを AWS Bedrock Claude-3 Sonnet のような LLM のプロンプトにパッケージ化します。このモデルは、リスク指標を評価し、理由を説明し、組織のポリシーとリスクしきい値に基づいて次の最適なアクションを推奨します。
ケースマネジメントとレポート作成: ケースファイル、アナリストノート、LLM 生成の説明、監査トレイルを MongoDB ドキュメントとして保存します。これにより、誤検知を減らし、分析を可能にし、コンプライアンスチーム、内部監査者、規制当局向けに一貫性がありクエリ可能なレコードを作成できます。
参照アーキテクチャ
このソリューションは、エンドツーエンドのエンティティ解決と金融犯罪軽減ワークフローを実装する4つのコアモジュールで構成されています。
トランザクション モニタリングとリスク スコアリング エンジン
目的: ベクトル検索を使用したセマンティック不正パターンの検出
MongoDB Atlas Vector Search を使用して、明示的なルールに一致しない場合でも、既知の不正パターンのように動作するトランザクションを特定します。
以下のような各トランザクションに対する定性および動作の側面から埋め込みを生成します。
加盟店のカテゴリと説明
チャンネルとデバイスフィンガープリント
IP 範囲と ASN 情報
時間帯シーケンスやセッション動作などの時間的パターン
説明フィールドまたはフリーテキストノート(該当する場合)
これらの 1536 次元の埋め込みを、運用データを保持する同一のトランザクションドキュメントに保存します。
未加工の金額、残高の変更、単純な速度カウンターなど、高シグナルの数値機能を埋め込みの外部で保持し、ルールベースまたはスコアカードモデルで評価します。この分離により、以下が可能になります。
ベクトル検索を使用して、単純なしきい値やルールを超える意味的に類似した動作を表示します。
決定論的なルールやリスクモデルを使用し、数値制限や規制制約を強制します。
新規トランザクションをスクリーニングする際、埋め込みを生成し、
$vectorSearchを使用して MongoDB Atlas をクエリします。システムは、静的ルールを回避しますが、動作に置いて以前の不正行為に類似する、意味的に類似性のあるトランザクションを返します。
ベクトル類似性スコアと数値リスクスコアを組み合わせて、統合リスク決定パイプラインを作成します。
リスクモデル マネジメント
目的: Change Streamsによるリアルタイムのリスク インテリジェンス
MongoDB の変更ストリームを使用して、リスクモデル、コンプライアンスルール、または監視リストが変更された際に即座に通知を受け取ることができます。ポーリングやアドホックなキャッシュ無効化に依存する代わりに、更新を不正検出やケースマネジメントサービスに直接ストリームできます。
アナリストが新しいリスクモデルを有効にすると、すべてのトランザクション スクリーニング エンジンが数ミリ秒以内に変更を受け取り、更新されたルールを受信トラフィックに適用します。これにより、検出前に不正なトランザクションが決算されるのを可能にするバッチ遅延が排除されます。
リスクモデルまたは構成コレクションで変更ストリームカーソルを開くと、MongoDB はすべての挿入、更新、または置換操作をアプリケーションにプッシュします。更新を見逃さないように、RESUMEトークンを使用して、サービス再開後またはネットワーク障害発生後の中断時点から処理を再開します。
図 2. Change Streams、ベクトル検索、リスクモデルを使用したリアルタイム不正検出パイプライン
エンティティのオンボーディングとケース マネジメント
このモジュールには主に2つの目的があります。
目的: ハイブリッド検索によるAI活用型エンティティ解決
MongoDB の $rankFusion 演算子を使用して、エンティティのオンボーディングまたは調査中に複数の検索戦略を組み合わせます。あいまい一致に Atlas Search、セマンティック類似度に Atlas Vector Search を並行して実行します。$rankFusion は結果セットを結合し、テキスト類似性と埋め込みから関連性を組み合わせてエンティティにランクを付けます。
上位候補については、 $graphLookup を使用して関係ネットワークとトランザクションネットワークをトラバースします。MongoDBは、エンティティ接続、トランザクションパターン、共有識別子、リスク指標などのネットワークコンテキストを単一の集計パイプラインで返します。これにより、複数システムのクエリやコストのかかる結合の実行を回避できます。
エンティティデータ、検索結果、ネットワーク分析を、AI アシストのリスク分類向けに AWS Bedrock Claude-3 Sonnet などの LLM に投入します。モデルは、コンプライアンスフラグ、関係パターン、動作インジケーター、監視リストの一致を評価して、信頼スコアと推奨アクションを持つリスク評価を生成します。
LLM 生成の調査サマリーを使用して、 MongoDB でケース ドキュメントを自動作成します。これにより、手動でのレポート作成が削減され、コンプライアンスドキュメントの一貫性が向上します。
目的: グラフ トラバーサルによるネットワーク検出
調査担当者は、多くの場合、マネーロンダリングネットワークやエンティティ間の隠れたつながりを追跡する必要があります。MongoDB の $graphLookup 集計ステージを使用すると、このネットワーク分析を運用データベースで直接実行できます。個別にグラフを保存する必要はありません。
不審なエンティティから始めて、ビジネス関係者、共有アドレス、トランザクション相手、企業構造を通じて関係を再帰的にトラバースします。各トラバーサルでは、行動分析、リスクスコア、コンプライアンス フラグが組み込まれた完全なエンティティドキュメントが返されます。
トラバーサル実行中に、信頼度スコア、関係タイプ、またはリスクしきい値で関係を絞り込みます。
数ミリ秒でマルチホップのネットワークを検出し、グラフ結果を絞り込み、並べ替え、グループ化などの標準的な集計操作と組み合わせます。
// Multi-hop relationship traversal with MongoDB $graphLookup db.entities.aggregate([ { $match: { entityId: 'ENT_12345' }, }, { $graphLookup: { from: 'entity_relationships', startWith: '$entityId', connectFromField: 'target_entity_id', connectToField: 'source_entity_id', as: 'relationship_network', maxDepth: 2, restrictSearchWithMatch: { confidence_score: { $gte: 0.7 }, relationship_type: { $in: [ 'BUSINESS_ASSOCIATE', 'SHARED_ADDRESS', 'TRANSACTION_COUNTERPARTY', ], }, }, }, }, { $lookup: { from: 'entities', localField: 'relationship_network.target_entity_id', foreignField: 'entityId', as: 'connected_entities', }, }, { $project: { entityId: 1, name: 1, riskAssessment: 1, networkDepth: { $size: '$relationship_network' }, connectedEntities: { $map: { input: '$connected_entities', as: 'entity', in: { id: '$$entity.entityId', name: '$$entity.name.full', riskLevel: '$$entity.riskAssessment.level', }, }, }, }, }, ]);
図 3. MongoDB Search と $graphLookup を使用したエンティティ解決および LLM を活用したケースマネジメント
データモデルアプローチ
このプラットフォームは、document model の柔軟性を活用する3つの MongoDB コレクションを中心に構成されています。
エンティティコレクション: 完全な単一ビューのカスタマープロファイルを持つ個人および組織のデータを保存します。各ドキュメントには、識別データ、連絡先情報、KYC 属性、リスク評価、行動分析、ベクトル埋め込みが集約されています。ネストされたドキュメントは、トランザクションパターン、デバイスフィンガープリント、ロケーション履歴をキャプチャし、複数のシステムを結合することなく、各カスタマーの完全なビューを提供します。スキーマを移行せずに、新しいリスク要因またはデータソースを追加できます。
トランザクション コレクション: 埋め込み型の加盟店詳細、ロケーションデータ(GeoJSON ポイントとして)、デバイス情報、リスク評価を含む金融トランザクションを記録します。各トランザクションドキュメントは完全なコンテキストを持ち、独立して存在するため、結合なしで地理空間クエリやパターン分析が可能です。
リスクモデル コレクション: バージョン化されたリスク評価モデルをドキュメントとして維持します。各モデルには、リスク係数、重み、しきい値、パフォーマンスメトリクスが含まれています。MongoDB の変更ストリームは、モデルがアクティブ化または更新された際にサービスに通知し、新しいリスクロジックを即座に配置できるようにします。
コレクション間の関係
この設計では、埋め込み参照と専用の relationships コレクションを組み合わせを通じで関係をモデル化します。
エンティティドキュメントは、関連するエンティティへの参照を
connected_entities配列に埋め込むことができます。トランザクションドキュメントはエンティティにリンクする
customer_idフィールドを保存します。entity_relationshipsコレクションは、信頼スコア、関係タイプ、監査証跡とともに、明示的な関係を保存します。
このパターンによって、$graphLookup を使用した効率的なグラフのトラバーサルを実行するとともに、新しい関係タイプが出現してもスキーマを柔軟に保つことができます。
パフォーマンス向けのインデックスの作成戦略
Atlas Search インデックスを使用して、エンティティの解決と調査ワークフローをサポートします。
リアルタイムの名前提案用に、エッジ n グラム(2–15文字)を使用して
name.fullでオートコンプリートを構成します。entityType、nationality、residency、riskAssessment.overall.levelの string ファセットを構成して、検索結果をフィルターします。
Atlas Vector Search インデックスを組み込みフィールドで使用して、エンティティおよび動作パターンの一致向けに、1536次元ベクトルのコサイン類似度を設定し、セマンティック類似性の一致を有効にします。識別子データと動作パターン向けに個別の組み込みを作成して、特定のユースケースをターゲットにできます。
運用ワークロードに標準インデックスを使用します。
entityId、customer_id、timestampの各項目で単一フィールドのインデックスを使用し、検索や範囲クエリを行います。半径ベースの詐欺ルールには、ロケーション座標で
2dsphereインデックスを使用します。一般的な調査フィルターには、リスクレベルとエンティティタイプの複合インデックスを使用します。
ドキュメントの例
{ "_id": ObjectId("674a83b654c7f1b869cb1c2"), "customer_id": "CUST_67890", "transaction_id": "TXN_54321", "timestamp": ISODate("2024-11-15T14:22:36Z"), "amount": 2500.75, "currency": "USD", "merchant": { "name": "Global Electronics", "category": "electronics", "id": "MERCH_123" }, "location": { "city": "San Francisco", "state": "California", "country": "US", "coordinates": { "type": "Point", "coordinates": [ -122.4194, 37.7749 ] } }, "device_info": { "device_id": "device_abc123", "type": "desktop", "os": "macOS", "browser": "Chrome", "ip": "203.0.113.45" }, "transaction_type": "purchase", "payment_method": "credit_card", "status": "completed", "risk_assessment": { "score": 78.5, "level": "high", "flags": [ "unusual_amount", "unexpected_location", "velocity_alert" ], "transaction_type": "suspicious", "diagnostics": { "customer_base_risk": 35.0, "transaction_factors": { "amount": 85.0, "location": 90.0, "device": 0, "velocity": 75.0, "pattern": 60.0 } } }, "vector_embedding": [ 0.234, -0.567, 0.890, ... ] }
ソリューションのビルド
詳細な設定手順、環境変数、配置オプションについては、「GitHub リポジトリ」の README を参照してください 。リポジトリには、コンテナ化配置用の Docker 構成と本番環境配置の手順が含まれています。
前提条件と設定
依存関係の管理用に、Python 3.10+、Node.js 18+、Poetryをインストールします。
Atlas を使い始める の手順に従って、Atlas クラスターを作成し、ネットワーク アクセスを構成します。
AWS Bedrock のアクセスをリクエストして LLM ベースの埋め込みとリスク分類を利用するか、代替の埋め込みプロバイダーを設定します。
fsi-aml-fraud-detectionリポジトリを GitHub から複製します。
Atlas Search インデックスを構成
コレクションで Atlas Search および Atlas Vector Search インデックスを作成します。Atras Search タブで次を実行します。
entitiesコレクションにentity_resolution_searchという名前のインデックスを作成します。エッジ n グラム(2–15文字)で
name.fullのautocompleteトークン化を構成します。entityType、nationality、residency、riskAssessment.overall.levelのstringまたはstringFacetフィールドを構成します。それぞれのコレクションに
entity_vector_search_indexとtransaction_vector_indexという名前のベクトル検索インデックスを作成します。1536次元とコサイン類似度を使用してセマンティック類似度マッチングを行います。
Atlas 検索インデックスの定義例
{ "mappings": { "dynamic": false, "fields": { "name": { "type": "document", "fields": { "full": [ { "type": "autocomplete", "analyzer": "lucene.standard", "tokenization": "edgeGram", "minGrams": 2, "maxGrams": 15, "foldDiacritics": true }, { "type": "string" } ], "aliases": { "type": "string" } } }, "entityType": { "type": "stringFacet" }, "riskAssessment": { "type": "document", "fields": { "overall": { "type": "document", "fields": { "level": { "type": "stringFacet" }, "score": { "type": "numberFacet" } } } } }, "addresses": { "type": "document", "fields": { "full": { "type": "string" } } } } } }
アプリケーションを起動する
MongoDB コレクション文字列と構成値を使用して、
envファイルを作成します。依存関係をインストールするには、次のコマンドを実行します。
poetry install npm install サービスを開始し、
http://localhost:3000のウェブインターフェースにアクセスします。docsディレクトリの Jupyter ノートブックを使用して、カスタマープロファイル、トランザクション、エンティティ ネットワーク、ベクトル埋め込みなどの合成テストデータを生成します。
キーポイント
金融犯罪の検出において、MongoDB を差別化する6つの主要機能は以下のとおりです。
脅威の進化時にスキーマの移行を排除: ALTER TABLE 操作やダウンタイムなしで、リスク要因、動作メトリック、コンプライアンス フラグをドキュメントに追加します。
変更ストリームでトランザクションをリアルタイムで処理: リスクモデルまたは監視リストが更新された際に即座に通知を受け取り、バッチ遅延やキャッシュの無効化なしで、新規ルールをスクリーニングエンジンに適用します。
ベクトル検索で高度な不正パターンを検出: セマンティック類似を動作的な埋め込み全体で使用し、ルールベースの検出をバイパスする場合でも、既知の不正に類似するトランザクションを検出します。
隠れたネットワークを検出: ネイティブ集計パイプラインを使用して、エンティティ間のマルチホップ関係をトラバースし、金銭フローを追跡して不審なネットワークを特定します。
ファジーテキストとセマンティック検索を組み合わせる:
$rankFusionを使用して重み付けされたランキングで Atlas Search と Atlas Vector Search の結果を結合し、オンボーディングと調査中に最も関連性の高いエンティティの一致を表示します。LLM の統制と埋め込み戦略を適用してコンプライアンスを自動化する: ドメインに適した埋め込みモデルを選択し、数値リスク機能を説明可能なルールに分割して、LLM ガイドライン(プロンプトテンプレート、ガードレール、ロギング)を強制します。これらのパターンを使用して、リスク分類、調査の概要、ケースレポートを生成するとともに、すべての入力と出力を MongoDB に保存して透明性があり、監査可能な AI を実現します。
作成者
Luis Pazmino Diaz, MongoDB
Mehar Grewal、MongoDB
Andrea Alaman Calderon, MongoDB