亚马逊AWS官方博客

借助 Amazon Neptune Analytics,分析大量图表数据以获取洞察信息并发现趋势



我很高兴地宣布,Amazon Neptune Analytics 正式推出,这是一款新的分析数据库引擎,助力数据科学家和应用程序开发者更加快速地分析大量图表数据。借助 Neptune Analytics,您现在可以快速从 Amazon NeptuneAmazon Simple Storage Service(Amazon S3)上的数据湖中快速加载数据集,近乎实时地运行分析任务,之后还可以选择终止图表。

图表数据可以表示和分析不同数据域中错综复杂的关系和联系。常见的应用场景包括社交网络,在该领域,图表可辅助识别社区、推荐人脉和分析信息传播情况。在供应链管理方面,图表有助于高效优化路由和识别瓶颈。在网络安全方面,图表可以揭示网络漏洞和恶意活动的模式。图表数据可用于知识管理、金融服务、数字广告和网络安全领域,执行各类任务,例如识别银行交易中的洗钱网络和预测网络漏洞。

Neptune 于 2018 年 5 月发布以来,数千位客户已经使用该服务来存储他们的图表数据,以及更新和删除特定图表子集。但是,在分析数据以获取洞察信息时,通常需要将整个图表加载到内存中。例如,一家旨在检测欺诈行为的金融服务公司可能需要加载和关联所有账户交易历史记录。

要分析大量的图表数据集,例如运行常见的图形算法,需要专门的工具。要使用单独的分析解决方案,需要创建复杂的管道来传输数据以供处理,这既难以操作、耗时,又容易出错。此外,要将大型数据集从现有数据库或数据湖加载到图表分析解决方案,可能需要数小时甚至数天的时间。

Neptune Analytics 提供完全托管的图表分析体验。它负责处理基础设施方面的繁重工作,让您能够集中精力通过查询和工作流程解决问题。Neptune Analytics 会根据图表大小自动分配计算资源,并快速将所有数据加载到内存中,以便在几秒钟内运行查询。我们的初始基准测试显示,相较于现有 AWS 解决方案,Neptune Analytics 从 Amazon S3 加载数据的速度最高是之前的 80 倍。

Neptune Analytics 支持 5 个算法系列,涵盖 15 种不同的算法,每种算法都有多个变体。例如,我们提供用于寻径、检测社区(集群)、识别重要数据(中心性)和量化相似度的算法。寻径算法适用于规划路径以优化供应链等使用案例。中心性算法(例如页面排名)可以识别图表中更具影响力的卖家。互联组件集群和相似度之类的算法可用于欺诈检测使用案例,以便确定互联网络是一群朋友,还是由一组有组织的欺诈者组成的欺诈团伙。

Neptune Analytics 助力使用 openCypher(目前广泛采用的一种图表查询语言)实现图表应用。开发者、业务分析师和数据科学家都喜欢 openCypher 的 SQL 启发型语法,认为这是一种熟悉且结构化的语言,适合编写图表查询。

我们来看看实际工作方式
一如既往,我们通过 AWS 新闻博客介绍一下工作方式。在本演示中,我首先在 AWS 管理控制台中导航到 Neptune。左侧导航窗格新增了分析部分。我选择图表,然后选择创建图表

Neptune Analytics – 创建图表 1

创建图表页面上,我输入我的图表分析数据库引擎的详细信息。我不会在此处详细说明每个参数;它们的名称不言自明。

Neptune Analytics – 创建图表 1

请注意允许公开,因为在绝大多数情况下,您希望图表仅在 VPC 边界内可用。我还会创建私有端点,允许通过我的账户 VPC 网络内的计算机和服务进行私密访问。

Neptune Analytics – 创建图表 2

除网络访问控制外,用户还需要有适当的 IAM 权限才能访问图表。

最后,我启用向量搜索,使用数据集中的嵌入进行相似度搜索。向量的维度取决于您用于生成嵌入的大型语言模型(LLM)。

Neptune Analytics – 创建图表 3

准备就绪后,我选择创建图表(此处未显示)。

几分钟后,我的图表就可用了。我记下连接和安全性下的端点。这是我稍后通过我的应用程序访问图表时要使用的 DNS 名称。

我还可以创建副本。副本是另一个可用区中图表的温备用副本。为实现高可用性,您可以决定创建一个或多个副本。默认情况下,我们会创建一个副本,而根据您的可用性要求,您可以选择不创建副本。

Neptune Analytics – 创建图表 3

基于图表数据的业务查询
既然 Neptune Analytics 图表已经可用,我们来加载和分析数据。在本演示的其余部分中,假设我从事金融行业。

我有一个从美国证券交易委员会(SEC)获得的数据集。该数据集包含资产超过 1 亿美元的投资者所持仓位的列表。下图说明了我在本演示中使用的数据集的结构。

Nuptune 图表分析 – 数据集结构

我想更好地了解一家投资公司(将其命名为“Seb’s Investments LLC”)所持的仓位。我想知道它持有的前五大股票是什么,还有谁在相同公司中持有超过 10 亿美元的股票。我还很想知道还有哪些投资公司拥有与 Seb’s Investments LLC 相似的投资组合。

为了开始分析,我AWS 管理控制台的“Neptune”部分创建 Jupyter notebook。在笔记本中,我首先定义我的分析端点并从 S3 桶加载数据集。仅需 18 秒即可加载 1700 万条记录。

Neptune Analytics – 加载数据

然后,我开始使用 openCypher 查询来探索数据集。我首先定义我的参数:

params = {'name': "Seb's Investments LLC", 'quarter': '2023Q4'}

首先,我想知道 Seb’s Investments LLC 在本季度持有的前五大股票是什么,还有谁在相同公司中持有超过 10 亿美元的股票。在 openCypher 中,它将在此后转换为查询。$name 参数的值为“Seb’s Investment LLC”,$quarter 参数的值为 2023Q4。

MATCH p=(h:Holder)-->(hq1)-[o:owns]->(holding)
WHERE h.name = $name AND hq1.name = $quarter
WITH DISTINCT holding as holding, o ORDER BY o.value DESC LIMIT 5
MATCH (holding)<-[o2:owns]-(hq2)<--(coholder:Holder)
WHERE hq2.name = '2023Q4'
WITH sum(o2.value) AS totalValue, coholder, holding
WHERE totalValue > 1000000000
RETURN coholder.name, collect(holding.name)

Neptune Analytics – 查询 1

然后,我想知道持股情况与“Seb’s Investments LLC”类似的另外五大公司。 我使用 topKByNode() 函数来执行向量搜索。

MATCH (n:Holder)
WHERE n.name = $name
CALL neptune.algo.vectors.topKByNode(n)
YIELD node, score
WHERE score >0
RETURN node.name LIMIT 5

该查询会识别名称为“Seb’s Investments LLC”的特定 Holder 节点。 然后,它对 Holder 节点的嵌入属性利用 Neptune Analytics 自定义向量相似度搜索算法,查找图表中其他类似的节点。结果经过筛选,仅包括相似度分数为正的节点,而且查询最后最多返回五个相关节点的名称。

Neptune Analytics – 查询 2

定价和可用性
Neptune Analytics 现已在以下七个 AWS 区域推出:美国东部(俄亥俄州、弗吉尼亚州北部)、美国西部(俄勒冈州)、亚太地区(新加坡、东京)和欧洲地区(法兰克福、爱尔兰)。

AWS 采用即用即付定价模式,按使用量收费,不收取定期订阅费或一次性安装费。

定价基于经过内存优化的 Neptune 容量单位(m-NCU)的配置。每个 m-NCU 对应一小时的计算和网络容量以及 1GiB 的内存。m-NCU 的配置范围介于 128 个与 4096 个之间。除 m-NCU 外,图表快照收取存储费用。

请阅读 Neptune 定价页面以了解更多详情

Neptune Analytics 是一个新的分析数据库引擎,用于分析大型图表数据集。它可以帮助您更快地为使用案例(例如欺诈检测和预防、数字广告、网络安全、运输物流和生物信息学)探索洞察信息。

开始使用
登录 AWS 管理控制台,试用 Neptune Analytics。

– seb