HyDE 检索器
此示例展示如何使用 HyDE 检索器,它实现了论文 this paper 中描述的假设文档嵌入(HyDE)。
从高层次来看,HyDE 是一种嵌入技术,它接收查询,生成一个假设性的答案,然后嵌入该生成的文档,并将其作为最终的嵌入结果。
因此,为了使用 HyDE,我们需要提供一个基础的嵌入模型以及一个可用于生成这些文档的 LLM。默认情况下,HyDE 类自带了一些可使用的默认提示(详见论文中的详细说明),但我们也可以自定义提示,其应包含一个单独的输入变量 {question}。
使用方法
:::提示 请参阅安装集成包的一般说明部分。 :::
- npm
- Yarn
- pnpm
npm install @langchain/openai @langchain/core
yarn add @langchain/openai @langchain/core
pnpm add @langchain/openai @langchain/core
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 from
@langchain/openai - OpenAIEmbeddings from
@langchain/openai - MemoryVectorStore from
langchain/vectorstores/memory - HydeRetriever from
langchain/retrievers/hyde - Document from
@langchain/core/documents
相关内容
Related
- Retriever conceptual guide
- Retriever how-to guides