{"version":3,"file":"score_threshold.cjs","names":["VectorStoreRetriever"],"sources":["../../src/retrievers/score_threshold.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport {\n  VectorStore,\n  VectorStoreRetriever,\n  VectorStoreRetrieverInput,\n} from \"@langchain/core/vectorstores\";\n\nexport type ScoreThresholdRetrieverInput<V extends VectorStore> = Omit<\n  VectorStoreRetrieverInput<V>,\n  \"k\"\n> & {\n  maxK?: number;\n  kIncrement?: number;\n  minSimilarityScore: number;\n};\n\nexport class ScoreThresholdRetriever<\n  V extends VectorStore,\n> extends VectorStoreRetriever<V> {\n  minSimilarityScore: number;\n\n  kIncrement = 10;\n\n  maxK = 100;\n\n  constructor(input: ScoreThresholdRetrieverInput<V>) {\n    super(input);\n    this.maxK = input.maxK ?? this.maxK;\n    this.minSimilarityScore =\n      input.minSimilarityScore ?? this.minSimilarityScore;\n    this.kIncrement = input.kIncrement ?? this.kIncrement;\n  }\n\n  async invoke(query: string): Promise<Document[]> {\n    let currentK = 0;\n    let filteredResults: [Document, number][] = [];\n    do {\n      currentK += this.kIncrement;\n      const results = await this.vectorStore.similaritySearchWithScore(\n        query,\n        currentK,\n        this.filter\n      );\n      filteredResults = results.filter(\n        ([, score]) => score >= this.minSimilarityScore\n      );\n    } while (filteredResults.length >= currentK && currentK < this.maxK);\n    return filteredResults.map((documents) => documents[0]).slice(0, this.maxK);\n  }\n\n  static fromVectorStore<V extends VectorStore>(\n    vectorStore: V,\n    options: Omit<ScoreThresholdRetrieverInput<V>, \"vectorStore\">\n  ) {\n    return new this<V>({ ...options, vectorStore });\n  }\n}\n"],"mappings":";;;;;AAgBA,IAAa,0BAAb,cAEUA,6BAAAA,qBAAwB;CAChC;CAEA,aAAa;CAEb,OAAO;CAEP,YAAY,OAAwC;AAClD,QAAM,MAAM;AACZ,OAAK,OAAO,MAAM,QAAQ,KAAK;AAC/B,OAAK,qBACH,MAAM,sBAAsB,KAAK;AACnC,OAAK,aAAa,MAAM,cAAc,KAAK;;CAG7C,MAAM,OAAO,OAAoC;EAC/C,IAAI,WAAW;EACf,IAAI,kBAAwC,EAAE;AAC9C,KAAG;AACD,eAAY,KAAK;AAMjB,sBALgB,MAAM,KAAK,YAAY,0BACrC,OACA,UACA,KAAK,OACN,EACyB,QACvB,GAAG,WAAW,SAAS,KAAK,mBAC9B;WACM,gBAAgB,UAAU,YAAY,WAAW,KAAK;AAC/D,SAAO,gBAAgB,KAAK,cAAc,UAAU,GAAG,CAAC,MAAM,GAAG,KAAK,KAAK;;CAG7E,OAAO,gBACL,aACA,SACA;AACA,SAAO,IAAI,KAAQ;GAAE,GAAG;GAAS;GAAa,CAAC"}