一个分析师盯着屏幕问了一句:哪些账户和那笔被标记的交易 T-9001 有关?接下来动手的不是人,是一个 AI 代理。它顺着账户、设备、IP 地址、交易这些关系往外跳了好几层,跑图算法,然后把结论摆回分析师面前。
![]()
这套东西叫 FraudTrace。它做的事情可以拆成三句话:在连起来的数据上行动,记住自己查过什么,并且把每一步都解释清楚。每个结果都会展示证据路径、背后跑过的 Cypher 查询、用到的记忆,以及它执行过的动作。
为什么非得是图
"谁和这笔交易的发送方共用一个设备,这些人又把钱打给谁?"这是一个典型的多跳问题。放在 SQL 里,它是一串必须提前规划好的 join。向量搜索擅长找相似的文本,但找不出"共用设备"这种关系。在图数据库里,代理直接顺着关系走就行。
作者把 FalkorDB 当成唯一存放状态的地方。欺诈图谱 fraud_data 里装着 Person、Account、Device、IPAddress、Merchant 和 Transaction 六类节点,规模是 5000 个账户和 5 万笔交易的合成数据。正常活动里埋了三种模式:一个欺诈团伙、一批傀儡账户,以及共用同一设备和地址的合成身份。答案键放在图外面,代理得自己去把模式挖出来。
给算法先修好路
FalkorDB 的算法在同类型节点之间的关系上效果最好,所以作者在图里派生出两种关系:PAID 表示账户之间的资金流动,LINKED 表示共用设备、IP 或地址的账户。有了这两条路,代理就能用上 algo.WCC 找簇(也就是欺诈团伙),用 algo.pageRank 和 algo.betweenness 给可疑账户和傀儡枢纽排序,用 algo.SPpaths 找两个账户之间的最短连接,再用有界路径查询检测资金环路。
记忆本身也是一张图。每个分析师有自己的一张 memory_ 图,里面是 Investigation、Finding、Entity 和 Feedback 四类节点。关于同一批实体的新发现会取代旧发现,但历史保留下来。分析师把某条发现标成误报之后,这些账户在后续调查里的风险分会下降。分析师之间看不到彼此的记忆,因为后端会注入分析师身份,模型没有选择权。
17 个工具,代理自己挑
全部 17 个工具由一个 MCP 服务器提供,分三类:读取类(画像、邻居、共用设备、社区、环路、最短路径)、记忆类、动作类(标记账户、冻结交易、开案)。代理自己发现工具、自己挑,没有硬编码的流程。
可解释性和安全靠几条硬规矩撑着。每个工具都返回它跑过的 Cypher 和碰过的子图,前端据此画出证据路径,可以一跳一跳回放整个调查。风险分不是模型的意见,它由图信号加上分析师反馈算出来,后端会覆盖模型提出的任何数字。自由形式的查询要过一道守卫,禁止写入,只读执行并带超时。动作类工具在没有从图里取到证据的情况下拒绝执行。
几条踩出来的经验
- 按算法来塑造图。派生 PAID 和 LINKED 让 FalkorDB 的算法真正可用,也让代理的查询保持简短。
- 别让大模型掌握那个数字。把评分放到模型外面算,结果稳定,也好解释。
- 免费档模型要小心伺候。作者用的是免费档,所以裁剪了工具返回结果以控制在 token 限制内,还针对限流加了重试。
- 隔离属于架构,不属于提示词。
技术栈是 FalkorDB、FastAPI、MCP Python SDK、一个带工具调用能力的 LLM,以及用 React 做的力导向图视图。代码和演示视频都已公开,项目出自 FalkorDB 与 WeMakeDevs 的 hackathon。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.