LLMにおけるRAGの仕組みを一通り理解すると、Graph RAGというものに興味を持ちました。
NVIDIA Geforce RTX5060Ti 16GB も購入したので、試してみました。
グラフィックボードを有効に動かすには、いろいろと設定が面倒でした。
いろんなサンプルを動かそうとしましたが、まだ新しいドライバなのでPythonのライブラリの依存性が合わず、思ったより苦労します。
そんな中下記サイトではDocker環境で全て用意していただいているため、順調に動作させることができました。
引用)https://highreso.jp/edgehub/machinelearning/graphrag.html
langchain.Dockerfile
1 2 3 4 5 6 7 8 9 10 |
FROM nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04 RUN apt-get update && apt-get install -y python3-pip python3-venv git nano curl RUN curl -fsSL https://ollama.com/install.sh | sh WORKDIR /app COPY . /app RUN python3 -m venv /app/.venv RUN echo "source /app/.venv/bin/activate" >> /root/.bashrc RUN /app/.venv/bin/pip install Jupyter jupyterlab RUN /app/.venv/bin/pip install ollama langchain-ollama langchain langsmith langchain-graphrag langchain-community langchain_huggingface langchain_core langchain-experimental neo4j langchain_neo4j tiktoken CMD ["/bin/bash"] |
neo4j.Dockerfile
1 2 3 4 5 6 7 8 |
FROM neo4j:5.25.1 RUN apt-get update && apt-get install -y curl && apt-get clean ENV NEO4JLABS_PLUGINS '[ "apoc" ]' ENV NEO4J_dbms_security_procedures_unrestricted apoc.* RUN curl -L -o /var/lib/neo4j/plugins/apoc-5.25.1-core.jar \ https://github.com/neo4j/apoc/releases/download/5.25.1/apoc-5.25.1-core.jar EXPOSE 7474 7687 CMD ["neo4j"] |
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
services: langchain_neo4j: build: context: . dockerfile: langchain.Dockerfile image: langchain runtime: nvidia container_name: langchain ports: - "8888:8888" volumes: - .:/app/langchain deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] networks: - app-network depends_on: - neo4j command: > bash -c '/usr/local/bin/ollama serve & /app/.venv/bin/jupyter lab --ip="*" --port=8888 --NotebookApp.token="" --NotebookApp.password="" --no-browser --allow-root' neo4j: build: context: . dockerfile: neo4j.Dockerfile image: neo4j_with_apoc container_name: neo4j ports: - "7474:7474" - "7687:7687" volumes: - ./data:/data - ./plugins:/plugins - ./import:/import environment: - 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.* - NEO4J_dbms_memory_heap_initial__size=512m - NEO4J_dbms_memory_heap_max__size=2G - NEO4J_apoc_uuid_enabled=true - NEO4J_dbms_default__listen__address=0.0.0.0 - NEO4J_dbms_allow__upgrade=true - NEO4J_dbms_default__database=neo4j - NEO4J_AUTH=neo4j/your_password restart: unless-stopped networks: - app-network networks: app-network: driver: bridge |
ここではこのサイトの通り動かしてみて、グラフDBにどのようにテキストが保存されるかを理解することを目的としました。
Jupyter環境で、step by step で確認ができるのでとても便利です。必要とするファイルもUIからインポートできます。
実行前に下記のやり方でライブラリをインストールする必要があリました。
!{sys.executable} -m pip install openai
グラフ化の処理時間は、10分から15分くらいでした。
とても素晴らしいデモでした!
NVIDIAのGPUを使うにあたり、ライブラリ、ドライバなどの依存関係を調べることが多くあります。参考リンクを下記にメモしておきます。
https://developer.nvidia.com/cudnn-archive
https://developer.nvidia.com/cuda-toolkit-archive
https://www.tensorflow.org/install/source#gpu
https://developer.nvidia.com/cuda-gpus
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/
https://en.wikipedia.org/wiki/CUDA#GPUs_supported
https://www.nvidia.com/ja-jp/drivers/