LargitData — 企業インテリジェンス&リスクAIプラットフォームLargitData — エンタープライズインテリジェンス&リスクAIプラットフォーム

最終更新:

RAGの精度を高めるには?10大最適化戦略と実践テクニック完全ガイド

多くの企業では、RAGシステムを初期構築した後に、実際の回答精度が期待に届かないことに気づきます。AIが関連文書を見つけられない、回答が断片的である、あるいはハルシネーションが発生するといった問題です。これらはRAG技術そのものの致命的な欠陥ではなく、システム設計と最適化が不十分であることの結果です。RAGの精度向上は体系的なエンジニアリングであり、文書分割戦略、埋め込みモデルの選定、ハイブリッド検索アーキテクチャ、リランキング機構、クエリ最適化など複数の要素に関わり、それぞれの改善が精度の大幅な向上につながります。本記事はエンジニアと技術責任者を対象に、10大RAG最適化戦略を体系的に紹介し、各戦略に具体的な実装のヒントを添えることで、RAGシステムのパフォーマンスを企業活用に求められる水準まで引き上げるお手伝いをします。

RAGの精度を上げるには?10大最適化戦略と実践テクニック完全ガイドのインフォグラフィック。AIナレッジハブの要点を図解しています

RAGの精度に影響する要因の分析

最適化戦略に踏み込む前に、RAGの精度を左右する核心的な要因を理解しておく必要があります。RAG全体の品質は3つの軸で測ることができます。「検索品質」(Retrieval Quality):システムが本当に関連性の高い文書断片を見つけられているか。「生成品質」(Generation Quality):言語モデルが検索結果を正しく活用できているか。そして「ナレッジベース品質」(Knowledge Base Quality):ナレッジベース内の文書が完全、正確かつ適切に整理されているか、という3点です。この3つの軸は相互に影響し合っており、どれか1つを最適化するだけでも全体の精度は改善しますが、いずれかの軸の問題を放置すると、他の軸での最適化効果も大きく削がれてしまいます。

よくあるRAGの精度問題は次のように分類できます。「見つけられない」(Low Recall):関連文書はナレッジベースに存在するのに、システムがそれを見つけられない。「見つけ間違える」(Low Precision):システムが大量の文書を検索するものの、その多くが質問と無関係である。「うまく使えない」(Poor Utilization):関連文書は見つかっているのに、言語モデルがそこから正しい答えを抽出できない。そして「答えがない」(Out-of-scope):質問がナレッジベースの範囲外であるにもかかわらず、システムが「わかりません」と正直に答えずに回答を生成しようとしてしまう、というものです。問題のタイプを見極めることが、正しい最適化戦略を選ぶための前提となります。

戦略1〜2:文書分割の最適化

【戦略1】適切なChunkサイズを選ぶ。文書分割(Chunking)は、RAGシステムの中で見落とされがちながら最も影響が大きい工程のひとつです。Chunkが大きすぎると(1000トークン以上など)、1つの断片に情報が詰め込まれすぎて埋め込みベクトルがトピックを正確に捉えられず、類似度計算の結果が曖昧になります。逆にChunkが小さすぎると(50トークン未満など)、各断片に十分な文脈が不足し、たとえ関連する断片が見つかっても、情報が不完全なために言語モデルが正確な答えを生成できないことがあります。

実務上の推奨:文書タイプごとに異なるChunkサイズを採用します。法規条文や技術仕様書など構造性の強い文書は、「条項」や「小節」単位での分割(約150〜300トークン)が望ましく、記述的な文章やケーススタディなどは「段落」単位(約300〜500トークン)が適しています。FAQ文書は通常、長さに関わらず「一問一答」を1つのChunkとします。多くの高度なRAGフレームワークは「スライディングウィンドウ」(Sliding Window)分割に対応しており、隣接するChunk同士に20〜30%の重なりを持たせることで、断片をまたぐ文脈が途切れないようにできます。

【戦略2】意味を考慮した分割(Semantic Chunking)を採用する。従来の固定サイズ分割はテキストの意味的な境界を考慮しないため、1つの完結した論点が2つのChunkにまたがって分割されてしまうことがあります。意味を考慮した分割では、埋め込みモデルを使って隣接する文同士の意味的類似度を計算し、類似度が明確に下がる箇所(話題の転換を示す)で分割することで、各Chunkが意味的にまとまりを持つようにします。LlamaIndexやLangChainなどのフレームワークはいずれも意味分割の実装を提供しており、知識密度の高い文書の検索品質を大きく改善できます。

戦略3〜4:埋め込みモデルの選定と最適化

【戦略3】言語と領域に適した埋め込みモデルを選ぶ。埋め込みモデル(Embedding Model)は、テキストがどのようにベクトル表現に変換されるかを決定し、意味的類似度計算の品質に直接影響します。繁体字中国語の企業文書に対しては、汎用の英語埋め込みモデルでは十分な性能が出ないことが少なくありません。BAAIのBGE-M3(100以上の言語に対応し、繁体字中国語での性能も優れています)、Microsoftのmultilingual-e5-large、Cohereのmultilingual-embed-v3といった多言語埋め込みモデルを優先的に検討することをお勧めします。モデル選定の際は、MTEB(Massive Text Embedding Benchmark)のランキングを参考にし、特に中国語タスクのサブランキングに注目してください。

【戦略4】埋め込みモデルのファインチューニングを検討する。ナレッジベースに医学、法律、半導体プロセスといった特定領域の専門用語が大量に含まれる場合、汎用の埋め込みモデルではこれらの用語間の意味的関係を正しく理解できないことがあります。領域データを使って埋め込みモデルをファインチューニングすると、ベクトル空間が領域知識の意味的な距離をより正確に反映できるようになります。実装方法としては、「質問と関連文書断片」のラベル付きペアを収集し、対照学習(Contrastive Learning)の手法で埋め込みモデルをファインチューニングします。必要なラベル数に汎用的な目安はなく、領域用語の数、用語同士の区別の難しさ、そしてベースモデルが元々その領域にどれだけ精通しているかによって変わります。現実的な進め方としては、まず少量(数十件から100〜200件程度)をラベル付けして試験的に実行し、評価セットのスコアが改善し始めるかを観察したうえで、限界効果が逓減する状況を見ながら追加するかどうかを判断します。どの程度リコールが向上するかは、自社の評価セットで前後を測定して初めてわかるものであり、他社の数値をそのまま引用すべきではありません。注意すべき落とし穴が2つあります。1つはラベルの品質が量より重要であることで、ラベル付きペア自体に誤りや曖昧さがあれば、ファインチューニングによってかえってベクトル空間が悪化することがあります。もう1つは、埋め込みモデルを変更またはファインチューニングすると、ナレッジベース全体のベクトルを再生成する必要があることで、この再構築コストも評価に含めるべきです。

戦略5〜6:ハイブリッド検索とリランキング技術

【戦略5】ハイブリッド検索(Hybrid Search)を実装する。純粋なベクトル検索は意味理解に強い一方、製品型番、人名、法条番号といった正確なキーワード一致では、従来のBM25キーワード検索に劣ります。ハイブリッド検索はこの両者を組み合わせ、ベクトル検索とキーワード検索を同時に実行し、結果を統合してランキングし直します。よく使われる統合手法がRRF(Reciprocal Rank Fusion)で、2つの検索結果リストにおける各文書の順位の逆数を合計して、最終的なハイブリッドランキングを算出します。ハイブリッド検索が有効なのには具体的な理由があります。ベクトル検索は「A123-B型番」と「A123-C型番」を意味的に極めて近いとみなして混同してしまいますが、キーワード検索なら正確にヒットします。逆に、同義語による言い換えにはキーワード検索は無力で、そこではベクトル検索が力を発揮します。そのため、固有名詞、型番、法条番号の密度が高いナレッジベースほど、ハイブリッド検索の効果は通常顕著になります。実際の改善幅は自社の評価セットで測定すべきであり、RRFの重み配分にはチューニングが必要な点にも注意してください。重みをキーワード側に寄せすぎると意味的な質問を犠牲にし、ベクトル側に寄せすぎると正確一致の利点を失います。Elasticsearch、Weaviate、Qdrantといった主流のソリューションは、いずれもすでにハイブリッド検索に対応しています。

【戦略6】リランキング(Re-ranking)層を追加する。ベクトル検索による初期結果(通常はTop-20からTop-50を取得)は意味的類似度としては妥当ですが、必ずしも「この質問に答える」うえで最も役立つ断片とは限りません。リランキングモデル(Cross-encoder)は「質問+文書断片」を入力として受け取り、「この文書断片がこの質問への回答にどれだけ役立つか」というスコアを直接計算するため、2塔構造(Bi-encoder)によるベクトル類似度よりも精密です。推奨されるリランキングモデルには、Cohere Rerank API、BGE-Reranker、Jina Rerankerなどがあります。典型的な流れは、まずベクトル検索でTop-20を取得し、次にRe-rankerでTop-5に絞り込んでから言語モデルに渡すというもので、LLMに渡す無関係なコンテキストを大幅に減らすことができます。

戦略7〜8:クエリ最適化とコンテキスト管理

【戦略7】クエリ書き換え(Query Rewriting)とHyDE。ユーザーが入力する元の質問は、ベクトル検索に最適な形になっていないことがよくあります。質問が曖昧であったり、口語的すぎたり、ナレッジベースの文書とは異なる用語が使われていたりするためです。クエリ書き換え(Query Rewriting)は、検索の前にLLMを使ってユーザーの質問を検索に適した形に書き換える手法で、略語の展開、暗黙の文脈の補完、複数の異なる角度からの検索クエリの生成(マルチクエリ検索、Multi-query Retrieval)などが含まれます。もう1つの強力な技術がHyDE(Hypothetical Document Embeddings)です。まずLLMにその質問に答えうる文書断片を「仮定」させ、その仮想文書の埋め込みベクトルを使って検索を行うもので、質問のベクトルをそのまま使うよりも効果的であることが多いです。

【戦略8】コンテキスト圧縮(Context Compression)と厳選。LLMに渡すコンテキストが長すぎると、言語モデルはその中から最も重要な情報を正確に識別しづらくなり、「Lost in the Middle」と呼ばれる現象、すなわち中間部分の情報がモデルに無視される確率が冒頭や末尾よりもはるかに高くなる現象が起こります。コンテキスト圧縮の目的は、LLMに渡す前に各検索断片を絞り込み、質問に直接関連する文だけを残し、無関係な背景情報を除外することです。LangChainのContextualCompressionRetrieverは、すぐに使える実装を提供しています。さらに、研究によれば、最も重要な文書断片をコンテキストの中間ではなく冒頭に配置することで、LLMの活用効率を大きく高められることが示されています。

戦略9〜10:評価手法と継続的モニタリング

【戦略9】RAGASなどのフレームワークで体系的に評価する。多くの企業のRAGシステムには客観的な評価の仕組みがなく、効果が改善したかどうかを「感覚」だけで判断しています。RAGAS(Retrieval-Augmented Generation Assessment)はRAG評価フレームワークとしてよく使われる選択肢の一つです(実際にどの評価ツールを使うかはチームによって異なり、独自の評価スクリプトを自社で構築している企業も少なくありません)。RAGASが提供する4つの中核指標は参考にする価値があります。Faithfulness(忠実度、回答が根拠に基づいているか)、Answer Relevancy(答えの関連性、回答が質問に答えているか)、Context Precision(コンテキストの精度、検索結果のうちどれだけが本当に関連しているか)、そしてContext Recall(コンテキストの再現率、関連情報がすべて見つかっているか)です。この4つの指標を組み合わせることで、RAGシステムのボトルネックが検索、ランキング、生成のどこにあるかを判断できます。こうした自動評価ツールを使う際には、1つ留意すべき限界があります。多くの指標自体がLLMを評価者として計算されているため、スコアは評価モデルのバージョンやプロンプト設計の影響を受け、異なる時期や異なるモデルで得られた絶対スコアを単純に比較することはできません。現実的な使い方としては、評価モデルとプロンプトを固定し、スコアを「同一条件下での相対的な傾向」として最適化の有効性を追跡し、定期的に少数のケースを人手で抽出確認して、自動スコアと人間の判断がずれていないかを確かめることです。

RAGAS指標 測定対象 スコアが低い場合の対応策
Faithfulness(忠実度) 回答が検索した文書に基づいて生成されており、でっち上げがないか プロンプト設計を改善し、「提供された資料のみに基づいて回答する」ことを強調する
Answer Relevancy(答えの関連性) 回答が本当に質問に答えているか クエリ書き換えやコンテキストの構成方法を改善する
Context Precision(コンテキストの精度) 検索結果のうちどれだけが本当に有用か リランキングを追加し、埋め込みモデルを改善する
Context Recall(コンテキストの再現率) 関連情報がすべて見つかっているか ハイブリッド検索を使用し、Top-K数を増やし、Chunkingを改善する

【戦略10】継続的モニタリングとオンラインフィードバックの仕組みを構築する。RAGシステムの最適化は一度きりの作業ではなく、継続的な反復プロセスです。次のようなモニタリングの仕組みを構築することをお勧めします。毎回のクエリについて、質問文、検索結果、生成された回答、ユーザーからのフィードバック(高評価・低評価など)を記録すること。「回答できなかった」または「回答品質が低かった」クエリを定期的に分析し、ナレッジベースのカバレッジの欠落を特定すること。検索の遅延やAPIコストといったシステム指標をモニタリングすること。そして定期的(例えば四半期ごと)に標準テスト問題のセットを再評価し、システム品質の長期的な傾向を追跡することです。このモニタリングの仕組みの本当の価値は、最適化を単なる勘から検証可能な反復プロセスへと変えることにあります。調整のたびに前後のスコア比較ができ、失敗事例が積み重なって新しい評価問題になり、ナレッジベースのカバレッジの欠落も能動的に明らかになります。どれだけ改善できるか、どれくらいの期間が必要かは、開始時のベースライン、データ品質、投入する反復回数によって決まり、一律に約束できる数値はありません。マイルストーンによる検証への切り替えをお勧めします。各反復ラウンドの目標指標と最小改善幅を設定し、「同一の評価セットで2ラウンド連続して有意な改善が見られない」ことを、現行アーキテクチャが収束したと判断する基準とし、その時点でモデルの変更やアーキテクチャの調整を検討します。

よくある質問

第一歩は、自社の評価セット(高頻度の質問、複数文書にまたがる質問、ナレッジベースに答えがない質問を含む)を構築し、RAGASなどの同種のツールでベースラインを測定して、最も弱い指標を特定することです。Context Recallが低い場合はChunking戦略の改善とハイブリッド検索の導入を優先し、Context Precisionが低い場合はRe-rankingの追加を優先し、Faithfulnessが低い場合はPrompt Engineeringの改善を優先します。これらの指標の多くはLLMを評価者として計算されており、絶対スコアは評価モデルとプロンプトによって変動する点に注意が必要です。評価設定を固定し、スコアを相対的な傾向として使い、定期的に人手での抽出確認による校正も行うべきです。データに裏付けられて初めて効率的な最適化ができ、どれが本当に効果的かわからないまま様々な手法をやみくもに試すことを避けられます。
汎用的に最適なChunkサイズというものは存在せず、文書タイプと質問の性質に基づいて実験的に決定する必要があります。一般的には256〜512トークンがよくある出発点で、多くの汎用的なシナリオに適しています。「ある法条の具体的な内容は何か」といった正確な事実検索が中心の場合は、より小さいChunk(128〜256トークン)の方が精度が高くなる傾向があります。「このレポートの核心的な主張は何か」といった複雑な論述の文脈理解を要する場合は、より大きいChunk(512〜1024トークン)の方が効果的です。複数のChunkサイズを同時にテストし、RAGAS指標で評価したうえで、最適な値を選ぶことをお勧めします。
Re-rankingは遅延を増加させますが、その幅は自社で実測する必要があり、一般的なミリ秒数を引用することはできません。候補文書の数と各文書の長さ(リランキングモデルはクエリと文書のペアを1つずつ読み込むため、コストは候補数にほぼ比例して増加します)、外部APIを呼び出すか、それともローカル推論かどうか(外部APIの場合はネットワーク往復とサーバー側のキューイングも加算されます)、ローカル展開時のGPUの型番とバッチサイズ、量子化を有効にしているかどうかなどに左右されるためです。実測方法は簡単で、同一のクエリ群を固定し、Re-rankingをオンにした場合とオフにした場合でそれぞれ数十回ずつ実行し、P50とP95の差分を比較します。この差分こそが、自社環境における実際のコストです。それに見合う価値があるかどうかは、それによってどれだけ精度が向上するかによって決まり、こちらも評価セットで測定する必要があります。遅延に敏感な場合は、候補数を絞る(例えばTop-50からTop-20に減らす)、より小型のリランキングモデルに切り替える、あるいは複雑と判定されたクエリにのみ有効化する、といった対策が考えられます。
PDF内の表や画像は、RAGシステムでよくある難題です。一般的で多くの場合に有効な方法は、表を行と列の関係を保持した構造化テキスト(MarkdownでもHTML表でも構いません)に変換することで、単純に1行のテキストに平坦化するのではなく、モデルが列を正しく対応づけられるようにします。ただし、これが唯一の、あるいは常に最良の選択とは限りません。セル結合、複数ページにまたがる表、小計や複数階層のヘッダーを含む表は、Markdownで表現すると情報が失われがちです。そのような場合は、HTML表に切り替える、各行を独立した記述文に書き換える、あるいはCSVやデータベースの列といった構造化データを別途保持して正確な照会に使う、といった方法の方がうまくいくことがあります。どの方法を選ぶかは、表の複雑さ、下流のパーサーの処理能力、そしてユーザーが実際にどのような質問をするかを考慮して決めるべきです。数値比較が中心の質問であれば、表を照会可能な構造化データとして別途保存する方が、どのようなプレーンテキスト表現よりも優れていることが多いです。スキャンされたPDF内の画像中の文字については、まずOCR(光学文字認識)技術で文字を抽出する必要があります。LargitDataのRAGiシステムはOCR機能を統合しており、スキャン文書や画像内の繁体字中国語の文字を自動的に処理できます。
ナレッジベースの品質は、RAGの精度の上限を決めます。どれほど優れた技術アーキテクチャであっても、誤った、あるいは不完全な文書から正確な答えを生成することはできません。よくあるナレッジベースの品質問題には、情報の陳腐化(古いバージョンの文書が更新も削除もされていない)、フォーマットの乱れ(用語の不統一、レイアウトノイズの多さ)、そして知識のカバレッジの欠落(重要な質問に対応する文書がそもそも存在しない)などがあります。システムの本稼働前にナレッジベースの監査を行い、文書を定期的に更新し、「回答できなかった質問」を記録する仕組みを構築して、補完すべきカバレッジの欠落を特定することをお勧めします。

参考文献

  • Es, S., et al. (2023). RAGAS: Automated evaluation of retrieval augmented generation. [arXiv:2309.15217]
  • Ma, X., et al. (2023). Fine-tuning LLaMA for multi-stage text retrieval. SIGIR 2024. [arXiv]
  • Gao, L., et al. (2022). Precise zero-shot dense retrieval without relevance labels (HyDE). [arXiv:2212.10496]
  • Liu, N., et al. (2023). Lost in the middle: How language models use long contexts. TACL 2024. [arXiv]

RAGシステムの精度をより早く向上させたいですか?

LargitDataの技術コンサルタントにご相談ください。RAGシステムの健全性診断サービスを提供しており、ボトルネックの早期特定と最適化ロードマップの策定をサポートします。

お問い合わせ