本文へスキップ
AIラボ
RAG稼働中

RAG評価ハーネス

RAGパイプラインを検証するための評価フレームワーク。チャンク分割(固定長、意味的、再帰的)、埋め込みモデル(OpenAI、Cohere、オープンソース)、検索手法(密ベクトル、疎ベクトル、ハイブリッド)を、正解付きのQ&Aデータセットに対して12の自動指標で比較する。

Claude SonnetGPT-4oall-MiniLM-L6
12種類の評価指標6種類のチャンク分割戦略4種類の埋め込みモデルを比較

カテゴリ

RAG

ステータス

稼働中

技術スタック

PythonDeepEvalRAGASpgvectorStreamlit

モデル

Claude SonnetGPT-4oall-MiniLM-L6
概要

RAGの解説はたいてい感覚で評価を済ませてしまう。この実験では、チャンク分割の戦略、埋め込みモデル、検索手法、生成モデルというRAGパイプラインのあらゆる変数を、正解付きのQ&Aデータセットに対して12の標準的な指標で自動評価する枠組みを作った。狙いは、RAGの設計を逸話ではなく実証に基づくものにすることである。

検証方法

技術文書、法務契約、学術論文という3種類の評価データセットを作り、それぞれに正解付きのQ&Aを50組用意した。各データセットに対して、6種類のチャンク分割(固定512、固定1024、再帰的、意味的、sentence-window、parent-document)、4種類の埋め込みモデル(OpenAI text-embedding-3-large、Cohere embed-v3、all-MiniLM-L6、BGE-large)、3種類の検索手法(密ベクトル、疎ベクトルのBM25、ハイブリッド)を試した。すべての組み合わせを、RAGASとDeepEvalの12指標、すなわち忠実性、回答の関連性、文脈の適合率、文脈の再現率、幻覚率などで採点した。

技術スタック

DeepEvalとRAGASが12の評価指標を提供する。pgvectorが密ベクトル検索用の埋め込みを保持する。疎ベクトル検索は自前のBM25実装で行う。結果の比較にはStreamlitの対話的なダッシュボードを使う。評価パイプライン全体はPythonが統括し、構成ごとに並列で実行する。

主な発見

この実験から得られた、もっとも重要な知見です。

1

意味的なチャンク分割は技術文書に強く、法務文書に弱い

意味的なチャンク分割は技術文書で文脈の適合率0.91を出したが、条項の境界が意味の近さより重要な法務契約では0.74まで落ちた。法務文書では重複付きの固定512が最も良かった。

2

ハイブリッド検索は複雑さに見合う

密ベクトルとBM25のハイブリッドは、すべてのデータセットで文脈の再現率を純粋な密ベクトル検索より8〜15%高めた。効果が最も大きいのは、エラーコードや条番号のような固有の識別子を含むクエリである。

3

OpenAIが最良、ただしBGE-largeは93%まで届く

text-embedding-3-largeがすべての指標で最高だったが、BGE-largeはAPI費用ゼロでその93%の性能に達した。コストを重視する構成では十分に魅力的な選択肢になる。

4

評価はドメインごとに行う必要がある

技術文書で0.91を出すチャンク分割が、法務文書では0.74になる。普遍的な「最適解」は存在しない。だからこそ、自分の領域で最適を見つけるためのハーネスが必要になる。

アーキテクチャ

ハーネスは3段階で動く。1つ目は取り込みで、ドキュメントをすべてのチャンク分割戦略で並列に処理し、すべての埋め込みモデルでベクトル化して、pgvectorの別コレクションへ格納する。2つ目は検索で、各クエリを検索手法と埋め込みモデルのすべての組み合わせで実行し、上位k件を集める。3つ目は評価で、取得した文脈と生成された回答をDeepEvalとRAGASの指標で正解と照らして採点し、結果を比較行列へ集約する。

結果

6種類のチャンク分割、4種類の埋め込み、3種類の検索手法から成る72通りの構成を、150問に対して検証した。最適な構成はドメインによって変わり、普遍的な勝者は存在しないことが分かった。総合で最良だったのは意味的なチャンク分割、OpenAIの埋め込み、ハイブリッド検索の組み合わせ(忠実性0.92、文脈の適合率0.89)。コスト効率で最良だったのは再帰的なチャンク分割、BGE-large、ハイブリッド検索の組み合わせ(忠実性0.87、文脈の適合率0.83、埋め込み費用$0)である。

直面した課題

検証を進めるうえで解決が必要だった技術的な課題です。

課題 1

評価指標どうしの不一致

RAGASの忠実性とDeepEvalの幻覚スコアが、互いに矛盾することがあった。指標が食い違う場合は人の判断で決着させ、より信頼できる指標を総合スコアで重く扱うメタ評価の手順を定めて解決した。

課題 2

埋め込みのコスト

4種類の埋め込みモデル、150問、6種類のチャンク分割の組み合わせで、埋め込みAPIの呼び出しが3,600回に達した。積極的なキャッシュを実装し、再実行では新規または変更されたチャンクだけを埋め込むようにした。

NEXT

LumoraTechと一緒に開発しませんか?

厳密なエンジニアリングを重視するチームのために、本番運用に耐えるAIシステムの構築と、こうした技術検証を行っています。