グラフデータベースの代表的な製品で、ノード・リレーションシップ・プロパティをネイティブなグラフストレージに格納し、Cypherクエリ言語で直感的にグラフパターンを検索できる。知識グラフ・推薦エンジン・不正検知・ネットワーク分析などの用途で広く採用されている。
Neo4jは、スウェーデンのNeo4j社が開発するオープンソースのネイティブグラフデータベースである。2007年の初版リリース以来、グラフデータベース市場でDB-Enginesランキング1位を維持し続けており、Airbnb、NASA、eBay、Walmart、UBS等の大手企業で本番稼働している。
リレーショナルデータベース(RDB)は表形式でデータを格納し、JOINで関連データを結合する。しかし、多対多の関係が複雑に絡み合うデータ(ソーシャルグラフ・組織構造・サプライチェーン等)では、JOINの回数が増えるほどクエリ性能が指数的に劣化する。6段階のJOINを伴うクエリは実用的な応答時間で返せないことが多い。
Neo4jはグラフ構造をネイティブに格納するため、リレーションシップの走査がO(1)(定数時間)で行える。RDBでは全テーブルをスキャンするJOINが必要な多段階の関係探索が、Neo4jではインデックスフリーの隣接(index-free adjacency)により瞬時に実行できる。
Neo4jの専用クエリ言語Cypherは、ASCIIアートのような直感的な構文でグラフパターンを記述する。
ノードは丸括弧 () 、リレーションシップは角括弧と矢印 -[]-> で表現する。
| 操作 | Cypher | SQL相当 |
|---|---|---|
| ノード作成 | CREATE (p:Person {name: 'Alice'}) | INSERT INTO persons ... |
| 関係作成 | CREATE (a)-[:KNOWS]->(b) | INSERT INTO knows ... |
| パターン検索 | MATCH (a)-[:KNOWS]->(b) RETURN b | SELECT ... JOIN ... |
| 経路探索 | MATCH path = shortestPath((a)-[*]-(b)) | 再帰CTE(複雑) |
| 集約 | MATCH (p)-[:BOUGHT]->(i) RETURN p, count(i) | GROUP BY + COUNT |
「Aliceの友人の友人で、同じ映画を見た人」をCypherで書くと1行で表現できるが、SQLでは複数のJOINとサブクエリが必要になる。グラフパターンの記述に関してはCypherがSQLより圧倒的に簡潔である。
| エディション | 特徴 | ノード数上限 | クラスタ | 料金 |
|---|---|---|---|---|
| Community | OSS (GPLv3) | 制限なし | なし | 無料 |
| Enterprise | 商用サポート | 制限なし | Causal Cluster | 有料 |
| AuraDB Free | マネージド | 20万ノード | なし | 無料 |
| AuraDB Pro | マネージド | 制限なし | あり | $65/月〜 |
Community Editionは単一データベース・単一サーバーに限定されるが、個人プロジェクトや小規模アプリケーションには十分な機能を備える。本番で高可用性やバックアップが必要な場合はEnterpriseまたはAuraDBが推奨される。
LangChainフレームワークにはNeo4jGraphコネクタが標準搭載されており、LLMの質問を自動的にCypherクエリに変換してNeo4jに実行し、結果を自然言語で回答するRAGパイプラインを構築できる。
Microsoft GraphRAGやLlamaIndex PropertyGraphIndexのバックエンドとしてNeo4jを使用し、テキストから自動構築したナレッジグラフを永続化・クエリできる。
A: データ間の「関係性」が主要な関心事であり、多段階の関係走査(友人の友人、サプライチェーンの上流3段階等)が頻繁に発生する場合にNeo4jが適しています。単純なCRUDやトランザクション処理にはRDBの方が適切です。
A: Cypherの基本構文は30分で習得可能です。SQLの知識があれば、CREATEやMATCHの対応関係を理解するだけで基本的な操作ができます。Neo4jのブラウザUIが視覚的なグラフ探索を提供するため、学習の敷居は低いです。
A: Amazon Neptuneはマネージドサービスとしての運用性、TigerGraphは大規模分散処理に強みがあります。JanusGraphはOSSの分散グラフDB。ただしエコシステムの成熟度・ツール数・コミュニティ規模ではNeo4jが最も充実しています。