> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sambanova.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Neo4j

[Neo4j](https://neo4j.com/) は、データをテーブルやドキュメントではなく、ノード・リレーションシップ・プロパティとして保存するグラフデータベースです。この構造により、ホワイトボードにアイデアを書き出すような直感的なデータ整理が可能になります。SambaNova を組み合わせることで、最先端の言語モデルを活用した高度なグラフ分析や自然言語クエリを Neo4j アプリケーションに取り入れることができます。

<Note>
  本ガイドは Neo4j 5.x と SambaNova GraphRAG コードベース v1.x で動作確認しています。異なるバージョンを使用している場合、一部の手順が異なる可能性があります。
</Note>

## 概要

本ガイドでは、SambaNova の LLM を活用したエージェントと Neo4j を用いて GraphRAG アプリケーションを構築する手順を解説します。GraphRAG は、単純なテキスト断片ではなくグラフのリレーションシップを活用する、構造化された階層的な検索拡張生成 (RAG) のアプローチです。

サンプルアプリケーションは、Synthea データセットに含まれる患者の電子カルテを取得します。エージェントは Neo4j のグラフクエリ言語 (Cypher) を使用し、次の 2 つの方法でレコードにアクセスします。

* **静的クエリ**: 一般的な操作向けに事前定義された Cypher クエリ。
* **動的クエリ**: 自然言語の入力から LLM が生成する Cypher クエリ (Text-to-Cypher)。

## 前提条件

* [SambaCloud](https://cloud.sambanova.ai/?utm_source=neo4j\&utm_medium=external\&utm_campaign=cloud_signup) のアカウントと [API キー](https://cloud.sambanova.ai/apis?utm_source=neo4j\&utm_medium=external\&utm_campaign=cloud_signup)、または SambaStack 環境
* Python 3.11 以上
* Python の依存関係管理用の [UV パッケージマネージャー](https://github.com/astral-sh/uv)
* Neo4j データベースインスタンス (ローカルまたはクラウドホスト)

## セットアップ

### 依存パッケージのインストール

<Steps>
  <Step title="UV パッケージマネージャーのインストール">
    ```bash theme={}
    pip install uv
    ```
  </Step>

  <Step title="integrations リポジトリのクローン">
    ```bash theme={}
    git clone https://github.com/sambanova/integrations.git
    cd integrations/langgraph/agentic_graph_rag
    ```
  </Step>

  <Step title="仮想環境の作成と依存パッケージのインストール">
    ```bash theme={}
    uv venv
    source .venv/bin/activate
    uv pip install -r requirements.txt
    ```
  </Step>
</Steps>

### Synthea データセットの読み込み

<Steps>
  <Step title="Synthea データセットのダンプファイルのダウンロード">
    [Synthea データセットのダンプファイル](https://drive.google.com/file/d/15WQWmEkHTB71H3OZ_3Kbb_OKBvM9tbVz/view?usp=drive_link) をローカルマシンにダウンロードします。
  </Step>

  <Step title="Neo4j Desktop へのダンプの読み込み">
    1. データベースを停止します。
    2. 対象データベースのターミナルを開きます。
    3. パスをダウンロード先に置き換えて、以下のコマンドを実行します。
       ```bash theme={}
       neo4j-admin database load --from-path=/path/to/dump synthea --overwrite-destination
       ```
    4. データベースを起動します。

    <Note>
      Neo4j Aura などのクラウドインスタンスについては、[Neo4j のデータインポートに関するドキュメント](https://neo4j.com/docs/operations-manual/current/tools/neo4j-admin/neo4j-admin-import/) をご参照ください。
    </Note>
  </Step>
</Steps>

### 環境変数の設定

<Steps>
  <Step title="サンプルの環境設定ファイルのコピー">
    ```bash theme={}
    cp .env.example .env
    ```
  </Step>

  <Step title=".env を編集して以下の変数を設定">
    ```bash theme={}
    # SambaNova API configuration
    SAMBANOVA_API_KEY=your_api_key_here
    SAMBANOVA_BASE_URL=https://api.sambanova.ai/v1

    # Neo4j connection
    NEO4J_URI=bolt://localhost:7687
    NEO4J_USERNAME=neo4j
    NEO4J_PASSWORD=your_password_here
    ```
  </Step>
</Steps>

## アプリケーションの実行

### バックエンドの起動

SambaNova の LLM を使用して Neo4j データベースに接続する HTTP サーバーを起動します。

```bash theme={}
bash ./start_server.sh
```

サーバーが起動すると、以下のような出力が表示されます。

```text theme={}
INFO:     Uvicorn running on http://0.0.0.0:8000
INFO:     Application startup complete.
```

### フロントエンドの表示

ブラウザでアプリケーションのランディングページを開きます。

```text theme={}
http://localhost:8000/app
```

### 接続の確認

1. チャットボットのインターフェースで、「List all patients.」などのテストクエリを入力します。
2. アプリケーションが Neo4j データベースから患者レコードを返すことを確認します。

## 主な機能

設定が完了すると、GraphRAG アプリケーションで以下のことができるようになります。

* **自然言語クエリ**: 患者データについて平易な英語で質問できます。
* **グラフトラバーサル**: 患者・症状・投薬・受診の間のリレーションシップを探索できます。
* **Text-to-Cypher**: 自然言語の入力から Cypher クエリを自動生成します。
* **ヘルスケア分析**: グラフベースのインサイトを用いて、Synthea データセット全体のパターンを分析できます。

## デモ動画

以下の動画では、GraphRAG アプリケーションが SambaNova の LLM を活用して Neo4j データベースのヘルスケアデータにアクセスする様子をご覧いただけます。

<iframe width="560" height="315" src="https://www.youtube.com/embed/2cwvj07cY8s?cc_load_policy=1" title="デモ: SambaNova と Neo4j による GraphRAG アプリケーション" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerPolicy="strict-origin-when-cross-origin" allowFullScreen />

## トラブルシューティング

| 問題 | 解決方法 |
| - | - |
| バックエンド起動時の `Connection refused` | Neo4j が稼働していること、および `.env` の `NEO4J_URI` が正しいことを確認してください。 |
| 認証エラー | `NEO4J_USERNAME` と `NEO4J_PASSWORD` が Neo4j の認証情報と一致しているか確認してください。 |
| `SAMBANOVA_API_KEY not set` エラー | `.env` ファイルが存在し、[SambaCloud](https://cloud.sambanova.ai/apis?utm_source=neo4j\&utm_medium=external\&utm_campaign=cloud_signup) の有効な API キーが記載されていることを確認してください。 |
| クエリ結果が空 | Synthea データセットが正しく読み込まれたか確認してください。Neo4j Browser で `MATCH (n) RETURN count(n)` を実行し、データが存在することを確認できます。 |
| `ModuleNotFoundError` | 仮想環境を有効化しているか確認してください: `source .venv/bin/activate` |

## 参考情報

* [Neo4j ドキュメント](https://neo4j.com/docs/)
* [Cypher クエリ言語リファレンス](https://neo4j.com/docs/cypher-manual/current/)
* [SambaNova GraphRAG リポジトリ](https://github.com/sambanova/integrations/tree/main/langgraph/agentic_graph_rag)
* [SambaCloud API リファレンス](/docs/ja/api-reference/overview)
* [SambaCloud サポート](https://sambanova.ai/support)
