{"version":3,"file":"contextual_compression.cjs","names":["BaseRetriever"],"sources":["../../src/retrievers/contextual_compression.ts"],"sourcesContent":["import {\n  BaseRetriever,\n  type BaseRetrieverInput,\n  type BaseRetrieverInterface,\n} from \"@langchain/core/retrievers\";\nimport type { DocumentInterface } from \"@langchain/core/documents\";\nimport { CallbackManagerForRetrieverRun } from \"@langchain/core/callbacks/manager\";\nimport { BaseDocumentCompressor } from \"./document_compressors/index.js\";\n\n/**\n * Interface for the arguments required to construct a\n * ContextualCompressionRetriever. It extends the BaseRetrieverInput\n * interface with two additional fields: baseCompressor and baseRetriever.\n */\nexport interface ContextualCompressionRetrieverArgs extends BaseRetrieverInput {\n  baseCompressor: BaseDocumentCompressor;\n  baseRetriever: BaseRetrieverInterface;\n}\n\n/**\n * A retriever that wraps a base retriever and compresses the results. It\n * retrieves relevant documents based on a given query and then compresses\n * these documents using a specified document compressor.\n * @example\n * ```typescript\n * const retriever = new ContextualCompressionRetriever({\n *   baseCompressor: new LLMChainExtractor(),\n *   baseRetriever: new HNSWLib().asRetriever(),\n * });\n * const retrievedDocs = await retriever.invoke(\n *   \"What did the speaker say about Justice Breyer?\",\n * );\n * ```\n */\nexport class ContextualCompressionRetriever extends BaseRetriever {\n  static lc_name() {\n    return \"ContextualCompressionRetriever\";\n  }\n\n  lc_namespace = [\"langchain\", \"retrievers\", \"contextual_compression\"];\n\n  baseCompressor: BaseDocumentCompressor;\n\n  baseRetriever: BaseRetrieverInterface;\n\n  constructor(fields: ContextualCompressionRetrieverArgs) {\n    super(fields);\n\n    this.baseCompressor = fields.baseCompressor;\n    this.baseRetriever = fields.baseRetriever;\n  }\n\n  async _getRelevantDocuments(\n    query: string,\n    runManager?: CallbackManagerForRetrieverRun\n  ): Promise<DocumentInterface[]> {\n    const docs = await this.baseRetriever.invoke(\n      query,\n      runManager?.getChild(\"base_retriever\")\n    );\n    const compressedDocs = await this.baseCompressor.compressDocuments(\n      docs,\n      query,\n      runManager?.getChild(\"base_compressor\")\n    );\n    return compressedDocs;\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkCA,IAAa,iCAAb,cAAoDA,2BAAAA,cAAc;CAChE,OAAO,UAAU;AACf,SAAO;;CAGT,eAAe;EAAC;EAAa;EAAc;EAAyB;CAEpE;CAEA;CAEA,YAAY,QAA4C;AACtD,QAAM,OAAO;AAEb,OAAK,iBAAiB,OAAO;AAC7B,OAAK,gBAAgB,OAAO;;CAG9B,MAAM,sBACJ,OACA,YAC8B;EAC9B,MAAM,OAAO,MAAM,KAAK,cAAc,OACpC,OACA,YAAY,SAAS,iBAAiB,CACvC;AAMD,SALuB,MAAM,KAAK,eAAe,kBAC/C,MACA,OACA,YAAY,SAAS,kBAAkB,CACxC"}