HyDE 통합

HyDE 통합

LangChain JavaScript로 HyDE 검색기와 통합하는 방법을 알아봅니다.

이 예제는 이 논문에 설명된 대로 Hypothetical Document Embeddings(HyDE)를 구현한 HyDE Retriever를 사용하는 방법을 보여줍니다.

높은 수준에서 HyDE는 질의를 받아 가설적 답변을 생성한 다음 그 생성된 문서를 임베딩해 최종 예시로 사용하는 임베딩 기법입니다.

따라서 HyDE를 사용하려면 기본 임베딩 모델과 그러한 문서를 생성하는 데 사용할 수 있는 LLM을 제공해야 합니다. 기본적으로 HyDE 클래스에는 사용할 기본 프롬프트가 제공되지만(자세한 내용은 논문 참조), 단일 입력 변수 {question}을 갖는 자체 프롬프트를 만들 수도 있습니다.

출처: 문서

본문

사용법(Usage)

import { OpenAI, OpenAIEmbeddings } from "@langchain/openai";
import { MemoryVectorStore } from "@langchain/classic/vectorstores/memory";
import { HydeRetriever } from "@langchain/classic/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: {} }
]
*/

관련 자료(Related)

더 알아보기 (Learn more)