neo4jをインストールしてknowledge graphsを試す

モチベーション

これまで、FAISSやBM25を使ってRAGシステムを構築した。ベクトル検索は比較的簡単に構築できるが、必要な情報が"k"個の文書にない場合もあり、精度向上策を調べていた。たまたまこの記事を読んで、ナレッジグラフに興味を持って、自分でも試してみようと思った。

この投稿では、ナレッジグラフを使うため、nao4jをローカル環境にインストールし、ブラウザから使ってみるまでをまとめる。

情報源

  1. RAGアプリケーションの精度をナレッジグラフで高める ナレッジグラフを知るきっかけとなった記事。
  2. ナレッジグラフ:技術的概要とアプリケーション 上記記事の筆者による、ナレッジグラフの解説記事。
  3. neo4j neio4jの本家のページ。このページの「Get Started for Free」からクラウドサービスの「neo4j auraDB」を使うことができる。
  4. Getting started with Neo4j in Docker ドキュメントページにあるDockerの紹介部分。
  5. dockerhub neo4jのDocker Officaial Imageを提供しているdockerhubのページ。上記の紹介ドキュメントのページにもリンクあり。
  6. Neo4j Licensing Neo4jのライセンスについて説明。Community EditionとEnterprise Editionがあるが、自分は、Community Editionを使う。Community EditionはGPL v3ライセンスである。
  7. Simple Graph Database Setup with Neo4j and Docker Compose このページのDocker Composeを参考にして、コンテナを起動するようにした。

コンテナを起動

docker-compose.yml

情報源7.を参考に、以下の通り$HOMEディレクトリ配下に、docker-compose.ymlを作成した。

$ pwd
/home/kenji/workspace/neo4j
$ cat docker-compose.yml
services:
  neo4j:
    container_name: neo4j
    image: neo4j:latest
    ports:
      - 7474:7474
      - 7687:7687
    environment:
      - NEO4J_AUTH=neo4j/password
      - NEO4J_apoc_export_file_enabled=true
      - NEO4J_apoc_import_file_enabled=true
      - NEO4J_apoc_import_file_use__neo4j__config=true
      - NEO4J_PLUGINS=["apoc", "graph-data-science"]
    volumes:
      - ./neo4j_db/data:/data

上記により、最新版のコミュニティエディションのneo4jコンテナが起動される。

neo4jを起動

$ pwd
/home/kenji/workspace/neo4j
$ sudo docker compose up -d

ローカル環境からneo4jに接続

neo4jコンテナを起動したマシン上のブラウザで、”http://localhost:7474/”と入力すると、neo4jに接続する。

最初に接続するとパスワード入力を求められるので、パスワードを設定し、docker-compose.ymlの”password"を変更する。

別マシンからneo4jに接続

ネットワークにつながっている別のマシンのブラウザで、“http://192.168.11.8:7474/“と入力すると、neo4jに接続できる。 もちろん"192.168.11.8"の部分は、自身の環境に合わせて適宜変更のこと。

ブラウザからneo4jを使ってみる

Try Neo4j with live dataを試す

先ずは、neo4jサーバ上で、コンテナを起動する。『neo4jを起動」の通り。

ブラウザからneo4jに接続する。「ローカル環境/別マシンからneo4jに接続」の通り。

neo4j

中央の「Try Neo4j with live data」の「Open guide」をクリックすると、試していける。

サイドメニューが開いたら、「Next」で順次進めていく。サイドメニューのCypherクエリの枠をクリックすると、右側のプロンプト行にコピペされるので、「▶︎」で実行する。

一通り試すのに、30分から1時間程度掛かった。

今後について

CypherはSQLに雰囲気は似ているが、別物であり、理解はできていないが、上記の通り試してみるとなんとなくイメージはつかめる。

今後は、これでRAGシステムを構築してみたい。