!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())

[Skip to main content](#__docusaurus_skipToContent_fallback)

LangChain v0.2 is coming soon! Preview the new docs [here](/v0.2/docs/introduction/).

[

![🦜️🔗 Langchain](/v0.1/img/brand/wordmark.png)![🦜️🔗 Langchain](/v0.1/img/brand/wordmark-dark.png)

](/v0.1/)[Docs](/v0.1/docs/get_started/introduction/)[Use cases](/v0.1/docs/use_cases/)[Integrations](/v0.1/docs/integrations/platforms/)[API Reference](https://api.js.langchain.com)

[More](#)

*   [People](/v0.1/docs/people/)
*   [Community](/v0.1/docs/community/)
*   [Tutorials](/v0.1/docs/additional_resources/tutorials/)
*   [Contributing](/v0.1/docs/contributing/)

[v0.1](#)

*   [v0.2](https://js.langchain.com/v0.2/docs/introduction)
*   [v0.1](/v0.1/docs/get_started/introduction/)

[🦜🔗](#)

*   [LangSmith](https://smith.langchain.com)
*   [LangSmith Docs](https://docs.smith.langchain.com)
*   [LangChain Hub](https://smith.langchain.com/hub)
*   [LangServe](https://github.com/langchain-ai/langserve)
*   [Python Docs](https://python.langchain.com/)

[Chat](https://chatjs.langchain.com)[](https://github.com/langchain-ai/langchainjs)

Search

*   [Providers](/v0.1/docs/integrations/platforms/)
    
    *   [Providers](/v0.1/docs/integrations/platforms/)
    *   [Anthropic](/v0.1/docs/integrations/platforms/anthropic/)
    *   [AWS](/v0.1/docs/integrations/platforms/aws/)
    *   [Google](/v0.1/docs/integrations/platforms/google/)
    *   [Microsoft](/v0.1/docs/integrations/platforms/microsoft/)
    *   [OpenAI](/v0.1/docs/integrations/platforms/openai/)
*   [Components](/v0.1/docs/integrations/components/)
    
    *   [LLMs](/v0.1/docs/integrations/llms/)
        
    *   [Chat models](/v0.1/docs/integrations/chat/)
        
    *   [Document loaders](/v0.1/docs/integrations/document_loaders/)
        
    *   [Document transformers](/v0.1/docs/integrations/document_transformers/)
        
    *   [Document compressors](/v0.1/docs/integrations/document_compressors/)
        
    *   [Text embedding models](/v0.1/docs/integrations/text_embedding/)
        
    *   [Vector stores](/v0.1/docs/integrations/vectorstores/)
        
    *   [Retrievers](/v0.1/docs/integrations/retrievers/)
        
        *   [Knowledge Bases for Amazon Bedrock](/v0.1/docs/integrations/retrievers/bedrock-knowledge-bases/)
        *   [Chaindesk Retriever](/v0.1/docs/integrations/retrievers/chaindesk-retriever/)
        *   [ChatGPT Plugin Retriever](/v0.1/docs/integrations/retrievers/chatgpt-retriever-plugin/)
        *   [Dria Retriever](/v0.1/docs/integrations/retrievers/dria/)
        *   [Exa Search](/v0.1/docs/integrations/retrievers/exa/)
        *   [HyDE Retriever](/v0.1/docs/integrations/retrievers/hyde/)
        *   [Amazon Kendra Retriever](/v0.1/docs/integrations/retrievers/kendra-retriever/)
        *   [Metal Retriever](/v0.1/docs/integrations/retrievers/metal-retriever/)
        *   [Supabase Hybrid Search](/v0.1/docs/integrations/retrievers/supabase-hybrid/)
        *   [Tavily Search API](/v0.1/docs/integrations/retrievers/tavily/)
        *   [Time-Weighted Retriever](/v0.1/docs/integrations/retrievers/time-weighted-retriever/)
        *   [Vector Store](/v0.1/docs/integrations/retrievers/vectorstore/)
        *   [Vespa Retriever](/v0.1/docs/integrations/retrievers/vespa-retriever/)
        *   [Zep Retriever](/v0.1/docs/integrations/retrievers/zep-retriever/)
    *   [Tools](/v0.1/docs/integrations/tools/)
        
    *   [Agents and toolkits](/v0.1/docs/integrations/toolkits/)
        
    *   [Chat Memory](/v0.1/docs/integrations/chat_memory/)
        
    *   [Stores](/v0.1/docs/integrations/stores/)
        

*   [](/v0.1/)
*   [Components](/v0.1/docs/integrations/components/)
*   [Retrievers](/v0.1/docs/integrations/retrievers/)
*   HyDE Retriever

HyDE Retriever
==============

This example shows how to use the HyDE Retriever, which implements Hypothetical Document Embeddings (HyDE) as described in [this paper](https://arxiv.org/abs/2212.10496).

At a high level, HyDE is an embedding technique that takes queries, generates a hypothetical answer, and then embeds that generated document and uses that as the final example.

In order to use HyDE, we therefore need to provide a base embedding model, as well as an LLM that can be used to generate those documents. By default, the HyDE class comes with some default prompts to use (see the paper for more details on them), but we can also create our own, which should have a single input variable `{question}`.

Usage[​](#usage "Direct link to Usage")
---------------------------------------

tip

See [this section for general instructions on installing integration packages](/v0.1/docs/get_started/installation/#installing-integration-packages).

*   npm
*   Yarn
*   pnpm

    npm install @langchain/openai

    yarn add @langchain/openai

    pnpm add @langchain/openai

    import { OpenAI, OpenAIEmbeddings } from "@langchain/openai";import { MemoryVectorStore } from "langchain/vectorstores/memory";import { HydeRetriever } from "langchain/retrievers/hyde";import { Document } from "@langchain/core/documents";const embeddings = new OpenAIEmbeddings();const vectorStore = new MemoryVectorStore(embeddings);const llm = new OpenAI();const retriever = new HydeRetriever({  vectorStore,  llm,  k: 1,});await vectorStore.addDocuments(  [    "My name is John.",    "My name is Bob.",    "My favourite food is pizza.",    "My favourite food is pasta.",  ].map((pageContent) => new Document({ pageContent })));const results = await retriever.invoke("What is my favourite food?");console.log(results);/*[  Document { pageContent: 'My favourite food is pasta.', metadata: {} }]*/

#### API Reference:

*   [OpenAI](https://api.js.langchain.com/classes/langchain_openai.OpenAI.html) from `@langchain/openai`
*   [OpenAIEmbeddings](https://api.js.langchain.com/classes/langchain_openai.OpenAIEmbeddings.html) from `@langchain/openai`
*   [MemoryVectorStore](https://api.js.langchain.com/classes/langchain_vectorstores_memory.MemoryVectorStore.html) from `langchain/vectorstores/memory`
*   [HydeRetriever](https://api.js.langchain.com/classes/langchain_retrievers_hyde.HydeRetriever.html) from `langchain/retrievers/hyde`
*   [Document](https://api.js.langchain.com/classes/langchain_core_documents.Document.html) from `@langchain/core/documents`

* * *

#### Help us out by providing feedback on this documentation page:

[

Previous

Exa Search

](/v0.1/docs/integrations/retrievers/exa/)[

Next

Amazon Kendra Retriever

](/v0.1/docs/integrations/retrievers/kendra-retriever/)

Community

*   [Discord](https://discord.gg/cU2adEyC7w)
*   [Twitter](https://twitter.com/LangChainAI)

GitHub

*   [Python](https://github.com/langchain-ai/langchain)
*   [JS/TS](https://github.com/langchain-ai/langchainjs)

More

*   [Homepage](https://langchain.com)
*   [Blog](https://blog.langchain.dev)

Copyright © 2024 LangChain, Inc.