LLMアプリのRAGがうまく機能しないとき、ベクトル検索の限界が原因であることが多い。

「誰が、何と関係しているか」を追う必要がある複雑な問い合わせに対して、ベクトル類似検索は根本的に苦手だ。FalkorDBはその課題に正面から取り組んだ、LLM向けに設計されたオープンソースのグラフデータベースだ。

この記事でわかること:

  • ベクトルDBとグラフDBの違いと、LLMアプリでグラフが有利な理由
  • FalkorDBの仕組みと主な機能
  • Dockerで5分以内に起動する手順
  • 料金とライセンスの注意点

なぜベクトル検索だけではRAGが限界に達するのか

ベクトルDBを使ったRAG(VectorRAG)は、文章の意味的な近さをもとに情報を取り出す仕組みだ。シンプルな質問には有効だが、「Aに関係するBを通じてCを探す」といった多段階の推論が必要なクエリには対応できない。

例えば「The Revenant の主演俳優が出演した別のSF映画の監督は誰か」という問いに対して、ベクトル検索は単語の類似度で文書を拾うだけなので、俳優→別の映画→監督という関係をたどれない。

FalkorDBを中心とした GraphRAG は、この問題を知識グラフで解決する。データをノードとエッジの関係として格納するため、複数のホップをまたいだ推論が得意だ。FalkorDBの公式ブログによると、GraphRAGはVectorRAGと比較してLLMへ渡すトークン数を26〜97%削減できるとされている(参考)。

FalkorDBとは

https://github.com/FalkorDB/FalkorDB

FalkorDBはRedisモジュールとして動作するグラフデータベースだ。最大の特徴は、グラフの隣接行列を スパース行列(GraphBLAS) で表現し、クエリを線形代数演算で処理する点にある。

従来のグラフDBがポインタやインデックスを使ってノード間を移動するのに対して、FalkorDBは行列演算で一度に大量の関係を処理する。これによって超低レイテンシを実現している。

実際の事例として、セキュリティ企業Securinが脅威インテリジェンスの7ホッククエリをFalkorDBで処理したところ、350ms以内で応答が返り、他社グラフDBで発生していた25%のクエリ失敗率がゼロになった(参考)。

主な機能

マルチテナント対応
1インスタンスで10,000以上のグラフ(テナント)を同時管理できる。SaaSアプリのユーザーごとにグラフを分けて持つといった構成が追加コストなしに実現する。

OpenCypherに対応
クエリ言語にはNeo4jでも使われているOpenCypherを採用している。既存のCypherクエリをそのまま流用しやすく、学習コストが低い。

ベクトル検索との統合
グラフトラバーサルとベクトル検索を組み合わせて使える。テキストの意味検索と関係の推論を1つのシステムで処理できる。

AIエージェントのメモリ基盤
会話履歴や状態を構造化して記録するエージェントメモリ基盤としての活用も進んでいる。mem0ライブラリとの公式統合が提供されており、LLMアプリに永続的なグラフメモリを追加できる。

主なユースケース

  • GraphRAG(知識グラフを使った高精度の情報取得)
  • AIエージェントの長期記憶
  • 不正検知(IPやデバイス間の関係分析)
  • セキュリティグラフ(脅威インテリジェンス)

Dockerで起動する

docker run -p 6379:6379 -p 3000:3000 -it --rm   -v ./data:/var/lib/falkordb/data   falkordb/falkordb

起動後、http://localhost:3000 にアクセスするとブラウザUIが開く。Cypherクエリを直接入力してグラフを可視化しながら操作できる。

PythonからはFalkorDBクライアントで接続する。

from falkordb import FalkorDB

db = FalkorDB(host='localhost', port=6379)
g = db.select_graph('my_graph')

# ノードと関係を作成
g.query("CREATE (:Person {name:'Alice'})-[:KNOWS]->(:Person {name:'Bob'})")

# 関係をたどって検索
res = g.query("MATCH (a:Person)-[:KNOWS]->(b:Person) RETURN b.name")
print(res.result_set)  # [['Bob']]

他のグラフDBとの違い

FalkorDBが明示的に比較しているのはNeo4j、AWS Neptune、TigerGraph、ArangoDB。Neo4jとの比較で特に差が出るのはマルチテナントとレイテンシで、FalkorDBのほうが高速かつメモリ効率がよいとされている。

ただし、Neo4jのコミュニティは大きく、ドキュメントや事例が豊富だ。初めてグラフDBを触る場合の情報量という点ではNeo4jに分がある。

料金とライセンス

FalkorDB本体のライセンスは SSPLv1(Server Side Public License)だ。ソースコードは公開されているが、商用サービスとしてFalkorDBを再配布する場合は独自ライセンスの取得が必要になる可能性がある。Dockerで手元で動かす分には影響しない。

マネージドサービスの FalkorDB Cloud も提供されている。無料プランから利用を始めることができ、スケールに応じた有償プランに移行できる。

https://app.falkordb.cloud/signup

まとめ

FalkorDBはスパース行列をコアに据えた、LLMアプリ向けのグラフデータベースだ。VectorRAGでは難しかった複数ホップの推論を高速に処理でき、エージェントメモリや不正検知にも対応する。Dockerで即座に起動でき、OpenCypherで操作できるため、グラフDBを初めて試すエントリーポイントとして使いやすい。SSPLv1ライセンスの制約は把握しておく必要があるが、個人や社内用途での試用に障壁はない。