このページの本文へ

FIXER Tech Blog - AI/Machine Learning

ローカルRAGの回答品質を向上する「Advanced RAG」 違いと実装の手順

2025年12月16日 15時00分更新

文● 須山大輝/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「大学時代に作った『Naive RAGと、今学ぶ『Advanced RAGの差分メモ」を再編集したものです。

はじめに

 この記事は、「ローカル環境でRAG(Retrieval-Augmented Generation)をやってみたい人」に向けた技術メモです。

 大学時代、私はローカルLLMを使って「ドキュメントを検索して答えてもらうシステム」を作っていました。

 「動けばOK」の精神で構築していましたが、最近あらためて調べ直すと、私が作っていたシンプルな構成は 「Naive RAG」、そこに工夫を加えたものは 「Advanced RAG」 と呼ばれていることを知りました。

 本記事では、過去に実装した「Naive RAGの構成と課題」、そして今ならこうする「Advanced RAGの改善アイデア」をざっくり紹介します。

かつて作った「Naive RAG」の構成

 私が実装していたのは、最もシンプルな構成です。

分割:ドキュメントを一定の文字数(固定長)で機械的にチャンク分割
保存:チャンクをベクトル化してDBへ保存
検索:ユーザーの質問をベクトル化し、類似度の高いチャンクをTop-N件取得
生成:取得したテキストをそのままプロンプトに埋め込み、LLMに回答させる

 とりあえず動くものの、運用してみるといくつかの「惜しい点」が見えてきました。

実際に運用して感じた「3つの壁」

チャンク長のさじ加減が難しい:短すぎると文脈が切れ、長すぎるとノイズが増える
型番・数値の「完全一致」に弱い:「503」を探したいのに、意味が近いだけの「500」や一般論がヒットしてしまう
図表・レイアウト情報の欠落:標準的なテキスト抽出だけでは、図の中の文字や表構造が無視されてしまう(OCR等の前処理不足)

Advanced RAGで解決するテクニック集

 最近のトレンド(Advanced RAG)を調べると、抱えていたモヤモヤを解消する具体的なアプローチが体系化されていました。

1. チャンク分割の工夫(Chunking Strategy)

 ただの固定長ではなく、オーバーラップ(重複部分)を持たせたり、意味のまとまりを意識します。

オーバーラップ(Sliding Window):チャンクのつなぎ目で文脈が失われないよう、前後を少し重複させて分割する
セマンティックチャンク:文脈や意味の変わり目で区切る
Parent-Child(階層チャンク):検索は「細かいチャンク」で行ってヒット率を上げ、LLMにはその親にあたる「大きなチャンク」を渡して文脈を確保する手法

2. ハイブリッド検索(Hybrid Search)

 「ベクトルの意味検索」と「キーワードの一致検索」を組み合わせます。

ベクトル検索:表記ゆれや意味的な検索に強い
キーワード検索(BM25等):型番、専門用語、固有名詞に強い
ランキング統合(RRF等):性質の違う2つの検索結果を、順位をもとに公平に混ぜ合わせる手法

 両者を組み合わせることで、「用語」と「文脈」の両方をカバーします。

3. 再ランキング(Reranking)

 検索精度を上げるための「二段構え」構成です。

Retrieve:ベクトル検索などで広め・高速に候補を集める(例:Top 50)
Rerank:重い計算モデル(Cross-Encoder等)で精密に並び替え、本当に重要なTop 5に絞る

※精度と引き換えにレイテンシ(応答時間)が増えるため、Retrieve件数を調整して精度とレスポンス速度のバランスを取る

4. クエリの最適化(Query Transformation)

 ユーザーの質問をそのまま使わず、検索しやすい形に整形します。

クエリリライト:曖昧な質問を具体的に書き換える
クエリ分解:複雑な質問を複数のサブ質問に分けて検索する

5. コンテキスト圧縮

 LLMに渡す情報を最適化し、コスト削減と精度向上(ノイズ低減)を狙います。

フィルタリング:検索結果の中から、クエリと関連度が低い文章をピンポイントで除外する
要約:長いドキュメントをLLMで要約し、情報量を保ったままサイズを小さくする

6. 評価(Evaluation)

 「なんとなく」を脱却し、LLM-as-a-judge(LLMを審査員にする手法)で数値化します。

・主な指標
 ・Faithfulness(忠実性):回答がドキュメントに嘘偽りなく基づいているか(ハルシネーションの検知)
 ・Answer Relevance(関連性):質問に対して適切な回答になっているか
ツール:RAGASやTruLensなどのフレームワークを使用

これからローカルRAGをやる人へのロードマップ

 いきなり全部盛り込むのは大変なので、以下のステップがおすすめです。

1. Naive RAGの実装:まずは標準的なベクトル検索だけでパイプラインを通す
2. チャンク戦略の変更:オーバーラップや区切り方を変えて変化を見る
3. ハイブリッド検索の導入:キーワード検索を混ぜてみる
4. Rerankerの追加:検索結果の並び順を改善する
5. 評価:ツールを使って精度を数値化する

おわりに

 調べてみて、「当時の課題に対して、こんなアプローチがあるんだな」と学びになりました。

 これからローカルRAGを構築される方は、まずNaiveな構成で立ち上げつつ、課題に合わせて上記のAdvancedな手法を「つまみ食い」していくのが良さそうです。

須山大輝/FIXER
2024年度の新卒社員です。
趣味はサッカー観戦やゲームです。
今は、自治体プロジェクトに参画中です。

カテゴリートップへ

この連載の記事