
はじめに
この記事は、「ローカル環境で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をやる人へのロードマップ
いきなり全部盛り込むのは大変なので、以下のステップがおすすめです。
- Naive RAGの実装:まずは標準的なベクトル検索だけでパイプラインを通す
- チャンク戦略の変更:オーバーラップや区切り方を変えて変化を見る
- ハイブリッド検索の導入:キーワード検索を混ぜてみる
- Rerankerの追加:検索結果の並び順を改善する
- 評価:ツールを使って精度を数値化する
おわりに
調べてみて、「当時の課題に対して、こんなアプローチがあるんだな」と学びになりました。
これからローカルRAGを構築される方は、まずNaiveな構成で立ち上げつつ、課題に合わせて上記のAdvancedな手法を「つまみ食い」していくのが良さそうです。





![Microsoft Power BI [実践] 入門 ―― BI初心者でもすぐできる! リアルタイム分析・可視化の手引きとリファレンス](/assets/img/banner-power-bi.c9bd875.png)
![Microsoft Power Apps ローコード開発[実践]入門――ノンプログラマーにやさしいアプリ開発の手引きとリファレンス](/assets/img/banner-powerplatform-2.213ebee.png)
![Microsoft PowerPlatformローコード開発[活用]入門 ――現場で使える業務アプリのレシピ集](/assets/img/banner-powerplatform-1.a01c0c2.png)


