🙄
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