DPRとは?RAGの検索精度を意味理解で高めるDense Passage Retrieval

DPR(Dense Passage Retrieval)は、質問と文書をベクトル化して意味的に近い根拠を探す検索技術です。デュアルエンコーダの仕組み、学習、実験結果、RAG開発への活かし方を解説します。

参考文献

Dense Passage Retrieval for Open-Domain Question Answering

Vladimir Karpukhin, Barlas Oğuz, Sewon Min, Patrick Lewis, Ledell Wu, Sergey Edunov, Danqi Chen, Wen-tau Yih

論文を見る

今回の論文

今回取り上げるのは、Vladimir Karpukhinらによる「Dense Passage Retrieval for Open-Domain Question Answering」です。2020年のEMNLPで発表された論文で、公開元はAssociation for Computational Linguistics(ACL Anthology)、URLは https://aclanthology.org/2020.emnlp-main.550/ です。研究分野はオープンドメイン質問応答と情報検索であり、現在のRAGで広く使われるベクトル検索の原型の一つです。

選んだ理由は、RAGの品質を大きく左右する「生成前に何を取ってくるか」を、キーワード一致から意味的な一致へ転換した技術だからです。LLMや生成器だけを替えても、根拠を取り逃がせば正しい回答には届きません。DPRは少ない教師データでも実用的な密ベクトル検索器を作れることを示し、検索と生成をつなぐ設計の出発点になります。

どんな技術か

DPR(Dense Passage Retrieval)は、質問と文書パッセージを別々のBERTエンコーダでベクトルに変換し、内積が大きい文書を検索する技術です。単語が同じかではなく、質問と文書が表す意味が近いかを学習済みベクトルで判定します。

たとえば質問に「ロード・オブ・ザ・リングの悪役」とあり、文書に「villain Sauron」と書かれている場合、語句が完全に一致しなくても関連を捉えられます。文書側のベクトルはあらかじめ計算して索引化し、質問時には質問ベクトルだけを作るため、大規模コーパスでも高速に候補を絞れます。

課題

オープンドメインQAやRAGでは、膨大な文書集合から、回答の根拠になる数段落を先に選ぶ必要があります。生成モデルの入力長には限りがあり、全資料を読ませることは計算量・料金・精度の面で現実的ではありません。

  • BM25やTF-IDFなどの疎検索は高速で強力ですが、主に単語の一致に頼ります。「退職手続き」と「雇用終了時の手順」のような言い換え、略語、質問と規程文で表現が異なるケースを取り逃がしやすいです。
  • 初期の密ベクトル検索は、良い表現を学ぶために大量の質問・文書ペアや複雑な追加事前学習が必要だと考えられていました。実務の社内検索では、この教師データを大量に用意できないことが多いです。
  • 検索で上位に根拠が入らなければ、readerやLLMがどれほど優秀でも、根拠に基づく正答を出せません。これはRAGでのもっとも手前の失敗点です。

DPRは、事前学習済みBERTを質問用・文書用に分け、正例と紛らわしい負例を見分けるように微調整すれば、密検索だけでBM25を大きく上回れるかを検証しました。

用語解説

密ベクトル検索(dense retrieval)
テキストを固定長の連続値ベクトルに埋め込み、ベクトルの近さで文書を探す検索です。本論文では単語の一致ではなく意味の対応を学ぶため、RAGで質問と根拠の言い換えを結び付ける役割を持ちます。
デュアルエンコーダ
質問と文書を二つのエンコーダで独立にベクトル化する構造です。文書ベクトルを事前計算できるため、質問のたびに全文書をLLMやcross-encoderへ通さずに済む点がDPRの実用性の核です。
内積検索(maximum inner product search)
質問ベクトルと各文書ベクトルの内積をスコアにし、最大の文書を探す方法です。DPRはこの単純なスコアを学習し、近似最近傍探索のインデックスと組み合わせて大規模検索を可能にします。
ハードネガティブ
正解ではないものの質問と表面的に似ており、モデルが誤って高得点を付けやすい負例です。DPRではBM25の上位にある非正解パッセージを使い、意味的に本当に役立つ根拠を選ぶよう学習を厳しくします。
Top-k retrieval accuracy
検索上位k件の中に答えを含むパッセージが少なくとも一つある割合です。生成器の正答率そのものではありませんが、後段が正答できる材料を渡せたかを見るため、本論文の中心指標です。

技術の仕組み

DPRの重要な設計は、質問とパッセージを一緒に読ませるのではなく、独立して埋め込むことです。これにより、検索時の重い処理を質問側だけに閉じ込めます。

質問・文書を別々にBERTで符号化する

質問qは質問エンコーダE_Q、パッセージpは文書エンコーダE_Pに入力します。それぞれの[CLS]表現をベクトルとして取り出し、関連度を次の内積で定義します。

sim(q, p) = E_Q(q) · E_P(p)

値が大きいほど、質問に答える根拠として適していると判断します。二つのエンコーダは同じBERTから初期化しますが、重みは共有しません。質問の短い疑問文と、説明を含む文書パッセージでは、役割に合わせて異なる表現を学べるためです。

文書ベクトルはコーパス更新時にまとめて計算し、FAISSのような近似最近傍インデックスに保存できます。オンライン要求では質問を一回エンコードして上位パッセージを取得し、後段の抽出型readerまたは生成モデルへ渡します。

正例と負例を同時に順位付けする

各学習例で、質問に答えを含む正例パッセージを一つ、負例を複数用意します。正例の内積が候補集合で最大になるよう、softmaxと負の対数尤度で学習します。直感的には「正例に似せる」だけでなく、「もっともらしい誤候補より正例を上に置く」損失です。

負例には、ランダムに選んだパッセージに加え、BM25で上位に出るが答えを含まないハードネガティブを使います。ランダム負例だけでは簡単すぎて、表面的な単語一致を超えた境界を学びにくいためです。さらに同じミニバッチ内の他質問の正例も負例として利用するin-batch negativeにより、一回の計算から多数の比較対を作ります。

検索と回答を二段に分ける

推論では、全WikipediaからDPRで上位k件を取得し、BERTベースのextractive readerが回答スパンを選びます。この分離は現在のRAGにも重要です。検索器は「根拠候補を落とさない」こと、生成器は「渡された根拠を正しく統合する」ことに集中できます。

ただしDPRは、質問とパッセージの細かい語句対応を推論時に直接計算するcross-encoderではありません。速度と事前索引化を優先するため、必要に応じて上位候補をrerankerで再順位付けする構成と相性がよいです。

実験と結果

論文はWikipediaを検索対象にし、Natural Questions(NQ)、TriviaQA、WebQuestions、CuratedTREC、SQuAD v1.1の五つのオープンドメインQAデータセットで評価しました。比較対象は強力なLucene-BM25で、主に上位20件に答えを含むパッセージを取得できた割合を測っています。

Top-20でBM25を大きく上回る

単一データセットで学習したDPRは、NQでTop-20 accuracy 78.4%、TriviaQAで79.4%、WebQuestionsで75.0%、CuratedTRECで89.1%でした。対応するBM25はそれぞれ59.1%、66.9%、55.0%、70.9%であり、DPRはこの四データセットで絶対値9〜20ポイント程度の改善を示しました。

SQuAD v1.1ではBM25が68.8%、DPRが63.2%となり、DPRが常に優位だったわけではありません。論文は、SQuADがWikipediaの段落に強く結び付いたデータセットであり、質問・答えの形式や学習データとの性質差が結果に影響すると示唆します。この例は、密検索を導入すれば必ず疎検索を置き換えられるわけではないことを教えます。

End-to-end QAでも改善を確認

取得した上位パッセージをreaderに渡す評価では、DPR + readerが複数ベンチマークで当時の最良水準を更新しました。たとえばNQのtestで、DPRのTop-20 retrieval accuracyは79.4%で、検索器が正解の候補を高い確率で届けられることがend-to-end精度を押し上げています。

また、BERTの一般的な事前学習済み重みから始め、質問・パッセージの教師ペアで微調整するだけでも強い結果が出ました。複雑な逆clozeタスクによる追加事前学習を必須にしなかった点は、ドメイン適応で再現しやすい設計上の価値です。

何に使える?

DPRの考え方は、質問と資料の表現がずれる検索で特に役立ちます。実装では既製の埋め込みモデルへ置き換わることもありますが、デュアルエンコーダ、ハードネガティブ、検索と生成の分離という設計はそのまま活用できます。

社内文書RAG

「経費精算の締切」への質問と「月次申請の期限」と書かれた規程のように、利用者と文書の語彙が違う社内検索に適しています。問い合わせログと実際に参照された文書を正例にし、似ているが誤った規程をハードネガティブにすれば、自社固有の言い換えへ検索器を寄せられます。

サポート・トラブルシューティング検索

ユーザーの症状文は曖昧で、マニュアルには原因や対処名で書かれがちです。DPR型の検索は意味的な近さを学ぶため、「画面が固まる」と「応答停止時の復旧手順」の橋渡し候補になります。上位候補をLLMに渡す前に、製品・バージョン・契約種別でフィルタすれば誤った根拠も減らせます。

エージェントのツール・API選択

ツールの説明文をパッセージ、ユーザー要求を質問として扱えば、候補APIを高速に絞り込めます。全ツール定義を毎回プロンプトへ入れるより入力を短くでき、後段のLLMには上位数件だけを見せられます。DPRのランキング学習は、実行成功ログを正例にしたツール検索にも応用可能です。

開発や事業へのヒント

この論文が示すのは、RAGの検索品質はモデル名の比較だけでなく、教師データと失敗例の設計で決まるという点です。小規模プロダクトでも、まず検索ログの観測から始められます。

クリック率ではなく根拠到達率を測る

RAGでは、検索上位k件に回答根拠があるかをラベル付き評価セットで測ってください。最終回答の評価だけでは、検索失敗なのか生成失敗なのかを切り分けられません。DPRのTop-k retrieval accuracyは、検索器に改善投資すべきかを判断する実務的なKPIになります。

ハードネガティブを失敗ログから作る

誤回答時に上位へ出た文書、同じ単語を含む別製品の資料、古い版の手順は良いハードネガティブ候補です。単に正答ペアを増やすより、「なぜその候補では駄目か」という境界を学習させると、現場特有の取り違えを減らせます。ラベルには文書の版・権限・更新日も残しておくと運用しやすくなります。

疎検索とのハイブリッドを初期値にする

論文のSQuADの結果が示すように、固有名詞、型番、エラーコード、厳密な引用ではBM25の語句一致が強い場合があります。実務ではDPRだけに賭けず、denseとBM25の候補を併合し、必要ならrerankerで上位を精査する構成から始めるのが堅実です。改善を比較してから、データに合った重みや検索器を決めます。

限界

DPRは正例の質問・パッセージ対に依存します。対象ドメインに問い合わせログや正解根拠がほとんどない場合、汎用データで学習した検索器が社内略語や独自概念を十分に理解しない可能性があります。ハードネガティブも、誤って本当の正例を含めると学習を傷めるため、作成時の検査が必要です。

文書ベクトルはエンコーダ更新のたびに再計算・再索引化が必要です。大規模コーパスや頻繁に更新されるナレッジでは、埋め込み生成、インデックス構築、世代切替のコストを運用設計に含めなければなりません。また、近似最近傍探索では速度と再現率のトレードオフもあります。

さらに、デュアルエンコーダは質問と文書を独立に処理するため、否定、条件、数値のような細粒度の対応を一つの内積に圧縮します。検索上位に似ているが誤った資料が残ることはあります。権限フィルタ、メタデータ制約、reranking、根拠引用の検証を組み合わせ、検索スコアだけで回答の正しさを判断しないことが重要です。

よくある質問

Q. DPRと現在の埋め込みモデルは何が違いますか?

A. DPRはBERTを質問用・文書用の二つのエンコーダとして微調整する代表的なデュアルエンコーダです。現在の埋め込みモデルは学習データ、損失、対応言語や次元が発展していますが、文書を事前にベクトル化し、質問との近さで候補を返す基本構造はDPRと共通しています。

Q. DPRだけでRAGを作れますか?

A. DPRは根拠候補を取る検索器であり、回答を生成する機能は持ちません。通常は、DPRまたは互換のベクトル検索器、必要に応じたreranker、LLM、引用・権限チェックを組み合わせます。検索評価と回答評価を分けると問題箇所を見つけやすくなります。

Q. なぜ質問用と文書用でエンコーダを分けるのですか?

A. 質問は短い要求、文書は説明を含む根拠であり、同じ役割ではありません。重みを分けることで両者を内積空間で対応させやすくなります。また文書側をオフラインで全件計算できるため、オンライン検索を高速に保てます。

Q. ハードネガティブはどのように集めればよいですか?

A. まずBM25や既存検索の上位から、質問に関連しそうだが正解根拠ではない文書を選びます。実運用では誤回答時に取得された候補も有効です。ただし本当に答えを含む文書を負例にしないよう、人手確認または複数のラベル規則で検査してください。

Q. BM25をDPRに完全移行すべきですか?

A. いいえ。論文でもSQuAD v1.1ではDPRがBM25を下回りました。型番や固有名詞が重要な領域では疎検索が強いため、まず両者を併用して自社の質問セットで根拠到達率、遅延、運用コストを比較するのが安全です。

今日の学び

この論文は、単語一致中心の検索では言い換えを含む質問の根拠を取り逃がす課題を扱いました。DPRは質問と文書を別々にベクトル化するデュアルエンコーダを、正例・ハードネガティブとの順位学習で最適化して解こうとします。開発では、RAGの生成器だけでなく検索の根拠到達率を測り、失敗ログをハードネガティブに変えることが品質改善の有力な手掛かりになります。

関連記事