Self-RAGについて

## Self-RAG: 自己反省による検索強化生成

Self-RAGは、検索強化生成（RAG）モデルのパフォーマンスを向上させるための新しいアプローチであり、大規模言語モデル（LLM）が情報の検索時期と取得情報の関連性および品質を評価する能力を持つことを可能にします。この記事では、従来のRAGの限界、Self-RAGの内部動作、そのトレーニングプロセス、実用的な応用、および産業用LLMに革命をもたらす可能性について探ります。



![https://miro.medium.com/v2/resize:fit:2000/format:webp/0*4TiIikwcREA8Irnh](https://miro.medium.com/v2/resize:fit:2000/format:webp/0*4TiIikwcREA8Irnh)


### 従来のRAGの限界

RAGは外部知識でLLMを強化するのに効果的ですが、従来のRAGの実装はクエリの関連性にかかわらず、一定数のパッセージを無差別に取得します。これにより、関連性のない情報や不十分な情報がLLMの応答に組み込まれることになり、正確性と多様性が損なわれる可能性があります。たとえば、ユーザーが過去15年間の企業の財務業績に関する情報を求めた場合、従来のRAGシステムは過去5年または10年のデータしか含まれていない文書を取得することがあり、応答が不完全になることがあります。

さらに、従来のRAGシステムは文書の断片とユーザーのクエリとの類似性を判断するためにエンベディングモデルに大きく依存しています。しかし、これらのモデルはクエリの意味を正確に捉えられないことがあり、関連性のないコンテキストの取得や誤った回答の可能性があります。

### Self-RAGの導入：新しいRAGアプローチ

Self-RAG（自己反省型検索強化生成）は、LLMが情報の検索と評価に関して自己反省し、情報に基づいた決定を行うメカニズムを導入することで、従来のRAGの欠点に対処します。このフレームワークは、いつ情報を検索し、何を検索し、取得した情報をどのように評価するかを学習させることで、LLMの一貫性とパフォーマンスを向上させます。

### Self-RAGの仕組み：三段階のプロセス

Self-RAGは、「自己反省トークン」を使用して推論中のLLMの動作を制御し、特定のタスク要件に適応できるようにします。このプロセスは次の3つの主要なステップで構成されます：

1. **検索:** Self-RAGはまず、包括的な応答を生成するために外部情報を取り込む必要があるかどうかを判断します。必要であれば、外部の検索モジュールをトリガーして関連する文書を検索させます。
2. **生成:** 検索が不要な場合、Self-RAGは従来の言語モデルのように内部知識に基づいて応答の次の部分を予測します。しかし、検索が必要な場合、Self-RAGは取得した文書の関連性を評価し、それを応答生成プロセスに組み込む前に検討します。
3. **批評:** 取得した情報を使用して応答を生成した後、Self-RAGはその出力を批評して正確性と完全性を確認します。これには、取得したパッセージが生成された応答を支持するかどうかの評価と、応答全体の品質の評価が含まれます。

### Self-RAGのトレーニング：二つのモデルのアプローチ

Self-RAGのトレーニングプロセスには、批評モデルと生成モデルの2つのモデルが含まれます。

1. **批評モデル:** このモデルは、推論中にLLMが自己反省するための反省トークンを生成するようにトレーニングされます。このプロセスは、入力と出力のペアのデータセットに反省トークンを手動で注釈付けすることから始まります。手動注釈はコストがかかるため、著者はGPT-4を使用してこれらの注釈を効率的に生成し、各反省トークンに特定の指示を提供しました。
    
    例えば、「[Retrieval]」トークンの指示は、GPT-4に外部文書が応答の質を向上させるかどうかを評価するよう促します。この注釈付きデータは、標準の条件付き言語モデリング目標を使用して批評モデルをトレーニングするために使用されます。
    
2. **生成モデル:** このモデルは、標準の語彙と反省トークンの両方を含むテキスト出力を生成するようにトレーニングされます。このモデルのトレーニングデータは、批評モデルとリトリーバーを使用して生成されます。批評モデルは、特定の入力と出力のペアに対して検索が必要かどうかを判断し、必要に応じてリトリーバーが関連するパッセージを取得します。その後、批評モデルは取得したパッセージの関連性と支持度を評価し、適切な批評トークンを出力に追加します。この拡張データセットは、標準の次のトークン予測目標を使用して生成モデルをトレーニングするために使用されます。

### Self-RAGの実用的な応用

Self-RAGは、LLMのパフォーマンスを向上させるためにさまざまなアプリケーションに統合できます。

1. **直接データ挿入:** この単純なアプローチでは、関連するデータをフォーマット_プロンプト関数のパラグラフパラメータに直接挿入します。これにより、Self-RAGはデータに直接アクセスして応答生成プロセスに組み込むことができ、特定のソースからの事実に基づいた質問に適しています。
2. **エンベディングベースの検索:** 大規模データセットを含むより複雑なシナリオでは、エンベディングベースの検索メカニズムを使用できます。これには、データのエンベディングを生成し、クエリのコンテキストに基づいて関連情報を抽出する検索メカニズムを使用します。このアプローチにより、Self-RAGはより広範なクエリとデータセットを処理できます。

### Self-RAGの従来のLLMに対する利点

Self-RAGは、従来のLLMに対していくつかの利点を提供します：

1. **適応型パッセージ検索:** 従来のRAGが一定数のパッセージを検索するのに対し、Self-RAGは検索の必要性を動的に判断し、必要な場合にのみパッセージを検索します。この適応性により、より効率的で正確な応答が可能になります。
2. **検索関連性の向上:** Self-RAGの批評トークンを使用した取得パッセージの関連性評価能力により、関連情報のみが応答に組み込まれることが保証されます。これにより、クエリとパッセージの意味的類似性を常に正確に捉えることができない従来のエンベディングベースの検索方法の限界に対処します。
3. **事実性と信頼性の向上:** Self-RAGの反省トークンによって促進される自己反省メカニズムにより、生成された応答を批判的に評価できるため、従来のLLMや特定のタスクにおけるChatGPTよりも事実に基づいた信頼性の高い出力が得られます。
4. **LLMの基盤の保持:** LLMの行動を変更しバイアスを導入する可能性がある微調整やRLHFメソッドとは異なり、Self-RAGは主に反省トークンを通じてLLMの検索および評価プロセスを制御することに焦点を当て、元のモデルの固有の能力を保持します。

### 将来の方向性と結論

Self-RAGは、検索強化生成（RAG）システムのパフォーマンスと信頼性を向上させるための有望な方向性を示しています。この分野の研究が進むにつれて、従来のLLMの限界に対処し、さまざまな産業応用でその完全な潜在能力を引き出すためのさらなる改善が期待されます。

将来の探求分野の1つは、反省トークンの最適化です。Self-RAGは現在4つの異なる反省トークンを使用していますが、より少ないまたは意味的に異なるトークンの使用を調査することで、より効率的な実装が可能になるかもしれません。さらに、特定の反省トークンの判断に小さなLLMアーキテクチャを使用することを検討することで、性能を損なわずに計算上の利点を提供する可能性があります。

さらに、Self-RAGのパフォーマンスに対する異なる批評モデルのサイズの影響を調査することで、精度と計算コストの間のトレードオフについての洞察を得ることができます。現在の研究は主に教師あり微調整に焦点を当てていますが、Self-RAGフレームワーク内に人間のフィードバックからの強化学習（RLHF）を統合することで、モデルの人間の好みに合わせる能力を高め、より望ましい応答を生成する可能性があります。

結論として、Self-RAGは検索強化生成の分野における重要な進展を示しています。LLMが自己反省し、情報の検索と評価について情報に基づいた決定を行うことを可能にすることで、Self-RAGはさまざまなドメインでより信頼性が高く、事実に基づいた、多用途なLLMアプリケーションへの道を開きます。この分野の研究が進化し続けるにつれて、LLMの力を現実の問題解決に活用するためのさらに革新的なアプローチが期待されます。

---

# **事例：ハリー・ポッターと自己学習ナレッジグラフRAG**

このデモでは、私たちはRAGのナレッジグラフの3つの主要な強力なアプリケーションをデモし、それがRAGの精度を向上させ、製品化までの時間を劇的に短縮し、自己学習RAGの最初の例の1つである方法を示したかったのです。

- 再帰的検索
- オンデマンドオントロジー/自動ナレッジグラフ
- メモリとマルチホップ推論

ビデオリンク: [https://x.com/chiajy2000/status/1750573481971134811?s=20](https://x.com/chiajy2000/status/1750655170852331905?s=20)

このデモでは、ハリーポッターの本の章をアップロードし、新しい章が追加されるたびに自動的な知識グラフが構築される様子を見ます。知識グラフは、特定の質問に関連する関係やエンティティを検出しキャプチャするために構築され、ランダムな粒度の関係やエンティティをすべてキャプチャするのではなく、その質問に対応するものです。この形式では、時間の経過とともに再帰的に知識グラフを取得し、反復的に構築するように設定でき、新しい情報が導入されるたびにそれを行うことができます。

その後、知識グラフが自動的に結合しマージする方法を示し、別々の質問がされるたびに作成されるミニ知識グラフに基づいて学習することができるようにします。これにより、質問がされるたびに時間の経過とともに学習することができます。これにより、この自動化された知識グラフツールに質問のリストを投げるだけで、関連する知識ベース/第二の脳を作成することができます。開発プロセスを簡素化するだけでなく、この知識ベースはLLMのためのメモリツールとして機能し、簡単にマルチホップの推論を行うことができます。

私たちのテックスタックでは、Langchain、Pinecone Serverless、OpenAIを使用しました。

### 再帰的な取得

知識グラフは、単一の概念を中心に情報を修正し、繰り返し取得するコンテキストストアとして機能することができます。

このミニ知識グラフは単一の概念であるため、取得はよりスコープが狭く、構造化されており、その概念を含む質問に焦点を当てています。これにより、時間をかけて複数の文書や異なるチャンクにわたる単一の概念に関連するデータを取得することができます。

時間をかけた取得に関しては、RAGシステムが常にベクトルデータベースに新しい更新を持ち、新しい情報が流れ込んで歴史的に存在する回答に追加したい場合を想像してみてください。これが可能になります。

異なるチャンクを対象とした取得に関しては、質問の中心概念に関連する情報が多くの異なる文書やページに分散している場合を想像してみてください。これを自動的に取得し構造化することができます。

知識グラフは、焦点となる関連する概念に繰り返し情報を追加するコンテキストに意識したフィルターとして機能します。

### オンデマンド知識グラフ

概念的なレベルでは、知識グラフは単純なものです。それは概念間の決定論的な関係を作成することで、物事がどのように関連しているかを理解できるようにします。

知識グラフを使用して構築することに新しい人々が直面する最大の問題は、適切なコンテキストに対して適切なオントロジーを構築することを理解することです。



![https://miro.medium.com/v2/resize:fit:1100/format:webp/0*1vflEcOJfUAudXq1](https://miro.medium.com/v2/resize:fit:1100/format:webp/0*1vflEcOJfUAudXq1)



オントロジーとは、基本的にはグラフ内で追跡したい概念と関係です。上記のグラフでは、「著者」という概念や「hasAuthor」という関係がすべてオントロジーの一部であり、それは作成者が考えている特定の文脈において有用であることを期待しています。

LLMと特定の質問の文脈を考慮すると、作成されるオントロジーは大きく異なる場合があります。同じドメイン内でも、異なる質問には異なるオントロジーが存在します。

上記のデモでは、LLMによってコンテキストに応じた知識グラフの作成を可能にするワークフローを構築しました。質問に応じて、知識グラフはその質問に特に関連する概念と関係のみを捉えます。これは、大規模な知識グラフ内のあらゆる種類の関係やエンティティを捉えることよりも、特定の文脈や質問に関連する関係やエンティティに焦点を当てる方が効率的であるという私たちの信念に関連しています。

ここでの重要なステップは、知識グラフの構築を人間が介入して管理するためのワークフローツールを含めることです。現時点ではかなり遠い未来のことですが、時間の経過とともに、モデル自体が関連するミニ知識グラフの作成をより多く自動化できるようになると予想しています。ただし、一般的に知識グラフやLLMの採用が増えると、要求されるユースケースの数や細かい制御の粒度も増加し、現在存在しないものとなるでしょう。

### メモリとマルチホップ推論

ハリーポッターのデモを通じて、質問「ハリーは何を着ていますか？」から作成された最初のミニ知識グラフが、ハリーに関する概念に関するコンテキストメモリとして保存されていることがわかります。

概念的に関連する質問「ダンブルドアは何を着ていますか？」がなされると、第二のミニ知識グラフが作成され、重なり合う関係を検出し、自動的に最初のミニ知識グラフに同期されます。

これは、RAGパイプライン内のメモリのデモンストレーションであり、具体的にはハリーポッターのミニKGのものです。その後、「ハリーとダンブルドアは何を着ていますか？」という最後の質問がなされると、検索が実行されると、LLMはまず関連する関係と事実をメモリストアでチェックします。それは、ハリーとダンブルドアの共通グラフが取得に関連しており、'ハリー'＆'ダンブルドア'＆'を持っている'に関連するものを取得します。これは、異なる文書間で異なるエンティティが共有する概念的関係を連結し、トラバースする単一の取得アクションで行われるマルチホップ推論です。

メモリは、異なるページや文書からの概念を横断的に推論するためにLLMが必要とする主要なプリミティブです。

RAGパイプラインに知識グラフシステムを実装することの非常に興味深い結果の1つは、システム内でのコンテキスト収集のインテリジェントな性質により、RAGシステムをMLエンジニアにとって馴染みのある方法でテストできることです。つまり、数百もの合成的な質問をRAGシステムに投げ、知識グラフとコンテキストを時間の経過とともに自動的に構築させることができます。これは、自己学習型のRAGシステムを作成する方法の最初の例の1つになるでしょう。

メモリ、自動化された知識グラフ、マルチホップ推論、および再帰的取得は、正確で高度なRAGシステムの非常に重要な部分です。これらがどのようにして高度なRAGテクニックが結集して、ますますスマートなRAGシステムを作り上げるか、そのあり方を示しています。