Retriever
リトリーバー
りとりいばあ
Definition
A retriever is a component that searches for documents or chunks relevant to a question and passes them to an LLM. It is a core part of RAG pipelines.
RAGシステムでユーザーの質問に正確に答えるには、膨大な文書の中から「本当に関連する情報」だけを取り出す必要があります。この取り出す仕組みの質が、最終的な回答品質を決定づけます。リトリーバー(Retriever)とは、ユーザーのクエリに対して関連する文書やチャンクをデータストアから取得するコンポーネントです。
密検索と疎検索
リトリーバーには大きく2つのアプローチがあります。密検索(Dense Retrieval)は、埋め込みモデルを使ってクエリと文書をベクトル化し、ベクトル空間上の類似度で関連性を判定します。「意味」を捉えるため、同義語や言い換えに強い一方、固有名詞や専門用語の正確な一致には弱い面があります。
疎検索(Sparse Retrieval)は、BM25などのアルゴリズムを使い、単語の出現頻度と文書中の分布に基づいてランキングします。キーワードの完全一致に強く、計算コストも低いのが利点です。型番検索や法律の条文番号のように、正確な文字列マッチが求められるケースでは密検索を上回ります。
ハイブリッドリトリーバー
実務で最も効果的なのは、両者を組み合わせたハイブリッドリトリーバーです。密検索と疎検索をそれぞれ実行し、結果をマージして最終的なランキングを作成します。Reciprocal Rank Fusion(RRF)という手法が広く使われており、各検索結果の順位を逆数に変換して合算することで、両方の強みを活かしたスコアリングが可能です。
検索パラメータの調整
リトリーバーの性能を左右する重要なパラメータがいくつかあります。Top-Kは取得する文書数で、少なすぎると関連情報を見逃し、多すぎるとノイズが増えてLLMの回答精度が下がります。一般的には5〜20件程度から始めて調整します。また、類似度スコアの閾値を設定して、関連度が低い結果を除外するフィルタリングも重要です。
リトリーバーの進化
リトリーバーの設計は急速に進化しています。クエリを複数の観点に分解して検索する「マルチクエリリトリーバー」、ユーザーの質問を検索に適した形に言い換える「クエリ変換」、検索結果をリランキングモデルでさらに精査するパイプラインなど、単純な単一検索から多段階の検索戦略へと発展しています。リトリーバーの最適化はRAG全体の精度向上に直結するため、最も投資対効果の高い改善ポイントと言えます。