概要
ローカルLLM+GraphRAGで日本語テキストデータのインデックス作成を試みたが失敗したので、その途中までの作業記録を残す(GraphRAGの多言語対応が進んだらリトライしてみよう…)
- 仮想環境の作成とGraphRAGのインストール
- プロジェクトの初期化と
input
フォルダへのデータ配置 -
settings.yaml
の修正 - 環境変数でのAPI_BASE設定
- プロンプトチューニング(
prompt-tune
) - インデックス化の試行と課題
1. 仮想環境の作成とGraphRAGのインストール
# 仮想環境の作成とアクティベート
$ python3 -m venv graph-venv
$ source graph-venv/bin/activate
# pipでGraphRAGをインストール
(graph-venv) $ pip install graphrag
2. プロジェクトの初期化とinput
フォルダへのデータ配置
(graph-venv) $ graphrag init --root ./ragtest
プロジェクト初期化後に、以下のフォルダ構造が生成される。
ragtest/
├── input/ # テキストデータを配置するフォルダ
├── prompts/ # プロンプト設定を管理するフォルダ
└── settings.yaml # プロジェクト全体の設定
input
フォルダに解析対象の日本語テキストファイルを配置。
2025/12/26時点ではtxtとcsvのみ対応であるらしい。
ragtest/input/sample.txt
sample.txt
の内容(例):
メロスは激怒した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。
3. settings.yaml
の修正
settings.yaml
ファイルを以下のように修正。
# settings.yamlの抜粋(修正後)
encoding_model: cl100k_base
llm:
api_key: sk-2d76xxxxxxxxxxxxxxda5e24
type: openai_chat
model: jean-luc/tiger-gemma:9B-v1a-Q4_K_M
model_supports_json: true
api_base: http://localhost:3000/api
embeddings:
llm:
api_key: sk-2dxxxxxxxxxxx24
type: openai_embedding
model: nomic-embed-text:latest
api_base: http://localhost:3000/api
修正点:
-
llm.api_base
とembeddings.llm.api_base
にローカル環境のAPIエンドポイント (http://localhost:3000/api
) を指定。 - 使用するモデル名を適切に設定。
- これらのパラメータはopen webuiのopenai互換API利用を前提としている(Ollamaでやっている事例のほうが世の中には多い模様。まあopen webuiもバックエンドはOllamaだから似たようなもんか…)
4. 環境変数でのAPI_BASE設定
GraphRAGでは、settings.yaml
で api_base
を設定しても、環境変数 OPENAI_BASE_URL
を別途設定しないと動作しないバグ、あるいはガイド不足がある。1
(graph-venv) $ export OPENAI_BASE_URL=http://localhost:3000/api
5. プロンプトチューニング(prompt-tune
)
graphrag prompt-tune
コマンドを使用してプロンプトをチューニング。
(graph-venv) $ graphrag prompt-tune --root ./ragtest --config ./ragtest/settings.yaml --language Japanese
このコマンドにより、prompts/
フォルダにエンティティ抽出や関係性抽出に使用するプロンプトが生成される。
6. インデックス化の試行と課題
graphrag index
コマンドを実行してインデックス作成を試みたが、異常終了。
(graph-venv) $ graphrag index --root ./ragtest --config ./ragtest/settings.yaml
Logging enabled at /mnt/NVMe01TB01/graphrag/ragtest/logs/indexing-engine.log
❌ extract_graph
None
発生したエラー
09:59:41,961 graphrag.index.graph.extractors.graph.graph_extractor ERROR error extracting graph
ValueError: Entity Extraction failed. No entities detected during extraction.
このエラーは解決できなかった。以下の可能性が想定される。
- モデルが日本語テキストに適していない。
- プロンプトの設計が不十分。
- 入力データがエンティティ抽出に適していない。