LightRAG：グラフとデュアル検索を組み合わせた RAG の進化形

※ このページは「LIGHTRAG: SIMPLE AND FAST RETRIEVAL-AUGMENTED GENERATION」の要約と周辺知識の解説になります。

## このページでわかること

1. **背景と課題**：RAG システムは、大規模言語モデル（LLM）に外部知識を組み込むことで、より正確で文脈に沿った応答を生成するための手法。しかし、従来の RAG にはフラットなデータ構造や文脈把握の欠如といった問題があり、複雑な依存関係を扱うのが困難だった

2. **LightRAGの特徴**：テキストのインデックス作成と検索プロセスにグラフ構造を導入することで、より包括的な情報検索を実現。特に、グラフ構造を使ってエンティティ間の関係性を明確にすることで、質問に対する文脈に沿った回答を素早く提供できる。また、データが変化する環境でも効率的に対応できるよう、インクリメンタル更新アルゴリズムも搭載



## 対象読者

1. 自然言語処理や大規模言語モデルの研究者。特に、RAG の改善に関心がある研究者
2. 情報検索やデータインデックスを扱うエンジニア。迅速かつ文脈に沿った情報取得を目指すエンジニア
3. リアルタイムでの知識更新が求められるアプリケーションの開発者。変化するデータ環境に対応できるシステム設計を検討している技術者


## 従来の RAG の問題点

従来 RAG の問題点の一つは、フラットなデータ表現であることです。フラットなデータ表現では情報の複雑な相互関係や文脈を十分に捉えることができないからです。

フラットなデータ表現とは、情報を単純に個別の項目として並べ、各要素の相互関係や構造を持たせずにデータを格納する方法です。例えば、リスト形式や単一のテーブル形式などがこれに該当します。このようなデータ構造は、個々の情報へのアクセスは容易であるものの、それらがどのように関連し合っているかを示すのには限界があります。

この限界により、RAG システムを構築する際に、本来情報として持っていたはずのエンティティ間の関係や依存性も失われてしまいます。情報は単なる断片として保持されるため、エンティティがどのように相互作用するかといったコンテクストが見えにくくなります。例えば、「電気自動車」と「大気の質」、「公共交通インフラ」という要素が並べられている場合、本来はこれらを関連ある単語として扱えるといいのですが、フラットなデータ表現ではそれは不可能です。これにより、ユーザが RAG システムに「電気自動車の普及が都市環境に与える影響」を尋ねても、それぞれの要素が断片的に取り出されるだけで、相互作用を含んだ一貫性のある回答が得られないという結果になります。

フラットなデータ表現では、エンティティ間の関係と同様に、文脈に基づいた関連情報の結び付けが失われてしまいます。ユーザの質問に対して適切な文脈をもって回答を生成するためには、複数の情報を統合し、文脈に沿った形で回答する必要がありますが、独立して保持されている情報だけでは、文脈に合った情報を引き出すのが難しくなります。

また、情報のスケーラビリティも問題です。フラットなデータ表現は大規模なデータセットや複雑な構造を持つデータに対して効率的ではありません。フラットな形式はデータのサイズが増えるに従って検索コストが増大し、関連性の高い情報を迅速に見つけるのが困難になります。データが大きかったり、頻繁にデータが追加される場合、RAG システムでスピーディな応答を実現するのは非常に難しくなります。

このように、フラットなデータ表現は情報の関連性と文脈の把握を阻害し、データの急速な増加や変化に対応しづらい点で限界があり、複雑な情報を適切に扱うための改良が必要とされています。これらの問題を解決するために、LightRAG はグラフ構造や二層の検索アプローチを取り入れ、より文脈に沿った、かつ迅速な情報提供を目指す。

## LightRAG とは？

LightRAG は、従来の RAG システムの課題を解決するために設計された、高速かつ効率的な情報検索・生成システムです。一般的な RAG システムは LLM と外部知識を結び付け、ユーザーの質問に対してより正確な回答を生成することを目指していますが、従来のシステムにはフラットなデータ表現や文脈の欠如による制約がありました。LightRAG は、こうした限界を克服するために、データのインデックス化と検索にグラフ構造を取り入れ、効率的かつ文脈に沿った情報を提供できるように設計されています。

### グラフベースのテキストインデックス化

LightRAG の革新の一つは、グラフベースのテキストインデックス化です。従来の RAG システムはテキストデータを単純なデータチャンクとして扱っていましたが、LightRAG では情報をエンティティ（人物、場所、イベントなど）とその関係性のネットワークとして捉え、知識グラフを構築します。例えば、「電気自動車」「大気の質」「公共交通インフラ」といったエンティティ間の関連性をグラフ構造に組み込むことで、相互依存的な文脈を持つ複雑な質問に対しても一貫性のある回答が可能になります。このグラフ構造により、エンティティ間の関係性を考慮した高度な検索が可能となり、各情報を独立したチャンクとして扱うよりも正確で文脈に沿った検索が実現します。

### デュアルレベル検索パラダイム

また、LightRAG は「デュアルレベル検索パラダイム」という二段階の検索方式を採用しています。これは、具体的なエンティティや関係性を対象とした「低レベル検索」と、テーマやトピック全体を対象とした「高レベル検索」に分かれ、詳細な情報と全体像の両方を取り入れた検索結果を提供します。低レベル検索はエンティティの特性や具体的な関係を正確に抽出し、一方で高レベル検索はより包括的なテーマに関する情報を集約するため、ユーザーの質問に対して広い視点からも詳細な視点からも応答できる点が特徴です。

### 逐次更新アルゴリズム

さらに、LightRAG はデータの変化に迅速に対応する「逐次更新アルゴリズム」を備えています。通常、RAG システムは新しい情報を取り込む際にインデックスの再構築が必要ですが、LightRAG では新しいデータを既存の知識グラフに逐次的に追加し、再構築の手間とコストを削減しています。この仕組みにより、動的なデータ環境でも最新の情報を反映した応答が提供できるため、ニュースやトレンドといった変化の激しい領域での利用にも適しています。

### 実験結果

```plantuml
@startuml
<style>
root {
  Padding 0
  Margin 0
}
footer {
  FontColor black
  FontSize 17
}
</style>
footer  LightRAG の実験結果\n(出典：LIGHTRAG: SIMPLE AND FAST RETRIEVAL-AUGMENTED GENERATION)
title <img:https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758571/4304275a-5112-9bfb-05ff-4851a18ae994.png>
@enduml
```

この実験結果の 4 軸は以下になります。

- 包括性 (Comprehensiveness)：回答が質問のすべての側面や詳細をどの程度網羅しているか
- 多様性 (Diversity)：回答が異なる視点や洞察を提供する多様さや豊かさの度合い
- 理解促進 (Empowerment)：回答が読者にテーマの理解を深め、情報に基づいた判断を下す手助けをどの程度しているか
- 総合評価 (Overall)：前述の3つの基準を総合的に評価し、最も優れた回答を特定する

この実験結果からも、LightRAGは従来のRAGシステムと比較して検索の正確性、応答速度、そして新しいデータへの適応性が優れていることがわかります。

### 具体的な実装

ソースコードは ↓ のレポジトリで公開されています。

https://github.com/HKUDS/LightRAG


具体的に何をしているかは ↓ のフローで見るのがわかりやすいです。

```plantuml
@startuml
<style>
root {
  Padding 0
  Margin 0
}
footer {
  FontColor black
  FontSize 17
}
</style>
footer  LightRAG のアルゴリズムフロー\n(出典：LIGHTRAG: SIMPLE AND FAST RETRIEVAL-AUGMENTED GENERATION)
title <img:https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758571/8c35afbb-5a4c-b9f5-7f85-7b6ab250bb81.png>
@enduml
```

## まとめ
以上が LightRAG の要約でした。
NativeRAG や GraphRAG の上位互換的に扱える技術として注目度が高い技術です。実際に使ってみて、どれくらい RAG システムの性能が向上するのか見てみたいですね。

おわり。