HyDE(Hypothetical Document Embeddings)(ハイド)
LLMにクエリから仮想的な回答文書を生成させ、その文書の埋め込みベクトルで検索することで、クエリと文書の意味的ギャップを埋めるRAG検索手法。2022年にGao et al.が提案した。
HyDE(Hypothetical Document Embeddings)とは
HyDEは、検索クエリを直接埋め込みベクトル化するのではなく、LLMに仮想的な回答文書を生成させてから埋め込み検索を行うRetrieval-Augmented Generation(RAG)の改良手法である。2022年にLuyu Gao et al.が論文「Precise Zero-Shot Dense Retrieval without Relevance Labels」で提案した。従来のRAGではクエリ「GPUの選び方は?」と文書「RTX 4070はミドルレンジ向けで...」の間に語彙・文体の差(クエリ-文書ギャップ)があり検索精度が低下する問題があったが、HyDEはこのギャップをLLMの生成能力で埋める。
主な特徴・仕組み
- 2段階パイプライン: (1) LLMがクエリから仮想回答文書を生成 → (2) 仮想文書を埋め込みモデル(例: BGE-M3, text-embedding-3-large)でベクトル化 → (3) ベクトルDBで類似検索
- Zero-Shot対応: ファインチューニング不要。プロンプトのみで動作し、任意のドメインに即座に適用可能
- リコール向上: MS MARCO・NQ・TREC-DLベンチマークでBM25比+5〜15%のリコール改善(Gao et al. 2022)
- LLM依存: 仮想文書の品質がLLMの能力に依存。GPT-4oやClaude Sonnet 4.6クラスのモデルで最良の結果
- レイテンシ増加: LLM生成ステップが追加されるため、通常のベクトル検索より100〜500ms遅延(モデルサイズ依存)
- ハルシネーション耐性: 仮想文書自体が不正確でも、語彙・構造の類似性で正しい文書を引き当てる設計
- コスト: クエリごとにLLM API呼び出しが発生。1クエリあたり約500〜2,000トークン消費
- 複数仮想文書生成: 1クエリから3〜5件の仮想文書を生成し、平均ベクトルで検索する手法で精度をさらに向上
処理フロー比較
| ステップ | 通常RAG | HyDE |
|---|---|---|
| 1 | クエリをベクトル化 | LLMで仮想文書生成 |
| 2 | ベクトルDBで検索 | 仮想文書をベクトル化 |
| 3 | Top-K文書を取得 | ベクトルDBで検索 |
| 4 | LLMで回答生成 | Top-K文書を取得 |
| 5 | — | LLMで回答生成 |
| レイテンシ | 200〜500ms | 500〜1,500ms |
| LLM呼び出し | 1回 | 2回 |
実装例(LangChain)
LangChainではHypotheticalDocumentEmbedderクラスとして実装済み。以下の3行で基本的なHyDEパイプラインが構築できる:
ChatOpenAI(GPT-4o)で仮想文書生成OpenAIEmbeddings(text-embedding-3-large)でベクトル化Chroma等のベクトルDBで検索
LlamaIndexではHyDEQueryTransformとして提供。Haystack 2.xではカスタムコンポーネントとして実装する。
選び方・注意点
- 適用すべきケース: クエリが短い(3語以下)・曖昧・専門用語が少ない場合に効果大
- 避けるべきケース: クエリが具体的で長い場合(「RTX 4090 vs RTX 4080 SUPER 価格比較 2026年6月」等)は通常RAGで十分
- コスト管理: 高トラフィック環境ではLLM API費用が2倍になる。キャッシュ(同一クエリの仮想文書を保存)で軽減可能
- 仮想文書の言語: 多言語RAGでは仮想文書の言語とコーパスの言語を一致させる必要がある
- 評価指標: Recall@10、MRR(Mean Reciprocal Rank)で通常RAGと比較して効果を検証
関連用語との違い
| 手法 | アプローチ | 強み | 弱み |
|---|---|---|---|
| HyDE | 仮想文書生成→検索 | 短いクエリに強い | レイテンシ・コスト増 |
| Self-RAG | 検索要否を自己判断 | 不要な検索を省略 | 学習コスト高 |
| CRAG | 検索結果を事後評価 | 低品質文書を排除 | 評価ステップの追加コスト |
| GraphRAG | ナレッジグラフ活用 | 関係推論に強い | グラフ構築コスト大 |
よくある質問(FAQ)
Q1: HyDEの仮想文書がハルシネーションだらけでも検索精度は上がるの? A: 上がる。仮想文書の事実正確性は重要ではなく、語彙・文体・構造の類似性が検索に効く。LLMが生成する仮想文書は実際の文書と表面的な特徴を共有するため、内容が不正確でもベクトル空間上では正しい文書の近傍に位置する。
Q2: HyDEのレイテンシを削減する方法は? A: 3つのアプローチがある。(1) 小型LLM(Phi-3-mini, Gemma 2B等)で仮想文書を生成しコスト・速度を最適化。(2) 同一クエリパターンの仮想文書をRedis等にキャッシュ。(3) Streaming生成で部分文書から早期にベクトル化を開始。
Q3: HyDEはどんなドメインで最も効果がある? A: 医療・法律・学術論文など専門用語が多くクエリと文書の語彙差が大きいドメインで効果が顕著。一般的なWeb検索のようにクエリと文書の語彙が一致しやすいドメインでは効果が限定的。
まとめ
- HyDEはLLMで仮想文書を生成してから検索するRAG改良手法で、クエリ-文書ギャップを解消
- 短い・曖昧なクエリでのリコールを+5〜15%改善(BM25比)
- レイテンシとコストが2倍になるトレードオフがあり、適用場面の見極めが重要
- LangChain・LlamaIndex等の主要フレームワークに実装済みで導入容易