株式会社TIMEWELLの濱本です。
RAGを導入したものの、「回答がずれる」「関係ない文書を引っ張ってくる」「ハルシネーションが減らない」。こういう悩みを抱えているエンジニアの方、少なくないはずです。RAGはRetrieval-Augmented Generationの略で、検索で拾った情報をもとにLLMが回答を生成する仕組みですが、「入れただけ」では精度が出ないことが多い。
2025年のDeNAエンジニアリングブログでは、社内AIヘルプデスクのRAG精度改善プロセスが詳しく公開されています。彼らも初期段階では回答精度に苦戦し、チャンク設計の見直しやリランキングの導入など段階的な改善を経て実用レベルに到達しました。
ここでは、RAGの回答精度を引き上げる7つの具体的テクニックを紹介します。チャンク設計のパターン比較や、精度を定量的に測る評価指標もまとめました。
まず、精度が低い原因を切り分ける
改善に取りかかる前に、問題がどこにあるのかを特定するのが先です。RAGシステムには3つのボトルネックがあります。
| 段階 | 処理内容 | よくある問題 | 確認方法 |
|---|---|---|---|
| 前処理 | ドキュメントの読み込みとチャンク分割 | PDFのパース失敗、チャンク粒度の不適切 | 元文書とチャンクを目視比較 |
| 検索 | ベクトル検索やキーワード検索 | 関連文書がヒットしない、ノイズが多い | 検索結果の上位10件を手動で精査 |
| 生成 | LLMによる回答文の作成 | ハルシネーション、情報の取捨選択ミス | 検索結果は正しいのに回答が間違う場合 |
経験上、最も効果が大きいのは「検索」段階の改善です。LLMに正しい情報が渡れば、回答の質は自然と上がる。逆に、検索で拾った文書が的外れだと、どんなに優秀なLLMを使っても正確な回答は出ません。
精度を上げる7つのテクニック
テクニック1:チャンク設計を見直す
チャンキング、つまり文書をどう分割するかは、RAG精度に直結します。ai-market.jpの調査では、適切なチャンキングにより誤情報の生成を42%削減できたと報告されています。42%はかなり大きい。
主要なチャンキング手法を比較します。
| チャンキング手法 | 概要 | チャンクサイズ目安 | 向いている文書 | 実装コスト | 精度 |
|---|---|---|---|---|---|
| 固定長分割 | 文字数で機械的に分割 | 500〜1,000文字 | 均質な文書 | 低 | 低〜中 |
| 段落・見出し分割 | 文書構造に基づき分割 | 段落単位 | マニュアル、仕様書 | 低 | 中 |
| セマンティック分割 | 意味のまとまりで分割 | 可変 | 多様な文書 | 中 | 中〜高 |
| Late Chunking | 文書全体をエンベディング後に分割 | 可変 | 長文ドキュメント | 高 | 高 |
| 親子チャンク | 大チャンク内に小チャンクを入れ子にする | 親2,000字、子500字 | 階層的な文書 | 中 | 高 |
| 重複チャンク | チャンク間にオーバーラップ区間を設ける | 本体500字+前後100字 | 文脈が途切れやすい文書 | 低 | 中〜高 |
初手としておすすめなのは重複チャンク。実装コストが低いわりに、チャンク境界で文脈が切れる問題を緩和できます。チャンクサイズ500文字、オーバーラップ100〜150文字あたりから始めて、評価結果を見ながら調整してください。
チャンクサイズのトレードオフは明確です。小さくすると各チャンクの内容が明瞭になり検索ヒット率は上がるが、回答に必要な文脈が不足しがち。大きくすると文脈は保持されるが、関係ない情報が混入して検索精度が落ちる。正解は「データと用途による」としか言えないので、実測あるのみです。
テクニック2:ハイブリッド検索を導入する
ベクトル検索だけでは限界があります。製品型番、社内用語、固有名詞など、意味ベースでは捉えにくいキーワードに対してベクトル検索は弱い。「型番ABC-1234」を検索したいのに、意味的に似た別の型番がヒットする、というのは典型的な失敗パターンです。
対策はキーワード検索(BM25など)とベクトル検索を併用するハイブリッド検索。2つの検索結果を統合するにはReciprocal Rank Fusion(RRF)がよく使われます。
ハイブリッド検索のフロー
ユーザーの質問
├── ベクトル検索 ... 意味的に近い文書をランキング
├── キーワード検索(BM25) ... 用語一致する文書をランキング
└── RRFで統合 ... 最終的な検索結果リスト
Redisのテクニカルブログによると、ハイブリッド検索の導入で検索の再現率(Recall)が平均15〜25%向上したとのこと。ベクトル検索しか使っていないなら、まずここに手を入れる価値があります。
テクニック3:リランキングを追加する
初回の検索結果を、より高精度なモデルで再度順位付けする手法です。Cross-Encoderモデルを使ったリランキングは、低コストで即効性が高い。私が関わった案件でも、リランキングの追加だけで体感できるレベルの精度改善が出たことがあります。
処理の流れはシンプルです。
- 初回検索で候補を20〜50件取得する
- Cross-Encoderで質問と各候補の関連度を再スコアリングする
- スコア上位5〜10件をLLMに渡す
初回検索は高速だが粗い。リランキングは遅いが正確。この特性を組み合わせて、広く拾ってから絞り込む2段構えにするわけです。
テクニック4:メタデータフィルタリングを活用する
チャンクにメタデータ(作成日、部門、文書種別、製品名など)を付与し、検索時にフィルタとして使います。
たとえば「製品Aの最新の保証規定」を検索する場合。まず「製品名=製品A」「文書種別=規定」でフィルタリングしてからベクトル検索をかける。検索対象が絞り込まれるので、関係ない文書がノイズとして混入するリスクが下がります。
付与すべきメタデータの例です。
| メタデータ項目 | 型 | 用途 | 例 |
|---|---|---|---|
| source_type | string | 文書種別による絞り込み | manual, faq, policy, meeting_notes |
| department | string | 部門別の絞り込み | sales, engineering, hr |
| product | string | 製品別の絞り込み | product_a, product_b |
| created_at | date | 最新情報の優先 | 2026-01-15 |
| updated_at | date | 更新頻度の把握 | 2026-02-10 |
| language | string | 多言語対応 | ja, en |
テクニック5:クエリ変換で検索精度を上げる
ユーザーの質問文をそのまま検索クエリに使うと精度が低くなることがあります。口語的すぎたり、曖昧だったりするためです。
代表的なクエリ変換手法は3つあります。
- クエリ分解(Query Decomposition):複雑な質問を複数のサブクエリに分解する。「製品Aと製品Bの価格と保証期間の違いは?」なら4つのサブクエリに分けて個別に検索する
- HyDE(Hypothetical Document Embeddings):LLMに「理想的な回答文書」を仮生成させ、その仮文書をベクトル化して検索する。質問文より回答に近い文書のほうが、ベクトル空間上で対象文書に近くなる
- ステップバック・プロンプティング:具体的な質問を一段抽象化してから検索する。「2026年1月の売上実績は?」なら「売上実績レポート」で検索する
テクニック6:GraphRAGで情報の関係性を活用する
従来のベクトル検索RAGは、文書を独立したチャンクとして扱います。しかし実際の社内情報は文書同士が複雑に関連し合っている。「この規程はあの業務プロセスに適用される」「この製品仕様はあの設計書に基づいている」。そういう関係性を無視してチャンク単位で検索するから、複雑な質問に対して精度が出ないのです。
GraphRAGは、チャンク間の関係性をグラフ構造(ノードとエッジ)で明示的に管理する技術。arxivに掲載された2025年2月の評価論文では、エンティティ数が5を超えるクエリでベクトルRAGの精度が急落する一方、GraphRAGは10以上のエンティティでも安定したパフォーマンスを維持したと報告されています。
FalkorDBのベンチマークでは、GraphRAGがベクトルRAGに対して精度で3.4倍の差をつけたケースも。ただし注意点として、すべてのタスクでGraphRAGが優位というわけではありません。単純なFAQ応答のような場面ではベクトルRAGで十分な精度が出ます。
GraphRAGが効く場面を整理すると、こうなります。
- 複数の文書をまたいだ推論が必要な質問(「プロジェクトXの担当者で、かつ製品Aの経験がある人は?」)
- 情報の因果関係や時系列を把握する必要がある場面
- 文書間の矛盾を検出したい場合
ZEROCKはGraphRAG技術を標準搭載しており、ドキュメントをアップロードすると自動的にエンティティと関係性が抽出されます。複雑な質問に対する回答精度を上げたい方は、実際の精度をデモ環境で確認してみてください。
テクニック7:評価・改善のサイクルを回す
改善施策を打った後、効果を定量的に測定しないと何が効いたかわかりません。2025年のGetMaximの調査によると、新規RAGデプロイメントの60%が初日から体系的な評価を組み込んでいます。2025年初頭は30%未満だったので、業界全体で「評価なしにRAGは回せない」という認識が広がっている。
RAGの精度を測る主要な評価指標をまとめます。
| 指標名 | 評価対象 | 計算方法 | 目標値の目安 |
|---|---|---|---|
| Retrieval Recall | 検索漏れの少なさ | 正解文書のうち検索でヒットした割合 | 80%以上 |
| Retrieval Precision | 検索ノイズの少なさ | 検索結果のうち正解文書の割合 | 70%以上 |
| Answer Faithfulness | 回答の根拠の正確さ | 回答内容が検索文書に基づいている割合 | 90%以上 |
| Answer Relevancy | 回答の質問への適合度 | 質問に対して回答が的確な割合 | 85%以上 |
| Answer F1 | 回答の総合精度 | PrecisionとRecallの調和平均 | 75%以上 |
| Hallucination Rate | ハルシネーション発生率 | 検索文書に根拠のない記述の割合 | 5%以下 |
RAGASフレームワークを使えばこれらの指標を自動で算出できます。評価データセット(質問と正解のペア50〜100件)を用意して、週次で精度モニタリングを回すのが現実的な運用です。
改善の優先順位ガイド
7つのテクニックを一度に全部やる必要はありません。
| 優先度 | テクニック | 期待効果 | 実装工数 | 備考 |
|---|---|---|---|---|
| 1 | チャンク設計の見直し | 大 | 小〜中 | まずここから |
| 2 | リランキングの追加 | 大 | 小 | Cross-Encoder追加だけで効果が出る |
| 3 | ハイブリッド検索 | 中〜大 | 中 | キーワード検索の追加 |
| 4 | メタデータフィルタリング | 中 | 中 | データ前処理に手間がかかる |
| 5 | クエリ変換 | 中 | 中 | LLMの追加コストが発生 |
| 6 | GraphRAG | 大 | 大 | 抜本的な精度向上が必要な場合 |
| 7 | 評価サイクルの構築 | 測定基盤 | 中 | 全テクニックの効果測定に必須 |
ただしテクニック7の評価サイクルだけは、最初から並行して整備してください。効果測定なしに施策を打つのは、地図なしで航海するようなものです。
まとめ
正直なところ、RAGの精度改善に「これさえやれば解決」という銀の弾丸はありません。データの性質、ユーザーの質問パターン、求められる精度水準によって最適な組み合わせは変わる。
ただ、共通して言えるのは「チャンク設計の見直し」と「リランキングの追加」から着手すれば、低コストで確実に精度が上がるということです。そこで改善が頭打ちになったら、ハイブリッド検索やGraphRAGに手を広げる。「とりあえずRAGを入れたけど精度が出ない」という状態を放置すると、ユーザーは使わなくなり、AI導入プロジェクト自体が頓挫します。小さな改善を積み重ねていきましょう。
ZEROCKのRAG精度向上アプローチ
ZEROCKは、GraphRAG技術で文書間の関係性を自動抽出し、複雑な質問にも高精度で回答するエンタープライズAIプラットフォームです。マルチLLM対応で用途に応じたモデル選択が可能。データはAWS東京リージョンで管理されます。
RAGの精度に悩んでいる方は、一度ZEROCKの検索精度を試してみてください。
参考情報
- Redis「Improving RAG accuracy: 10 techniques that actually work」
- arxiv「RAG vs. GraphRAG: A Systematic Evaluation and Key Insights」(2502.11371)
- DeNA Engineering Blog「社内AIヘルプデスク RAG精度改善の軌跡」
- ai-market.jp「RAGの精度を向上させる方法は?チャンキングなど手法を徹底解説」
- arpable.com「2025年決定版 RAG精度を劇的に引き上げる8つの鍵」
