Amazon Web Services ブログ

Amazon Neptune Analytics を用いた膨大なグラフデータ分析とベクトル検索の紹介

データサイエンティストやアプリケーション開発者が大量のグラフデータを迅速に分析できるようにする新しい分析データベースエンジン、Amazon Neptune Analytics の一般提供を開始しました。Amazon Neptune Analyticsを使えば、Amazon NeptuneまたはAmazon Simple Storage Service (Amazon S3)上のデータレイクからデータセットを素早くロードし、ほぼリアルタイムで分析タスクを実行することができます。

グラフデータは、多様なデータ領域内の複雑な関係やつながりを表現し、分析することを可能にします。一般的なアプリケーションとしては、ソーシャルネットワークがあり、コミュニティの特定、つながりの推奨、情報拡散の分析に役立ちます。サプライチェーン管理では、グラフは効率的なルート最適化やボトルネックの特定を容易にします。サイバーセキュリティでは、ネットワークの脆弱性を明らかにし、悪意のある活動のパターンを特定します。グラフデータはナレッジマネジメント、金融サービス、デジタル広告、ネットワークセキュリティに応用され、銀行取引におけるマネーロンダリングネットワークの特定やネットワークの脆弱性の予測などのタスクを実行します。

2018年5月にAmazon Neptuneのサービスが開始してから、何千ものお客様が、グラフデータを保存し、グラフの特定のサブセットを更新および削除するサービスを採用しています。しかし、洞察を得るためにデータを分析するには、多くの場合、グラフ全体をメモリに読み込む必要があります。たとえば、不正行為の検出を目的とする金融サービス会社では、過去の口座取引をすべて読み込んで関連付ける必要がある場合があります。

一般的なグラフアルゴリズムの実行など、広範なグラフデータセットの分析を行うには、専用のツールが必要です。個別の分析ソリューションを利用するには、処理対象のデータを転送するための複雑なパイプラインを構築する必要がありますが、これは操作が難しく、時間がかかり、エラーも発生しやすくなります。さらに、既存のデータベースやデータレイクからグラフ分析ソリューションに大規模なデータセットを読み込むには、数時間から数日かかることもあります。

Amazon Neptune Analytics は、フルマネージド型のグラフ分析エクスペリエンスを提供します。インフラストラクチャの面倒な作業を処理してくれるため、お客様はクエリやワークフローなどの課題の解決に集中できます。Amazon Neptune Analytics は、グラフのサイズに応じてコンピューティングリソースを自動的に割り当て、すべてのデータをメモリにすばやく読み込んで、クエリを数秒で実行します。最初のベンチマークでは、Neptune Analytics が既存のAWSソリューションよりも最大80倍高速にAmazon S3 からデータをロードできていることがわかりました。

Neptune Analytics は、15種類のアルゴリズムに対応する5種類のアルゴリズムファミリーをサポートしています。それぞれに複数のバリエーションがあります。たとえば、Pathfinding(経路探索)、クラスタリング、重要なデータの特定 (中心性)、類似性の定量化のためのアルゴリズムを提供しています。 Pathfinding(経路探索)アルゴリズム は、サプライチェーン最適化のためのルートプランニングなどのユースケースに使用されます。ページランク などの 中心性アルゴリズム は、最も影響力のある売り手をグラフで特定します。 連結成分, クラスタリング、類似性アルゴリズムなどのアルゴリズムを不正検出のユースケースに使用して、接続されたネットワークが友人のグループなのか、あるいは連携した詐欺師の集まりによって形成された詐欺の輪(Fraud Ring)なのかを判断できます。

Amazon Neptune Analytics は、以下を使用してグラフアプリケーションの作成を容易にします。 openCypher は現在広く採用されているグラフクエリ言語の1つです。開発者、ビジネスアナリスト、データサイエンティストは、openCypherのSQLに着想を得た構文を高く評価しています。グラフクエリを作成するのに馴染みがあり構造化されているからです。

Amazon Neptune Analyticsの利用開始手順

AWS News Blogでいつも行っているように、その手順をお見せしましょう。このデモでは、AWS Management Console から、まず Neptune に移動します。 左側のナビゲーションペインの「Analytics」セクションから「Graph」を選択します。 それから 「Create graph」を選択します。

グラフの作成ページで、グラフ解析データベースエンジンの詳細情報を入力します。
各パラメータの詳細はここでは割愛します。

ほとんどの場合、セキュリティの観点から、グラフはVPCの境界からのみ利用できるようにすることがほとんどです。パブリックアクセスを許可しないようにしてください。また、アカウントVPCネットワーク内のマシンやサービスからのプライベートアクセスを許可するために、Privateエンドポイントも作成します。

ネットワーク・アクセス・コントロールに加え、ユーザーがグラフにアクセスするには適切なIAMパーミッションが必要です。

最後に、ベクトル検索を有効にして、データセット内の埋め込みを使った類似性検索を実行します。ベクトルの次元は、埋め込みを生成するために使用する大規模言語モデル(LLM)などに依存します。

準備ができたら、グラフの作成を選択します。数分後、グラフが表示されるはずです。

その後「Connectivity & security」の「Endpoint」を確認してください。これは後でアプリケーションからグラフにアクセスするときに使う時のDNS名となります。

補足ですが、レプリカを作成することもできます。レプリカは、別のアベイラビリティ・ゾーンにあるグラフのウォーム・スタンバイ・コピーです。高可用性を実現するために、1つまたは複数のレプリカを作成することもできます。デフォルトではレプリカを1つ作成しますが、可用性の要件によってはレプリカを作成しないこともできます。

グラフデータに対するビジネスクエリ

Amazon Neptune Analytics グラフが利用できるようになったので、データをロードして分析してみよう。このデモでは、あなたが金融業界で働いていると想像してください。

米国証券取引委員会(SEC)から入手したデータセットがあります。このデータセットには、資産1億ドル以上の投資家が保有するポジションのリストが含まれています。以下は、このデモで使用するデータセットの構造を説明するための図です。

ある投資会社(仮に “Seb’s Investments LLC “とします)の保有ポジションをもっとよく理解したいとします。上位5社の保有銘柄は何か、同じ会社で10億ドル以上を保有している会社は他にあるか。また、Seb’s Investments LLCと同じようなポートフォリオを持つ投資会社が他にあるのか知る必要があるとします。

分析を始めるために、AWS Management ConsoleNeptuneセクションでJupyterノートブックを作成します。ノートブックでは、まず分析エンドポイントを定義し、S3バケットからデータセットをロードします。1,700万レコードをロードするのに18秒しかかかりません。

それから、openCypherのクエリを使ってデータセットを探索します。まずはパラメータを定義します。

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

まず、Seb’s Investments LLCの今四半期の持ち株上位5銘柄と、同じ会社で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)

次に、”Seb’s Investments LLC “と同じような持ち株を持つ他の上位5社を知りたいです。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ノードを識別します。次に、Amazon Neptune Analytics のカスタムしたベクトル類似性検索アルゴリズムを、Holderノードの埋め込みプロパティに利用し、グラフ内の類似する他のノードを検索します。結果は、正の類似性スコアを持つものだけを含むようにフィルタリングされ、クエリは最終的に最大5つの関連するノードの名前を返します。

利用リージョンと価格

Amazon Neptune Analyticsは、2023年11月30日より、米国東部(オハイオ州、バージニア州)、米国西部(オレゴン州)、アジア太平洋地域(シンガポール、東京)、欧州(フランクフルト、アイルランド)の7つのAWSリージョンでご利用いただけます。

利用料金は従量制で、定期的なサブスクリプションや1回限りのセットアップ料金は発生しません。
Amazon Neptune Analyticsの価格は、メモリに最適化されたNeptuneキャパシティ・ユニット(m-NCU)の構成に基づきます。各m-NCUは、1時間の計算およびネットワーク容量と1GiBのメモリに相当します。128m-NCUから始まり、最大4096m-NCUまでの構成を選択できます。m-NCUに加えて、グラフ・スナップショットにはストレージ料金がかかります。

詳しくは、Amazon Neptune の価格ページ をご覧ください。

Amazon Neptune Analyticsは、大規模なグラフデータセットを分析するための新しい分析データベースエンジンです。不正検知・防止、デジタル広告、サイバーセキュリティ、輸送ロジスティクス、バイオインフォマティクスなどのユースケースにおいて、深い洞察をより迅速に発見することができます。

Amazon Neptune Analyticsを今すぐ使ってみよう

AWS Management Console にログインして、Amazon Neptune Analyticsを是非試してみてください。

著者について

Sébastien Stormacq

Sebは、80年代半ばに初めてCommodore 64に触れて以来、コードを書き続けています。彼は、情熱、熱意、顧客志向、好奇心、創造性を駆使して、AWSクラウドの価値を引き出すためにビルダーを鼓舞します。ソフトウェア・アーキテクチャ、開発者ツール、モバイル・コンピューティングに興味があります。

本記事は 2023/11/30に投稿された Analyze large amounts of graph data to get insights and find trends with Amazon Neptune Analytics を翻訳した記事です。翻訳はソリューションアーキテクトの木村 達也が行いました。