目次を開く
結論
長文の検索手法は、同じ質問に対して必要な根拠を取り出せるかで比較します。文書分割と検索方式を同時に変えると原因を切り分けにくいため、まず文書集合と分割条件を固定し、検索方式だけを比較します。その後に分割や再順位付けを一つずつ変更します。
比較対象と評価単位
キーワード検索、ベクトル検索、両者を組み合わせる検索を比較候補にします。質問には、正解文そのものだけでなく、製品名や識別子を含む質問、言い換え、複数箇所の根拠が必要な質問、答えがない質問を含めます。
正解は文書名だけでなく根拠の節・段落を示します。同じ文書の無関係な箇所を返した結果を成功と数えないためです。重複する断片は原本と位置でまとめ、同じ根拠の重複取得で点数が上がらないようにします。
再現できる比較手順
- 文書と質問を開発用・最終評価用に分けます。同じ原本の別版やほぼ同じ質問が両方に入らないよう、原本の系列を単位に分割します。
- 原本の版、分割の長さと重なり、埋め込みモデル、検索設定、評価スクリプトの版を記録します。
- 同じ質問を各方式へ与え、上位候補、スコア、検索時間を保存します。キャッシュの有無と同時実行数も揃えます。
- 根拠を持つ質問でRecall@kなどを算出し、質問の種類ごとに失敗を比較します。Recall@kの分母は正解とした根拠の総数です。答えがない質問は別に扱い、誤って根拠ありと判断した割合を調べます。
- 生成へ渡す総トークン数を揃えた条件でも比較します。断片が大きい方式と小さい方式では、同じ上位件数でも渡す情報量が異なるためです。
- 開発用の質問で条件を選び、最終評価用の質問で確定した比較を一度行います。失敗例と設定を残し、評価結果を見て条件を変えた場合は再び開発段階として扱います。
トレードオフ
大きな断片は前後関係を含めやすく、無関係な情報も増えます。小さな断片は局所的な根拠を扱いやすい一方、必要な条件が別の断片に分かれます。再順位付けを追加すると判断の段階と処理時間が増えるため、精度と待ち時間を一緒に比較します。
制約
検索の評価だけでは回答の正しさや権限保護を証明できません。アクセス可能な文書だけを候補にする制御と、根拠に基づいた回答かを確かめる評価を別に設けます。
資料
- Introduction to Information Retrieval: Evaluation of ranked retrieval results
- OpenAI Retrieval guide
- RAG評価で回答以外に測るもの
関連事例
関連事例の担当範囲や設計判断を参照します。記事で提案する実験・構成を、その事例で実施済みとするものではありません。