HyDE(ハイド)
Hypothetical Document Embeddings。クエリそのものでなく、LLMに仮の回答文書を生成させ、その埋め込みで検索するRAG手法。質問と文書の表現ギャップを埋め検索精度を高める。
概要
HyDE(Hypothetical Document Embeddings、仮想文書埋め込み)は、2022年に提案されたRAGのクエリ拡張手法です。ユーザーの質問そのものを埋め込むのではなく、LLMに「ありそうな回答文書」を生成させ、その仮想文書を埋め込んで検索します。短い質問は文書本文と語彙・形式が異なり埋め込み空間で離れがちですが、生成した回答は実際の文書に近い表現になるため、検索の再現率が向上します。ゼロショットで動作し、特別な学習なしにRAGの検索精度を底上げできる代表的な手法です。
主な特徴・仕組み
- 仮想文書生成: LLMが質問への「ありそうな回答」を生成
- 回答を埋め込み: 質問でなく生成文書をベクトル化して検索
- 語彙ギャップ解消: 質問と文書の表現の差を吸収
- ゼロショット: 追加学習・ラベル不要
- 再現率向上: 関連文書を取りこぼしにくくする
- 任意の埋め込みモデルと併用可: Contriever等と組合せ
スペック比較表
| 手法 | クエリ処理 | 学習 | 主効果 |
|---|---|---|---|
| 素のRAG | 質問を直接埋め込み | 不要 | 標準 |
| HyDE | 仮想回答を埋め込み | 不要 | 再現率↑ |
| Self-RAG | 検索要否を自己判断 | 要 | 精度↑ |
| GraphRAG | グラフ構築後検索 | 前処理重 | 全体把握↑ |
具体例・対応製品
LangChainやLlamaIndexにHyDE相当のクエリ変換機能があり、数行で組み込めます。専門用語の少ない一般的な質問でも、LLMが文書らしい回答を生成することで適切なチャンクにヒットしやすくなります。ハルシネーションを含む生成でも、埋め込み検索の「方向付け」としては有効に働きます。
選び方・注意点
仮想文書生成にLLM呼び出しが1回増えるため、レイテンシとコストが上がります。生成回答が的外れだと逆効果になる場合があるため、難しいクエリや専門領域では効果を検証してください。事実の正確性は最終的に検索した実文書で担保されるため、HyDEの生成内容自体の正しさは必須ではありません。
関連用語との違い
Self-RAGが「検索すべきか」「結果が有用か」を自己評価するのに対し、HyDEは検索クエリの質を高めるクエリ拡張に特化します。GraphRAGが文書集合をグラフ化して全体構造を扱うのに対し、HyDEは単純なベクトル検索の前段でクエリを変換するだけの軽量な工夫です。
よくある質問(FAQ)
Q1: 生成した仮想文書が間違っていても大丈夫ですか? A: はい。HyDEは検索の方向付けが目的で、事実は実際に検索した文書で担保されるため、仮想文書の正確性は必須ではありません。
Q2: どんな場面で効きますか? A: 質問が短く文書と語彙が離れている場合に効果的です。逆に質問が既に文書的な表現なら効果は限定的です。
Q3: コストは増えますか? A: 仮想文書生成のLLM呼び出しが1回増えるため、レイテンシとトークンコストが上がります。
まとめ
- LLM生成の仮想回答を埋め込んで検索するクエリ拡張手法
- 質問と文書の語彙ギャップを埋め再現率を向上
- ゼロショットで効くが生成のコスト増に注意