行业: 金融服务
产品: MongoDB Atlas、 MongoDB Atlas Search、 MongoDB Atlas Vector Search、 MongoDB Atlas Stream Processing
合作伙伴: 人类,AWS
解决方案概述
该解决方案展示了 MongoDB 预防金融犯罪的功能。使用向量嵌入进行实时ACID 事务筛选,使用 $rankFusion 混合搜索进行复杂的实体解析,由 LLM 提供支持的风险分类和案例生成,使用 $graphLookup关系网络遍历,以及在不停机的情况下更新的动态风险模型。
图 1。采用MongoDB的金融犯罪缓解平台
图 1 高度概述了缓解金融犯罪平台“ThreatSight 360”,说明了端到端实体解析和缓解金融犯罪工作流程,该工作流程侧重于以下关键功能:
欺诈检测流程:演示端到端的实时管道。事务模拟器会生成合成事件来模拟欺诈场景。然后,欺诈检测引擎使用客户档案数据丰富每笔ACID 事务,应用规则,执行向量搜索,并通过 AWS 基岩生成嵌入。风险模型引擎管理使用MongoDB变更流实时更新的风险模型,以确保决策始终反映最新的风险逻辑。
搜索和实体解析:使用MongoDB Atlas Search 进行基于文本的模糊匹配(名称、地址、标识符),并使用MongoDB Atlas Vector Search 进行语义相似性。并行运行两者,并将结果与
$rankFusion合并,为每个实体生成一个排名候选列表。网络分析和图表遍历:将显式和推断的关系存储在专用集合中。使用
$graphLookup和聚合管道遍历多跳网络,发现隐藏链接,并通过连接指标丰富实体上下文。AI辅助风险评估:将实体配置文件、ACID 事务历史记录、搜索匹配和网络上下文打包到 LLM 的提示中,例如 AWS 基岩 Claude-3 Sonnet。该模型评估风险指标,解释理由,并根据机构的政策和风险阈值建议下一步最佳行动。
案例管理和报告:将案例文件、分析师说明、LLM 生成的叙述和Atlas 审核跟踪存储为MongoDB文档。这减少了误报,支持分析,并为合规团队、内部审核员和监管机构创建一致、可查询的记录。
参考架构
该解决方案由四个核心模块组成,它们共同实现端到端实体解析和金融犯罪缓解工作流程:
事务监控和风险评分引擎
目的:使用 Vector Search 进行语义欺诈模式检测
使用MongoDB Atlas Vector Search 识别行为类似于已知欺诈模式的事务,即使它们与显式规则不匹配。
从每笔ACID 事务的定性和行为方面生成嵌入,例如:
商户类别和描述
通道和设备指纹
IP范围和 ASN 信息
时间模式,例如时间序列或会话行为
叙述字段或自由文本注释(如果适用)
将这些 1536 维嵌入存储在保存操作数据的同一ACID 事务文档中。
将高信号数字特征(例如原始金额、余额变化和简单的速度计数器)保留在嵌入之外,并使用基于规则或记分卡模型对其进行评估。这种分离可以让您:
使用向量搜索来显示跨简单阈值或规则的语义相似行为。
使用确定性规则和风险模型来实施数值限制和监管约束。
筛选新ACID 事务时,生成嵌入并使用
$vectorSearch查询MongoDB Atlas 。系统返回语义相似的交易,包括规避静态规则但行为类似于先前欺诈的交易。
将向量相似度分数与数字风险分数相结合,创建统一的风险决策管道。
风险模型管理
用途:使用 Change Streams 的实时风险智能
使用MongoDB变更流,在风险模型、合规规则或关注列表发生变更时接收即时通知。将更新直接流式传输到欺诈检测和案例管理服务中,而不是轮询或依赖临时缓存失效。
当分析师激活新的风险模型时,所有ACID 事务筛选引擎都会在几毫秒内收到更改,并将更新的规则应用传入流量。这消除了批处理延迟,而批处理延迟会导致欺诈性交易在检测之前清除。
在风险模型或配置集合上打开变更流游标, MongoDB会将每个插入、更新或替换操作推送到应用程序。使用恢复令牌可在服务重启或网络故障后从确切的中点重新启动处理,这样您就不会错过任何更新。
图 2。具有变更流、向量搜索和风险模型的实时欺诈检测管道
实体载入和案例管理
该模块有两个主要用途:
用途:使用混合搜索进行AI驱动的实体解析
在实体载入或调查期间,使用 MongoDB 的 $rankFusion操作符组合多个搜索策略。并行运行Atlas Search进行模糊文本匹配,并并行运行Atlas Vector Search进行语义相似性。 $rankFusion 会合并结果集,并根据文本相似度和嵌入的组合相关性对实体进行排名。
对于顶级候选,使用 $graphLookup 遍历关系和ACID 事务网络。 MongoDB在单个聚合管道中返回网络上下文,包括实体连接、ACID 事务模式、共享标识符和风险指示器。这样可以避免查询多个系统或执行成本高昂的连接。
将实体数据、搜索结果和网络分析输入到 LLM(例如 AWS 基岩 Claude-3 Sonnet)中,以进行AI辅助风险分类。该模型评估合规标志、关系模式、行为指标和关注列表匹配,以生成具有置信度分数和建议操作的风险评估。
使用法学硕士生成的调查摘要在MongoDB中自动创建案例文档。这样可以减少手动编写报告的次数,并提高合规文档的一致性。
用途:使用图遍历进行网络发现
调查人员经常需要追踪洗钱网络和实体之间隐藏的联系。使用 MongoDB 的 $graphLookup聚合阶段直接在操作数据库中执行此网络分析,无需单独的图表存储。
从可疑实体开始,递归遍历业务伙伴、共享地址、ACID 事务对方或公司结构之间的关系。每次遍历都会返回完整的实体文档,其中包含嵌入式行为分析、风险评分和合合规标志。
在遍历期间按置信度得分、关系类型或风险阈值筛选关系。
在几毫秒内发现跨多个跃点的网络,然后将图表结果与标准聚合操作(例如筛选、排序和分组)相结合。
// 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 属性、风险评估、行为分析和向量嵌入。嵌套文档可捕获ACID 事务模式、设备指纹和位置历史记录,让您可以全面了解每个客户,而无需跨多个系统加入。您可以添加新的风险因素或数据源,而无需迁移模式。
交易集合:记录带有嵌入式商户详细信息、位置数据(作为GeoJSON点)、设备信息和风险评估的金融交易。每个ACID 事务文档都是独立的,具有完整的上下文,无需连接即可进行地理空间查询和模式分析。
风险模型集合:将版本化的风险评估模型维护为文档。每个模型都包括风险因素、权重、阈值和性能指标。当模型激活或更新时, MongoDB变更流会通知服务,以便立即部署新的风险逻辑。
集合之间的关系
该设计通过嵌入式引用和专用 relationships集合的组合来对关系进行建模:
实体文档可以嵌入对
connected_entities数组中相关实体的引用。事务文档存储链接到实体的
customer_id字段。entity_relationships集合存储与置信度分数、关系类型和Atlas 审核跟踪的显式关系。
这种模式支持使用 $graphLookup 进行高效的图表遍历,同时在新的关系类型出现时保持模式的灵活性。
提高性能的索引策略
使用Atlas Search索引支持实体解析和调查工作流程:
在
name.full上使用边缘 n-gram(2–15 字符)配置自动完成功能,以实现实时名称建议。在
entityType、nationality、residency和riskAssessment.overall.level上配置字符串分面以过滤搜索结果。
在嵌入字段上使用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配置以及用于生产部署的说明。
先决条件和设置
安装Python3.10 +、Node.js18 + 和 Poetry 以进行依赖项管理。
创建MongoDB Atlas M10 集群并配置网络访问权限。
请求 AWS 基岩访问权限基于 LLM 的嵌入和风险分类,或配置替代的嵌入提供商。
fsi-aml-fraud-detection从 GitHub 克隆 存储库。
配置Atlas Search索引
在集合上创建Atlas Search和Atlas Vector Search索引。在Atlas Search标签页中:
在
entities集合上创建名为entity_resolution_search的索引。使用边缘 n 元语法和 2–15 字符在
name.full上配置autocomplete分词。为
entityType、nationality、residency和riskAssessment.overall.level配置string或stringFacet字段。在各自的集合上创建名为 和 的向量搜索索引。使用具有余弦相似度的
entity_vector_search_indextransaction_vector_index1536维度进行语义相似度匹配。
Atlas Search索引定义示例
{ "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 笔记本生成客户档案、交易、实体网络和向量嵌入等综合测试数据。
关键要点
MongoDB在金融犯罪检测方面的六大关键功能:
当威胁发展时,消除模式迁移:将风险因素、行为指标或合规标志添加到文档中,无需 ALTER TABLE 操作或停机。
使用变更流实时处理事务:在风险模型或关注列表更新时接收即时通知,应用新规则应用于筛选引擎,而不会出现批处理延迟或缓存失效的情况。
使用向量搜索查找复杂的欺诈模式:利用跨行为嵌入的语义相似性来检测类似于已知欺诈的交易,即使它们绕过了基于规则的检测。
发现隐藏网络:遍历实体之间的多跳关系,追踪资金流向,并使用原生聚合管道暴露可疑网络。
结合模糊文本和语义搜索:将Atlas Search和Atlas Vector Search结果合并,并使用
$rankFusion进行加权排名,以便在入门和调查期间显示最相关的实体匹配项。应用受管理的 LLM 和嵌入策略来自动合规:选择适合领域的嵌入模型,将数字风险特征分离为可解释的规则,并实施LLM 指南(提示模板、护栏和日志记录)。使用这些模式生成风险分类、调查摘要和案例报告,同时将所有输入和输出存储在MongoDB中,以实现透明、可审核的AI。