行业: 金融服务
产品: MongoDB Atlas、MongoDB Atlas Search、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 文档形式存储。此举可降低误报率、支持数据分析,并为合规团队、内部审计人员及监管机构创建统一、可查询的记录。
参考架构
该解决方案由四个核心模块组成,共同实现端到端实体解决和金融犯罪防控工作流程:
交易监控和风险评分引擎
用途:使用向量搜索进行语义欺诈模式检测
使用 MongoDB Atlas Vector Search 来识别行为类似于已知欺诈模式的交易,即使它们不匹配明确的规则。
从每笔交易的定性和行为方面生成嵌入,例如:
商户类别及说明
渠道和设备指纹
IP 范围和 ASN 信息
时间模式,如一天中的时间序列或会话行为
叙述性字段或自由文本注释(如适用)
将这些 1536 维嵌入存储在保存操作数据的同一交易文档中。
将高信号数值型特征(如原始金额、余额变动、简易交易频率计数器等)保留在嵌入向量之外,并采用基于规则或评分卡模型对其进行评估。通过这种分离,您可以:
使用向量搜索来发现跨越简单阈值或规则的语义相似行为。
使用确定性规则和风险模型来实施数值限制和监管约束。
筛查新交易时,生成嵌入并使用
$vectorSearch查询 MongoDB Atlas。该系统返回语义相似的交易,包括那些规避静态规则但在行为上与先前欺诈行为相似的交易。
将向量相似度评分与数值风险评分相结合,创建统一的风险决策管道。
风险模型管理
用途:基于 Change Streams 的实时风险情报
使用 MongoDB 变更流,可在风险模型、合规规则或监控列表发生变更时接收即时通知。将更新信息直接流式传输至您的欺诈检测与案例管理服务中,无需轮询或依赖临时性缓存失效机制。
当分析师激活新的风险模型时,所有交易筛选引擎都会在几毫秒内收到更改,并对输入流量应用更新规则。这样就可以消除批处理延迟的情况,避免欺诈性事务在检测前被清除。
针对风险模型或配置集合开启变更流游标,MongoDB 会将每项插入、更新或替换操作实时推送至您的应用程序。利用恢复令牌,可在服务重启或网络故障后从中断的精确位置重新启动处理流程,确保不会遗漏任何更新。
图 2. 借助 Change Streams、向量搜索和风险模型构建实时欺诈检测管道
实体入驻和案例管理
该模块有两个主要用途:
目的:基于混合搜索的 AI 驱动实体解析
在实体入驻或调查过程中,可使用 MongoDB 的 $rankFusion 操作符来整合多种搜索策略。并行运行 Atlas Search(用于模糊文本匹配)和Atlas 向量搜索(用于语义相似度分析),$rankFusion会对结果集进行合并,并根据文本相似度与嵌入向量综合相关性对实体进行排序。
针对排名靠前的候选实体,可使用 $graphLookup 遍历其关系网络和交易网络。MongoDB 通过单一聚合管道返回网络上下文信息,包括实体关联关系、交易模式、共享标识符及风险指标等。此方法避免了跨多系统查询或执行高开销的连接操作。
将实体数据、搜索结果及网络分析结果输入至如 AWS Bedrock Claude 3 Sonnet 这类 LLM,以实现 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 集合为中心,充分利用了 document model 的灵活性:
实体集合:存储个人与组织数据,构建完整、统一的客户视图画像。每份文档整合身份信息、联系方式、客户尽职调查属性、风险评估结果、行为分析数据及向量嵌入向量。嵌套文档记录交易模式、设备指纹和位置轨迹,无需跨系统关联即可全面掌握客户全貌。支持在不修改数据结构的情况下新增风险因子或数据源。
交易集合:记录金融交易信息,内嵌商户详情、位置数据(以 GeoJSON 点格式存储)、设备信息及风险评估结果。每笔交易文档独立承载完整上下文,支持无需关联查询即可直接进行地理空间检索与模式分析。
风险模型集合:以文档形式存储带版本控制的风险评估模型。每个模型涵盖风险因子、权重、阈值及性能指标等要素。当模型激活或更新时,MongoDB 变更流会向相关服务发送通知,确保新风险逻辑能够即时部署。
集合之间的关系
该设计通过嵌入式引用和专用relationships集合相结合的方式来建立关系模型:
实体文档可以在
connected_entities数组中嵌入对相关实体的引用。链接到实体的交易文档存储
customer_id字段。entity_relationships集合存储显式关系,包含置信度得分、关系类型和 Atlas 审核路径。
这种模式使用 $graphLookup 实现高效的图表遍历,同时在新的关系类型出现时保持模式的灵活性。
性能优化的索引策略
使用 Atlas Search 索引来支持实体解析和调查工作流程:
在
name.full上配置自动完成功能,使用边缘 n-grams (2-15 字符) 进行实时名称建议。在
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 存储库中的自述文件。该存储库包括容器化部署的Docker配置和生产部署说明。
先决条件和设置
安装 Python 3.10+、Node.js 18+ 和 Poetry 用于依赖管理。
创建 MongoDB Atlas M10 集群 并配置网络访问权限。
申请获取 AWS Bedrock 访问权限以使用基于 LLM 的嵌入向量与风险分类服务,或配置其他替代性嵌入向量提供商。
从 GitHub 克隆
fsi-aml-fraud-detection存储库。
配置 Atlas 搜索索引
为集合创建 Atlas Search 和 Atlas Vector Search 索引。在 Atlas Search 标签页中:
在
entities集合上创建一个名为entity_resolution_search的索引。在
name.full上配置基于边缘 n-gram 且字符长度范围为 2-15 的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" } } } } } }
启动应用程序
创建
env文件,其中包含您的 MongoDB 连接字符串和配置值。运行以下命令安装依赖项:
poetry install npm install 启动服务,然后通过
http://localhost:3000访问网络接口。使用
docs目录中的 Jupyter 笔记本生成综合测试数据,例如客户数据配置文件、ACID 事务、实体网络和支持嵌入。
关键要点
六项关键功能使 MongoDB 在金融犯罪侦查方面脱颖而出:
在威胁态势变化时无需修改数据结构:可直接在文档中添加风险因子、行为指标或合规标识,无需执行 ALTER TABLE 操作或中断服务。
借助变更流实现实时交易处理:当风险模型或监控名单更新时即时接收通知,无需处理批量延迟或缓存失效即可将新规则应用于筛查引擎。
利用向量检索识别复杂欺诈模式:通过行为嵌入间的语义相似性,检测与已知欺诈案例高度相似的交易,即使其绕过基于规则的检测机制。
发现隐藏网络:遍历实体之间的多跳关系,追踪资金流,并使用原生聚合管道揭露可疑网络。
结合模糊文本和语义搜索:使用
$rankFusion将 Atlas Search 和 Atlas Vector Search 结果合并,并进行加权排名,以在入驻和调查过程中显示最相关的实体匹配。应用受管理的 LLM 和嵌入策略,实现合规自动化:选择适合领域的嵌入模型,将数字风险功能分离为可解释的规则,并实施LLM指南(提示模板、护栏和日志记录)。使用这些模式来生成风险分类、调查摘要和案例报告,同时将所有输入和输出存储在 MongoDB 中,以实现透明、可审计的 AI。
作者
Luis Pazmino Diaz, MongoDB
Mehar Grewal,MongoDB
Andrea Alaman Calderon, MongoDB