1. はじめに
RAG(Retrieval-Augmented Generation)は、社内文書やマニュアルを検索し、その内容をもとにLLMが回答する仕組みです。RAGと言えば VectorDB を用いたベクトル検索が有名ですが、実際には BM25、Knowledge Graph、GraphRAG、ハイブリッド検索に加え、grep/ripgrep などを用いてエージェントが動的に情報探索を行う手法も活用されています。
最近では多くのRAGフレームワークが公開されていますが、その中でも簡易にGraphRAGの機能を提供するLightRAGが注目されているようです。
LightRAGは、GraphRAGの考え方を取り入れていることが大きな特徴です。GraphRAGは、文書の中に登場する人物や製品、機能などの関係をグラフとして管理します。これにより、単純なキーワード検索だけでは見つけにくい情報も取得しやすくなります。
一方で、GraphRAGは構築や運用が複雑になりがちです。LightRAGはその考え方を活かしながら、より簡単に利用できるよう設計されています。RAGを自前で構築する場合は、文書の取り込み、ベクトル化、検索APIの作成、インデックス管理など多くの作業が必要になります。
LightRAGを利用すると、それらの処理をまとめて利用できます。特にドキュメント検索を短時間で試したい場合には便利です。今回はRedmineのユーザーガイドを登録し、実際に検索できる環境を作ってみます。
2. 導入方法
今回はCLI版のLightRAG Serverを利用します。
まずLightRAGをインストールします。
uv tool install "lightrag-hku[api]"
次にサンプルとして利用するRedmineの日本語ユーザーガイドを取得します。
git clone https://github.com/farend/redmine-guide-ja.git
cd redmine-guide-ja
LLMとEmbeddingモデルを設定します。
今回はOpenAIを利用します。
.env を作成します。
LLM_BINDING=openai
LLM_MODEL=gpt-4o-mini
EMBEDDING_BINDING=openai
EMBEDDING_MODEL=text-embedding-3-small
OPENAI_API_KEY="YOUR_KEY"
準備ができたらサーバーを起動します。
--input-dir に登録したいドキュメントのディレクトリを指定します。
lightrag-server \
--working-dir ./rag_storage \
--input-dir ./docs \
--port 9621
これでLightRAG Serverが起動します。
3. 実際の使用
ドキュメントの登録
サーバーが起動したらドキュメントの取り込みを開始します。
curl -X POST http://localhost:9621/documents/scan
実行すると次のような結果が返ります。
{
"status": "scanning_started",
"message": "Scanning process has been initiated in the background",
"track_id": "scan_20260607_172354_b4913d94"
}
track_id を利用して進捗を確認できます。
取り込み中の状態です。
curl -s \
http://localhost:9621/documents/track_status/scan_20260607_172354_b4913d94 \
| jq '.status_summary'
結果例です。
{
"DocStatus.PROCESSED": 18,
"DocStatus.PROCESSING": 3,
"DocStatus.ANALYZING": 9,
"DocStatus.PARSING": 19
}
すべて完了すると次のようになります。
{
"DocStatus.PROCESSED": 49
}
今回の環境では49個のドキュメントが登録されました。
ドキュメントへ問い合わせ
登録が終わったら検索できます。
例えば「チケットの親子関係の設定方法」を質問してみます。
curl -X POST http://localhost:9621/query \
-H "Content-Type: application/json" \
-d '{
"query":"チケットの親子関係の設定方法",
"mode":"hybrid"
}'
今回は hybrid モードを利用しています。
hybrid はベクトル検索とグラフ検索を組み合わせる検索方式です。
実際に試した質問
Redmineユーザーガイドを登録した状態で質問してみました。
| 質問 | 回答 |
|---|---|
| E2Eサンプルプロジェクトで新しいチケットを作成するにはどうすればよいですか?件名、優先度、説明文の入力方法も教えてください。 | プロジェクト画面で「チケット」を選択し、「新しいチケット」をクリックします。入力フォームで件名(チケットのタイトル)、優先度(高・中・低などの重要度)、説明文(問題内容や要件の詳細説明)を入力し、「作成」または「保存」をクリックします。チケット作成には「チケットの追加」権限が必要です。 |
| 管理者として既存チケットのステータスを「新規」から「進行中」や「解決」に変更する方法を教えてください。 | 対象チケットを開き、「編集」をクリックします。ステータス欄で「進行中」や「解決」などを選択し、「保存」をクリックします。変更には「チケットの編集」権限が必要です。また、変更可能なステータスはワークフロー設定に依存します。 |
| チケットの変更履歴を確認するにはどうすればよいですか?誰がいつ更新したか確認できますか? | 対象チケットを開き、詳細画面の変更履歴セクションを確認します。変更履歴には更新者、更新日時、変更内容、コメントなどが時系列で表示されるため、誰がいつ何を変更したかを確認できます。 |
| チケット番号や件名を使ってチケットを検索・表示する方法を教えてください。 | 画面右上の検索ボックスにチケット番号(例: #999 または 999)や件名・キーワードを入力して検索します。Enterキーで検索結果を表示できます。また、「検索」から詳細検索画面を開き、対象プロジェクトや検索条件を指定することも可能です。 |
| 他のユーザーが作成したチケットを一覧から確認するにはどうすればよいですか?権限が必要な場合はその条件も教えてください。 | プロジェクトのチケット一覧画面を開き、フィルタ機能を利用して作成者などの条件で絞り込みます。他ユーザーのチケットを閲覧するには「チケットの表示」権限が必要です。ロール設定によっては、すべてのチケットを閲覧できる場合と、プライベートチケット以外のみ閲覧できる場合があります。 |
質問に対して、ユーザーガイドの内容を要約した回答が返されました。操作手順だけでなく、必要な権限についても回答できていました。
マニュアル検索用途として十分実用的な印象です。
4. まとめ
今回はLightRAGを利用してRedmineユーザーガイドを検索できる環境を構築しました。
実際に試して感じた特徴は次の通りです。
- 導入が簡単
- サーバー形式ですぐ利用できる
- ドキュメントの登録が容易
- GraphRAGの考え方を利用できる
- マニュアル検索との相性が良い
- VectorDBだけのシンプルな実装よりも精度がよさそう
RAGをゼロから構築すると多くの実装が必要になります。しかしLightRAGでは、ドキュメントの登録から検索APIまで一通り揃っているようです。