🙄

RAGの精度改善で最も効果があった施策は何だったのか

に公開

前提条件

本記事は、社内ドキュメントを対象としたRAG(Retrieval Augmented Generation)システムにおいて、検索精度改善を目的に検証を行った記録になります。
実運用を想定した構成と条件は次の通りです。

項目 内容
対象ドキュメント数 約2,000件
対応ファイル形式 Word(旧/新)、Excel(旧/新)、PowerPoint、PDF
利用モデル Azure OpenAI Service
目的 社内規定を読み込んだ回答を社内用AIチャットbotが回答する

現状の課題点

当初のRAGシステムは一定の回答精度があるものの、以下の問題が発生していました。

① 誤った文書の参照(文脈ハルシネーション)

例)「給料について教えて」と質問
→ 海外手当の規定ファイルを参照し、「給与=海外勤務手当」と誤回答。

② 表形式データの読み取り精度が低い

特にExcelやWord内の表では、項目構造を理解できず項目名・値の紐付けが曖昧。

③ 微細な数値・単位情報が抜け落ちる

例)「単位:100円」と記載 → 出力は「3410」ではなく本来「3410.00」が正。


実施した改善施策

以下の施策を個別に検証しました。

施策 効果
ハイブリッド検索導入(キーワード+ベクトル) ✖️
チャンクサイズ最適化 ✖️
リランキング導入(上位5件評価) △(限定的改善)
表形式データの構造抽出ロジック改善 ✖️
埋め込みモデルのアップデート(text-embedding-ada-2 → text-embedding-3-large) 🔥劇的改善

最も効果があった施策:埋め込みモデルのアップデート

検証結果として、埋め込みモデルの変更が最も大きな改善効果を生みました。

項目 Before(ada-2) After(ada-3-large)
在籍情報を正しく参照 × ◎
表構造の理解 × ◎
数値・単位の読み取り △ ◎
意味的検索の精度 △ ◎
ハルシネーション 発生あり 大幅減少

改善例

ケース Before After
給与に関する回答 海外手当の説明 正しい給与規定文書を参照
表の理解 セル単体を単語として扱う 行 × 列の意味を理解した抽出が可能
単位付数値 3410 → 3410 3410(単位:100円) → 3410.00 と正規表現上補正

なぜここまで改善したのか?

理由は大きく2つに整理できます。
AI回答ベースでまとめます。


① 埋め込みモデル自体の精度向上

text-embedding-3-largeは以下に強い傾向があります:

  • 文脈理解能力の向上
  • 構造化されていない文書の情報抽出精度の向上
  • 表形式・リスト構造への理解強化
  • 「類似概念」の距離精度向上(給与 vs 手当の区別)

② 埋め込みベクトルの分解能向上

モデル変更により、

  • 語彙の意味グルーピング
  • 文脈レベルでのベクトル形成
  • 値と属性(項目名)の同時エンコード

が可能になり、検索結果のランキング精度が飛躍的に改善。
→ 取り出される文書精度が上がるため、LLM側の回答精度も向上。


コストに関する懸念

モデル 単価 備考
text-embedding-ada-2 基準
text-embedding-3-large 約 1.3倍 精度差を踏まえると採用価値あり

2000ドキュメント規模では、初期構築コストは増加するもののランニングコスト差は小さく、十分許容範囲でした。


まとめ:RAG精度改善の最適解

今回の検証を通じて得られた結論は次のとおりです。

RAG精度改善において「適切な埋め込みモデル選択」非常に重要。
ハイブリッド検索やリランキングは効果はあるが、土台(埋め込み)の品質が最重要。

今回の結果から、

最初に改善すべきは埋め込みモデル
→ それから検索戦略やデータ構造改善に手を入れる

というアプローチが最も効率的だと実感しました。

Discussion