Open3

Light RAG

じゅっじゅおーじゅっじゅおー

概要(日本語)

LightRAG とは?

「LightRAG」は、シンプルかつ高速な Retrieval-Augmented Generation (RAG) フレームワークです。テキスト、ナレッジグラフ、ベクターストアを活用し、効率的で柔軟な情報検索と生成を実現します (Zenn, DeepWiki)。

  • マルチモーダル対応 — LightRAG は「RAG-Anything」統合により、PDF、画像、Office ドキュメント、表、数式など多様な形式のデータを解析・処理できます (GitHub)。
  • 各種 LLM に対応 — OpenAI、Hugging Face、Ollama など、複数のバックエンドモデルとの互換性があります (GitHub)。
  • 高速かつ柔軟な検索 — グラフ構造を利用し、ナレッジグラフ参照によって、従来の単純なチャンクベース検索を超える検索速度と柔軟性を実現 (note(ノート), このめの日々)。

インストールとセットアップ

  • サーバ版(LightRAG Server)
    PyPI 経由やソースからインストール可能。環境変数を .env ファイルに設定して Web UI や API を提供し、ドキュメントのインデックス化、ナレッジグラフの探索、RAG クエリ操作が可能。さらに Ollama と互換のチャットモデルとして振る舞うこともできます (GitHub, PyPI)。
  • Core モジュール
    pip install -e . または PyPI パッケージで利用可。研究用途や組み込み用途に適しています (GitHub, PyPI)。

モデル構成・要件

  • LLM の性能要件
    インデックス段階においてもエンティティや関係抽出タスクを担うため、少なくとも 320 億パラメータ以上、コンテキスト長 32 KB~64 KB のモデルが推奨されています。インデックス時刻には、推論型(Reasoning)モデルは避け、クエリ時にはより強力なモデルを用いるとされています (GitHub)。
  • Embedding モデル
    高性能なマルチリンガルモデル(例:「BAAI/bge-m3」や「text-embedding-3-large」)が推奨されます。一度決めたモデルは、インデックス・クエリ両フェーズで同じものを使う必要があります。ストレージ(例:PostgreSQL)のベクトル次元も初期定義で固定されており、Embedding モデル変更時には既存のベクトル用テーブルを削除して再構築が必要 (GitHub)。
  • Reranker の活用
    Reranker モデル(例:「BAAI/bge-reranker-v2-m3」や Jina 提供モデル)により検索精度を向上可能。ミックスモード(mix mode)が推奨設定であり、複数の Rerank プロバイダー(Cohere、Jina、Aliyun Dashscope)にも対応しています (GitHub)。

更新情報(2025 年)

  • RAG-Anything のリリースにより、マルチモーダル処理が強化されました(2025.06.16) (GitHub)。
  • .env による設定値の最適化:例として LLM_TIMEOUT、温度設定の変更、Rerank プロバイダーの追加など、環境設定の拡張が行われています (GitHub)。
  • ワークフローと CI/CD:最新の Docker イメージ自動ビルドやリリース管理が GitHub Actions 上で活発に運用されています (GitHub)。

図表やアーキテクチャ図へのリンク

GitHub および PyPI ドキュメントに以下のようなフローチャートが掲載されています。

  • インデックス時のフロー図
  • 検索/クエリ時のフロー図
    ("LightRAG Indexing Flowchart"、"LightRAG Retrieval and Querying Flowchart") (PyPI)。

実際の図は README やドキュメントにあると思われますので、GitHub ページで README.assets.md ファイルをご確認いただくとビジュアルで把握しやすいです。


実装アーキテクチャ(構成要素)

以下は、LightRAG のアーキテクチャの大まかな構造と処理フローです:

┌──────────────────────────────────────────┐
│  入力ドキュメント(テキスト/PDF/画像/表など) │
└──────────────────────────────────────────┘
                     │(取り込み)
                     ▼
┌───────────────────────┐
│  Embedding モデルで文書分割/ベクトル化 │
│  → ベクトルストア(例:PostgreSQL/Faiss) │
│  → ナレッジグラフ上のエンティティ/関係抽出 │
└───────────────────────┘
                     │
                     ▼
┌───────────────────┐
│  検索処理(クエリ) │
│  - ベクトル検索による初期取得               │
│  - Reranker による精緻化(mix モード推奨)  │
│  - グラフ構造のリッチ検索補完               │
└───────────────────┘
                     │
                     ▼
┌───────────────────────────────────┐
│  LLM による応答生成・関係記述(必要に応じて要約) │
│  → 出力されたスニペットやナレッジグラフ情報も含む │
└───────────────────────────────────┘
                     │
                     ▼
┌────────────────────────────┐
│  Web UI/API/チャットインターフェース             │
│  - クエリ受付、ナレッジグラフ表示、応答提示       │
│  - Ollama 互換インターフェース                  │
└────────────────────────────┘

補足ポイント

  • 初期化処理:Core を使う場合、initialize_storages()initialize_pipeline_status() の呼び出しが必須です(さもないとエラー発生) (GitHub)。
  • サンプルコードlightrag_openai_demo.pylightrag_openai_compatible_demo.py が公式サンプルとして推奨されています (GitHub)。
  • ナレッジグラフ管理:エンティティ・リレーションの追加、編集、削除といった操作が可能で、同期/非同期の API が整備されています (GitHub)。

まとめ

  • LightRAG は、ドキュメント探索を効率化する RAG フレームワークで、Embedding/Reranker/LLM による検索・生成処理を統合しています。
  • 導入手段は、CLI+Web UI/API を提供するサーバ版と、組み込み用途に向けた Core モジュール版が存在します。
  • アーキテクチャ設計は、ドキュメント → Embedding → 検索・Rerank → LLM 応答 → UI/API 出力という流れで構成されており、ナレッジグラフベースの高度な検索が可能です。

図表へのリンクを追いたい場合は、README や README.assets、ドキュメント内の Flowchart を探すと視覚的に理解しやすいと思います。必要であればさらに深掘りしますので、お気軽にお知らせください!