以编程方式使用文档

本示例展示了如何使用 HyDE 检索器,它实现了假设文档嵌入 (HyDE),如 这篇论文.

从高层次来看,HyDE 是一种嵌入技术,它接收查询,生成一个假设答案,然后将该生成的文档进行嵌入,并将其用作最终示例。

为了使用 HyDE,我们需要提供一个基础嵌入模型,以及一个可用于生成这些文档的 LLM。默认情况下,HyDE 类附带了一些默认提示词使用(有关详细信息请参阅论文),但我们也可以创建自己的提示词,它应该有一个单一的输入变量 {question}.

使用方法

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: {} }
]
*/

相关内容