👨‍🚒

RAGにGRPOを組み合わせて応答精度を改善する

に公開

はじめに

強化学習(RL)と生成モデルを組み合わせることで、AIの応答生成能力は大きく向上する可能性があります。本記事では、RAG(Retrieval-Augmented Generation)とGRPO(Group Reinforcement Policy Optimization)を組み合わせたシステムについて紹介します。

RAGは、生成モデルが外部の知識ベースから関連情報を検索し、その情報をもとに回答を生成するアーキテクチャです。これにより、事前学習された情報を動的に活用し、高精度な応答を得ることが可能になります。しかし、RAG単独では「最適な応答」を生成することに限界がありました。

今回、これにGRPOという強化学習の手法を導入して、応答精度を改善を試みました。

RAG

https://arxiv.org/abs/2005.11401
RAG(Retrieval-Augmented Generation)は、生成モデル(たとえばLLM)が外部知識ベースから関連情報を検索し、その情報を元に回答や文章を生成するアーキテクチャです。RAGの基本構造はこちらです。

  • Data Processing(データ処理)
    書籍などのデータを読み込み、テキストチャンクに分割します。これにより、検索可能な単位で情報を構造化します。
  • ChromaDB(ベクトルデータベース)
    テキストチャンクを埋め込み(ベクトル)に変換し、ChromaDBなどのベクトルDBに保存します。このデータベースは後の検索フェーズで使用されます。
  • Base Models(基盤モデル群)
    Sentence Transformer:ユーザーのクエリをベクトル化して、ベクトルDBから関連する情報を取得するのに使用。
    LLM+LoRA:LoRAで微調整された大規模言語モデルが、取得した文脈(Context)をもとに応答を生成します。
  • Inference(推論)
    ユーザーのクエリを受け取り、ベクトルDBから関連する文脈を検索し、それを使って応答を生成します。

このように、RAGは検索と生成のハイブリッド型アーキテクチャであり、外部知識を動的に取得して、それをベースに高精度な回答を行うのが特徴です。

DeepSeek-R1

https://arxiv.org/abs/2501.12948
2025年に公表された"DeepSeek-R1: Reinforcing Reasoning Ability in LLMs with Reinforcement Learning"においてRLの一手法であるGRPO(Group Reinforcement Policy Optimization)を使って成果を出したことが述べられています。

GRPO(Group Reinforcement Policy Optimization)

https://arxiv.org/abs/2402.03300
GRPOは、強化学習の一種で、特に複数のポリシーを同時に最適化しながら、全体の性能を高めることを目的とした手法です。通常のPPO(Proximal Policy Optimization)などのアルゴリズムが単一のポリシーを最適化するのに対し、GRPOはグループ全体の行動と報酬を考慮して、ポリシー群を協調的に最適化します。

今回紹介するRAG+GRPOシステム

今回、これにGRPOという強化学習の手法を導入することで、複数の候補応答を比較し、最も適切な応答を選び出す仕組みを構築しました。

RAGを用いた回答生成モデルに対しても、RLを適応できれば、特にデータ特有の質問を用いて trainingを行うことができれば、回答生成能力の向上が期待できます。

今回構築したRAG+GRPOシステムは、検索ベースの方法のパワーと強化学習を組み合わせています。システムは最初にデータベースから関連するコンテキストを取得し、次に LoRA の微調整を備えた DeepSeek-R1 モデルを使用して複数の候補応答を生成します。

これらの候補は報酬モデルによって評価され、応答グループ間の利点を活用する強化学習アプローチを使用してベースモデルが更新されます。構造を図示します。

図で、右側の紫の領域(GRPO Training Loop)が、RAG単独にはない強化学習部分です。

GRPOトレーニングループ

  • Retrieve context(RAGと同じく文脈を取得)
  • Generate candidates:複数の応答を生成
  • Calculate rewards:報酬モデルを使って、それぞれの候補応答を評価
  • Compute GRPO loss:良い応答に導くような損失を計算
  • Update model:報酬に基づいてモデルを改善

RAG+GRPOの場合のBase Models

  • LLM+LoRA
    クエリ&コンテキストからの応答生成
    GRPOループによって応答が報酬に基づいて更新されます(追加)
  • Sentence Transformer
    クエリに対して意味的に類似した文書を検索(Retrieval)
  • Reward Model(追加)
    応答の品質をスコア化(正確性、文体、一貫性などを評価)し、GRPOの学習信号として使用されます

システムの特徴

  • Retrieval: データベースからコンテキストを取得(典型的なRAG構成)。
  • Generation: LoRA微調整済みのDeepSeek-R1で複数の応答候補を生成。
  • Reward: 報酬モデルによって各応答候補をスコアリング。
  • Optimization (GRPO):
    -通常のRLより洗練された、グループ単位での報酬最適化。
    -複数応答の中で比較しながら、どのタイプの応答がより望ましいかを学習。
    -RAGの限界だった「生成部分の制御」が、RLで可能になります。
    -単一の「良い答え」だけを強化するのではなく、相対的な良さ(Group Advantage)を使って多様性と品質のバランスを取れます。
    -LoRAによる軽量なファインチューニングで計算コストを抑えつつ、学習可能です。

スクリプトへのリンク

https://www.kaggle.com/code/stpeteishii/wine-rag-approach-deepseek-r1-w-grpo

終わりに

LLMモデルの大きさ、訓練用質問数、epochs回数などは、モデルの性能に大きく影響します。しかし、現在使用している環境では計算資源に制限があり、十分な規模でのモデル訓練が難しい状況です。これらの要素をそれぞれ10倍から100倍に拡張して訓練できれば、精度が大幅に向上することが予想されます。

このアプローチにより、データに特化した質問応答生成が強化され、モデルの応答能力がさらに向上することが期待されます。

Discussion