Neo4j の起動
pythonでneo4j を使えるようにする
Llama 3.2とNeo4jでローカルGraphRAG環境を構築
これをやる場合
Neo4jのCypherクエリ言語を拡張するライブラリapoc-coreを使用する
Dockerコンテナを利用したNeo4jの環境構築とAPOCのインストール手順
によれば
コンテナで起動したNeo4jにはAPOCのバイナリが含まれていないため、手動でインストールする必要がある
APOC (Awesome Procedures On Cypher) は、Neo4jにおける拡張機能の一つである。
データ操作、外部データの取り込み、ランダムグラフ生成など、Neo4jの基本機能を拡張するプロシージャを提供する。
製品の標準機能として取り込まれた拡張機能も多々あるようで、
とりあえずコアのAPOC入れておいたほうがいい、ということらしい
docker exec -it neo4j-neo4j-1 neo4j --version
を実行したけど
Error response from daemon: No such container: neo4j-neo4j-1
となった
コンテナが起動していないと意味がない
まずはneo4jを起動する
Docker-compose を使う方法を採用
対応ディレクトリが必要なので
mkdir -p ./data ./logs ./conf ./plugins chmod 755 ./data ./logs ./conf ./plugins
で作成する
次に
touch docker-compose.yml
でファイルを作成
dservices: neo4j: image: neo4j:latest ports: - "7474:7474" - "7687:7687" environment: NEO4J_AUTH: "neo4j/[8文字以上のパスワード]" NEO4J_apoc_export_file_enabled: "true" NEO4J_apoc_import_file_enabled: "true" NEO4J_apoc_import_file_use__neo4j__config: "true" NEO4J_dbms_security_procedures_unrestricted: "apoc.*" ulimits: nofile: soft: 40000 hard: 40000 volumes: - ./data:/data - ./logs:/logs - ./conf:/conf - ./plugins:/plugins
として保存
なお
neo4j/ は必須で、
NEO4J_AUTH の形式は常に ユーザー名/パスワード
となっている
なので通常はパスワードを変更する
docker compose up -d
を実行したが
validating /Users/snowpool/aw10s/ne4j_pg/docker-compose.yml: (root) Additional property dservices is not allowed
となる
GPTで調べると
ocker-compose.yml ファイルで
トップレベルのキーとして dservices が使用されているためです。
Docker Compose の標準では、
トップレベルのキーは services である必要があります。
となるため
コードを修正
最初の
dservices:
を
services:
へ変更し保存
docker compose up -d
を実行すれば
[+] Running 2/2 ✔ Network ne4j_pg_default Created 0.0s ✔ Container ne4j_pg-neo4j-1 Started 0.2s
となる
これで
http://localhost:7474
へアクセスし
管理画面が表示されればOK
管理画面には
docker-compose.yamlで設定したID「neo4j」とそのパスワードでログインする
ログインしたらテスト
CREATE (p:Person {name: "Alice", age: 30})-[:KNOWS]->(p2:Person {name: "Bob", age: 25})
で
Cypherクエリを実行し、ノードとリレーションシップを作成
MATCH (n) RETURN n
を実行すると
登録したデータの確認が画像で表示される
データ永続化のテストのため
docker compose down
でコンテナを停止
コンテナを再起動するので
docker compose up -d
これで再度
MATCH (n) RETURN n
を実行して表示されれば問題なし
次に
APOCバイナリのインストール
これには dockerコンテナの名前が必要なので
docker ps
を実行しコンテナ名を調べる
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc1a5da764cf neo4j:latest "tini -g -- /startup…" 7 minutes ago Up 7 minutes 0.0.0.0:7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp ne4j_pg-neo4j-1
という結果になったので
コンテナ名は ne4j_pg-neo4j-1
ということがわかる
次にNeo4j のバージョン表示
docker exec -it ne4j_pg-neo4j-1 neo4j --version
を実行すれば
5.26.0
とバージョンが表示される
Neo4jのバージョンに対応するAPOCをGitHubリリースページからダウンロード
今回は
apoc-5.26.0-core.jar
をダウンロード
これを plugins ディレクトリに配置する
mv ~/Downloads/apoc-5.26.0-core.jar plugins
次にコンテナ再起動
docker compose down docker compose up -d
次に
http://localhost:7474
へアクセス
CALL apoc.help('apoc')
を実行し
APOCが利用可能になっていることを確認