HyDE(Hypothetical Document Embeddings)は、質問をそのままベクトル検索に使うのではなく、まずLLMに質問への「仮の回答」を書かせ、その仮の回答のベクトルで資料を検索する方法です。2022年にGaoらが発表した論文で提案され、ACL 2023で発表されました。
ただし、HyDEは現在では、まず最初に試す方法としてはあまり勧められていません。その理由は記事の後半で説明します。
埋め込みとベクトル検索の基本は、以前の記事で説明しています。
何のために使うのか
ベクトル検索では、質問のベクトルと資料のチャンクのベクトルを比べます。しかし、質問と資料は文章の形が大きく違います。
- 質問は短く、「〜は何日前まで?」のような問いかけの形
- 資料は長く、「〜は取得日の3日前までに申請してください」のような説明の形
この違いのせいで、内容は合っていても、ベクトルが十分に近くならないことがあります。HyDEは、質問を「資料に書かれていそうな文章」に書き換えてから検索することで、この差を埋めようとする方法です。
どう動くのか
通常のベクトル検索とHyDEの違いは、検索に使うベクトルを何から作るかです。

処理の流れを順番に書くと、次のようになります。

- 利用者の質問をLLMに渡し、「この質問に答える文章を書いて」と依頼する
- LLMが仮の回答を書く(この時点では、内容が正しくなくてもかまわない)
- 仮の回答を埋め込みモデルでベクトルにする
- そのベクトルに近いチャンクを、ベクトルデータベースから検索する
- 見つかった実際のチャンクと質問をLLMに渡し、資料に基づいて回答させる
仮の回答の内容が間違っていてもよい理由について、論文では、埋め込みモデルがベクトルに変換する段階で細かい誤りは薄まり、「どういう内容の文章か」という特徴が残るためだと説明しています。最終的な回答は、仮の回答ではなく、検索で見つかった実際の資料をもとに作ります。
現在の位置づけ:最初に試す方法としては勧められない
HyDEは、論文の発表当時は有効な方法として注目され、多くのRAGの解説で紹介されました。しかし現在は、次のような理由から、最初に試す方法としてはあまり勧められていません。
論文が想定していた状況との違い
論文のタイトルは「Precise Zero-Shot Dense Retrieval without Relevance Labels」で、検索用の学習データ(質問と正解文書の組)がない状況で、性能を上げることを目的としていました。比較の相手も、そうした学習データを使わずに作られた埋め込みモデル(Contriever)です。現在のRAGでは、検索用に学習された埋め込みモデルを使うことが一般的なので、HyDEで改善できる余地は論文の条件より小さい可能性があります。
応答が遅くなり、誤った情報が混ざることがある
HyDEは検索の前にLLMで文章を1回生成するため、その分だけ時間がかかります。2025年に発表された、小さなLLM(Gemma 1B・4B)で通常のRAGとHyDEを比べた研究では、HyDEは通常の方法より43〜60%遅くなりました。さらに、個人のプロフィール情報に関する質問では、HyDEを使った構成がすべての質問で、プロフィールにない日付や件数を作り出したと報告されています。
仮の回答に含まれる誤りに検索が引っ張られると、関係のない資料が見つかることもあります。とくに、社内の固有の情報のように、LLMがもともと知らない内容ほど、仮の回答は的外れになりやすくなります。
ライブラリでも古い機能として扱われている
LangChainのHyDEの実装(HypotheticalDocumentEmbedder)は、LangChain v1で、古い機能をまとめた langchain-classic パッケージに移されました。公式の移行ガイドでは、このパッケージに移した機能を「Legacy code(古いコード)」と呼んでいます。
なお、HyDEそのものを「非推奨」と明記した公式の文書は、調べた範囲では見つかりませんでした。ここでの「勧められない」は、上のような理由から、他の方法を先に試すほうがよいという意味です。
先に試したい方法
検索の精度を上げたい場合は、次の方法を先に試すのがおすすめです。
- ハイブリッド検索:キーワード検索とベクトル検索を組み合わせる
- リランキング:検索結果を精度の高いモデルで並べ替える
- 埋め込みモデルの見直し:日本語で評価の高いモデルに変える
それでも、質問が極端に短い・あいまいといった理由で検索がうまくいかない場合に、HyDEを候補の1つとして試します。その際は、前に説明した評価の仕組みを使って、本当に改善したかを確かめます。
注意点
- 応答時間と費用が増える:質問ごとにLLMの呼び出しが1回増えます。
- LLMが知らない分野では逆効果になりうる:仮の回答が的外れだと、検索も的外れになります。
- 仮の回答を利用者に見せない:仮の回答は検索のためだけの文章です。そのまま回答として表示すると、誤った情報を伝えることになります。
HyDEは「質問と資料の文章の形の違いを埋める」という考え方を知るうえでは分かりやすい例です。ただ、実際のRAGに入れるかどうかは、評価の結果を見て判断するのが確実です。

