Learn the "why" behind slow queries and how to fix them in our 2-Part Webinar.
Register now >
Docs Menu
Docs Home
/

MongoDB Atlas를 활용한 금융 범죄 대응

사용 사례: 인공지능, 지능형 검색, 단일 보기

산업: 금융 서비스

제품: MongoDB Atlas, MongoDB Atlas 검색, MongoDB Atlas Vector Search, MongoDB Atlas Stream Processing

파트너: Anthropic, AWS

이 솔루션은 MongoDB의 금융 범죄 예방 역량을 보여줍니다. 벡터 임베딩, $rankFusion 하이브리드 검색을 통한 정교한 엔터티 해결, LLM 기반 위험 분류 및 케이스 생성, $graphLookup를 통한 관계 네트워크 탐색, 시스템 다운타임 없이 업데이트되는 동적 위험 모델을 사용한 실시간 트랜잭션 검사.

금융 범죄 대응 플랫폼
클릭하여 확대

그림 1. MongoDB Atlas를 활용한 금융 범죄 대응 플랫폼

그림 1은 금융 범죄 대응 플랫폼 'ThreatSight 360'의 개략적인 개요를 보여주며, 다음과 같은 주요 역량에 중점을 둔 엔드투엔드 엔티티 해결 및 금융 범죄 대응 워크플로를 설명합니다.

  • 사기 탐지 흐름: 엔드-투-엔드 실시간 파이프라인을 보여줍니다. 트랜잭션 시뮬레이터는 사기 시나리오를 실행하기 위한 가상 이벤트를 생성합니다. 그러면 사기 탐지 엔진이 AWS Bedrock을 통해 고객 프로필 데이터로 각 트랜잭션을 강화하고, 규칙을 적용하고, 벡터 검색을 수행하고, 임베딩을 생성합니다. 위험 모델 엔진은 MongoDB 변경 스트림을 사용하여 실시간으로 업데이트되는 위험 모델을 관리하여 의사 결정에 항상 최신 위험 로직이 반영되도록 지원합니다.

  • 검색 및 엔터티 확인: 퍼지 텍스트 기반 일치(이름, 주소, 식별자)에는 MongoDB Atlas Search를 사용하고, 의미 유사성에는 MongoDB Atlas Vector Search를 사용합니다. 둘 다 병렬로 실행하여 결과를 $rankFusion과 병합하여 각 엔터티에 대한 단일 순위 후보 목록을 생성합니다.

  • 네트워크 분석 및 그래프 탐색: 명시적 관계와 추론된 관계를 전용 컬렉션에 저장합니다. $graphLookup 및 집계 파이프라인을 사용하여 멀티홉 네트워크를 순회하고, 숨겨진 링크를 발견하며, 연결 지표로 항목 컨텍스트를 보강합니다.

  • AI 지원 위험 평가: 항목 프로필, 트랜잭션 내역, 검색 일치, 네트워크 컨텍스트를 AWS Bedrock Claude-3 Sonnet과 같은 LLM용 프롬프트로 패키지화합니다. 이 모델은 위험 지표를 평가하고, 근거를 설명하며, 기관의 정책 및 위험 임계값에 따라 후속 조치를 추천합니다.

  • 사례 관리 및 보고: 사례 파일, 분석가 노트, LLM으로 생성된 내러티브 및 감사 추적을 MongoDB 문서로 저장합니다. 이를 통해 오탐을 줄이고 분석을 수행할 수 있으며, 컴플라이언스 팀, 내부 감사 및 규제 기관을 위한 일관되고 쿼리 가능한 기록을 생성할 수 있습니다.

이 솔루션은 엔드 투 엔드 엔터티 해결 및 금융 범죄 대응 워크플로를 함께 구현하는 네 가지 핵심 모듈로 구성됩니다.

목적: 벡터 검색을 사용한 시맨틱 사기 패턴 탐지

  • 명시적인 규칙과 일치하지 않더라도 알려진 사기 패턴처럼 행동하는 트랜잭션을 식별하기위해 MongoDB Atlas Vector Search를 사용합니다.

  • 각 트랜잭션의 질적 및 행동적 측면에서 임베딩을 생성합니다. 예를 들면 다음과 같습니다.

    • 판매자 카테고리 및 설명

    • 채널 및 장치 핑거프린트

    • IP 범위 및 ASN 정보

    • 시간적 패턴(예: 하루 중 시간대별 순서 또는 세션 행동)

    • 서술 필드나 자유 텍스트 노트(해당 시 포함)

  • 이 1536차원 임베딩을 운영 데이터가 포함된 트랜잭션 문서에 저장하세요.

  • 원금액, 잔액 변동, 단순 거래 빈도 카운터와 같은 신호 강도가 높은 수치형 특성은 임베딩에 포함하지 말고, 규칙 기반 모델이나 스코어카드 모델로 평가하세요. 이러한 분리를 통해 다음과 같은 작업을 수행할 수 있습니다.

    • Vector Search를 활용해 단순 임계값이나 규칙을 넘어서는 의미적으로 유사한 행위를 찾아냅니다.

    • 결정론적 규칙과 위험 모델을 사용하여 숫자 제한과 규제 제약을 시행합니다.

  • 새 트랜잭션을 검사할 때 임베딩을 생성하고$vectorSearch로 MongoDB Atlas를 쿼리합니다.

    • 시스템은 의미적으로 유사한 거래를 반환하며, 정적 규칙을 회피하더라도 과거 사기 패턴과 행동 면에서 유사한 거래까지 포함합니다.

    • 벡터 유사도 점수와 수치 기반 위험 점수를 결합해 통합된 위험 의사결정 파이프라인을 구축합니다.

목적: Change Streams를 통한 실시간 위험 인텔리전스

MongoDB 변경 스트림을 사용하여 위험 모델, 컴플라이언스 규칙 또는 관심 목록이 변경될 때 즉시 알림을 받을 수 있습니다. 폴링을 하거나 임시 캐시 무효화에 의존하는 대신, 업데이트를 사기 탐지 및 사례 관리 서비스에 직접 스트리밍할 수 있습니다.

분석가가 새로운 위험 모델을 활성화하면 모든 트랜잭션 검사 엔진이 밀리초 이내에 변경 사항을 수신해 업데이트된 규칙을 수신 트래픽에 적용합니다. 이를 통해 사기 트랜잭션이 감지되기 전에 처리될 수 있도록 허용하는 배치 지연이 제거됩니다.

위험 모델이나 구성 컬렉션에서 Change Streams를 열면 MongoDB는 모든 삽입, 업데이트 또는 교체 작업을 애플리케이션으로 푸시합니다. 재개 토큰을 사용하면 서비스 재시작 또는 네트워크 장애 후 정확한 중단 시점부터 처리를 다시 시작하여 업데이트를 놓치지 않을 수 있습니다.

금융 범죄 대응 플랫폼
클릭하여 확대

그림 2. Change Streams, 벡터 검색 및 위험 모델을 포함한 실시간 사기 탐지 파이프라인

이 모듈의 주요 목적은 두 가지입니다.

목적: 하이브리드 검색을 통한 AI 기반 엔터티 해결

MongoDB의 $rankFusion 연산자를 사용하여 엔터티 온보딩 또는 조사 중 여러 검색 전략을 결합합니다. 퍼지 텍스트 일치를 위해 Atlas Search를 실행하고, 시맨틱 유사성을 위해 Atlas Vector Search를 병렬로 실행합니다. $rankFusion은 결과 세트를 병합하고 텍스트 유사성과 임베딩의 관련성을 결합하여 항목의 순위를 지정합니다.

상위 후보의 경우 $graphLookup을 사용하여 관계 및 트랜잭션 네트워크를 탐색합니다. MongoDB는 엔터티 연결, 트랜잭션 패턴, 공유 식별자 및 위험 지표를 포함한 네트워크 컨텍스트를 단일 집계 파이프라인으로 반환합니다. 이렇게 하면 여러 시스템을 쿼리하거나 비용이 많이 드는 조인을 수행할 필요가 없습니다.

엔터티 데이터, 검색 결과, 네트워크 분석을 LLM(예: AWS Bedrock Claude-3 Sonnet)에 제공하여 AI 지원 위험 분류를 수행합니다. 모델은 컴플라이언스 플래그, 관계 패턴, 행동 지표, 감시 목록 일치 여부를 평가해 신뢰도 점수와 권장 조치를 포함한 위험 평가를 생성합니다.

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을 통한 사례 관리

플랫폼은 문서 모델의 유연성을 활용하는 세 개의 MongoDB 컬렉션을 중심으로 합니다.

  • 엔터티 컬렉션: 개인 및 조직에 대한 데이터를 완전한 단일 보기 고객 프로필과 함께 저장합니다. 각 문서에는 식별 데이터, 문의 정보, KYC 속성, 위험 평가, 행동 분석 및 벡터 임베딩이 집계됩니다. 중첩된 문서는 트랜잭션 패턴, 디바이스 지문, 위치 기록을 캡처하여 여러 시스템에 걸쳐 가입하지 않아도 각 고객을 전체적으로 파악할 수 있습니다. 스키마 마이그레이션 없이 새 위험 요소 또는 데이터 소스를 추가할 수 있습니다.

  • 트랜잭션 컬렉션: 판매자 세부 정보, 위치 데이터 (GeoJSON 포인트), 장치 정보 및 위험 평가가 포함된 금융 트랜잭션을 기록합니다. 각 트랜잭션 문서는 전체 컨텍스트와 함께 독립적이므로 조인 없이 지리 공간적 쿼리 및 패턴 분석을 수행할 수 있습니다.

  • 위험 모델 컬렉션: 위험 평가 모델을 버전이 지정된 문서로 보관합니다. 각 모델에는 위험 요인, 가중치, 임계값 및 성과 지표가 포함됩니다. MongoDB 변경 스트림은 모델이 활성화되거나 업데이트될 때 서비스에 알리므로, 새로운 위험 로직을 즉시 배포할 수 있습니다.

설계는 내장된 참조와 전용 relationships 컬렉션을 혼합하여 관계를 모델링합니다.

  • 엔터티 문서는 connected_entities 배열에 관련 엔터티에 대한 참조를 포함할 수 있습니다.

  • 트랜잭션 문서는 엔터티에 연결된 customer_id 필드를 저장합니다.

  • entity_relationships 컬렉션은 신뢰도 점수, 관계 유형 및 감사 기록을 포함한 명시적 관계를 저장합니다.

이 패턴을 사용하면 새로운 관계 유형이 등장할 때마다 스키마를 유연하게 유지하는 동시에 $graphLookup을 사용하여 그래프를 효율적으로 탐색할 수 있습니다.

Atlas 검색 인덱스를 사용하여 엔터티 해결 및 조사 워크플로를 지원합니다.

  • 실시간 이름 제안을 위해 name.full에서 엣지 n–그램(2~15자)을 사용하여 자동 완성을 구성합니다.

  • entityType, nationality, residency, riskAssessment.overall.level에 string 패싯을 구성하여 검색 결과를 필터합니다.

엔터티 및 행동 패턴 매칭을 위해 1536차원 벡터에 코사인 유사도를 설정하여, 임베딩 필드에 Atlas Vector Search 인덱스를 구성해 시맨틱 유사도 매칭을 활성화합니다. 식별자 데이터와 행동 패턴에 대해 별도의 임베딩을 생성하여 특정 사용 사례를 대상으로 할 수 있습니다.

운영 워크로드에 표준 인덱스 사용:

  • 조회 및 범위 쿼리를 위해 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 구성과 프로덕션 배포서버 지침이 포함되어 있습니다.

1
  1. Python 3.10+, Node.js 18+ 및 의존성 관리를 위한 Poetry를 설치합니다.

  2. Atlas 시작하기 의 단계에 따라 Atlas 클러스터 만들고 네트워크 액세스 구성합니다.

  3. LLM 기반 임베딩 및 위험 분류를 위해 AWS Bedrock 액세스를 요청하거나 대체 임베딩 제공자를 구성합니다.

  4. fsi-aml-fraud-detection 리포지토리를 GitHub에서 복제하세요.

2

컬렉션에 Atlas Search와 Atlas Vector Search 인덱스를 생성합니다. Atlas 검색 탭에서:

  1. entities 컬렉션에 entity_resolution_search 인덱스를 생성합니다.

  2. autocomplete 토큰화를 name.full에서 엣지 n-그램과 2~15자로 구성합니다.

  3. entityType, nationality, residency, riskAssessment.overall.level에 대해 string 또는 stringFacet 필드를 구성합니다.

  4. 각 컬렉션에 entity_vector_search_indextransaction_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"
}
}
}
}
}
}
3
  1. env 파일을 MongoDB 연결 문자열 과 구성 값으로 만듭니다.

  2. 다음 명령을 실행하여 종속성을 설치합니다.

    poetry install
    npm install
  3. 서비스를 시작한 후 http://localhost:3000에서 웹 인터페이스에 액세스합니다.

  4. docs 디렉토리에서 Jupyter 노트북을 사용하여 고객 프로필, 트랜잭션, 엔터티 네트워크, 벡터 임베딩과 같은 합성 테스트 데이터를 생성합니다.

MongoDB의 금융 범죄 탐지를 위한 6가지 주요 역량:

  • 위협이 진화할 때 스키마 마이그레이션 제거: 위험 요소, 행동 지표 또는 컴플라이언스 플래그를 테이블 변경 작업이나 다운타임 없이 문서에 추가할 수 있습니다.

  • 변경 스트림을 통해 실시간으로 트랜잭션 처리: 위험 모델이나 관심 목록이 업데이트되면 즉시 알림을 수신하고, 배치 지연이나 캐시 무효화 없이 검사 엔진에 새로운 규칙을 적용합니다.

  • 벡터 검색으로 정교한 사기 패턴 탐지: 행동 임베딩 전반에 걸쳐 시맨틱 유사성을 사용하여 규칙 기반 탐지를 우회하는 경우에도 알려진 사기와 유사한 트랜잭션을 탐지합니다.

  • 숨겨진 네트워크 발견: 네이티브 집계 파이프라인을 이용해 엔터티 간 멀티홉 관계를 탐색하고, 자금 흐름을 추적하며, 의심스러운 네트워크를 노출합니다.

  • 퍼지 텍스트와 시맨틱 검색 결합: $rankFusion을 사용하여 Atlas Search와 Atlas Vector Search 결과를 가중 순위로 병합하여 온보딩 및 조사 중 가장 관련성 높은 엔터티 일치를 표시합니다.

  • 컴플라이언스를 자동화하기 위해 관리된 LLM 및 임베딩 전략 적용: 도메인에 적절한 임베딩 모델을 선택하고, 수치 기반 위험 특성은 설명 가능한 규칙으로 분리하며, LLM 가이드라인(프롬프트 템플릿, 가드레일, 로깅)을 적용합니다. 이러한 패턴을 사용하여 위험 분류, 조사 요약, 사례 보고서를 생성하는 동시에 모든 입력과 출력을 MongoDB에 저장하여 투명하고 감사 가능한 AI를 구현할 수 있습니다.

  • Luis Pazmino Diaz, MongoDB

  • Mehar Grewal, MongoDB

  • Andrea Alaman Calderon, MongoDB

돌아가기

카드 사기 탐지 솔루션

이 페이지의 내용