diff --git a/packages/components/nodes/retrievers/ExtractMetadataRetriever/ExtractMetadataRetriever.ts b/packages/components/nodes/retrievers/ExtractMetadataRetriever/ExtractMetadataRetriever.ts index fa37b99e..48168445 100644 --- a/packages/components/nodes/retrievers/ExtractMetadataRetriever/ExtractMetadataRetriever.ts +++ b/packages/components/nodes/retrievers/ExtractMetadataRetriever/ExtractMetadataRetriever.ts @@ -150,6 +150,7 @@ class ExtractMetadataRetriever_Retrievers implements INode { prompt: dynamicMetadataFilterRetrieverPrompt, topK: topK ? parseInt(topK, 10) : (vectorStore as any)?.k ?? 4 }) + retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter if (output === 'retriever') return retriever else if (output === 'document') return await retriever.getRelevantDocuments(finalInputQuery) diff --git a/packages/components/nodes/retrievers/HydeRetriever/HydeRetriever.ts b/packages/components/nodes/retrievers/HydeRetriever/HydeRetriever.ts index 0a4d6988..580d4ba4 100644 --- a/packages/components/nodes/retrievers/HydeRetriever/HydeRetriever.ts +++ b/packages/components/nodes/retrievers/HydeRetriever/HydeRetriever.ts @@ -172,6 +172,7 @@ Passage:` else if (promptKey) obj.promptTemplate = promptKey const retriever = new HydeRetriever(obj) + retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter if (output === 'retriever') return retriever else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input) diff --git a/packages/components/nodes/retrievers/MultiQueryRetriever/MultiQueryRetriever.ts b/packages/components/nodes/retrievers/MultiQueryRetriever/MultiQueryRetriever.ts index 3802f0da..fd845a35 100644 --- a/packages/components/nodes/retrievers/MultiQueryRetriever/MultiQueryRetriever.ts +++ b/packages/components/nodes/retrievers/MultiQueryRetriever/MultiQueryRetriever.ts @@ -71,7 +71,7 @@ class MultiQueryRetriever_Retrievers implements INode { const retriever = MultiQueryRetriever.fromLLM({ llm: model, - retriever: vectorStore.asRetriever(), + retriever: vectorStore.asRetriever({ filter: vectorStore?.lc_kwargs?.filter ?? vectorStore?.filter }), verbose: process.env.DEBUG === 'true', // @ts-ignore prompt: PromptTemplate.fromTemplate(prompt) diff --git a/packages/components/nodes/retrievers/RRFRetriever/ReciprocalRankFusion.ts b/packages/components/nodes/retrievers/RRFRetriever/ReciprocalRankFusion.ts index 36141c5c..47ae2d00 100644 --- a/packages/components/nodes/retrievers/RRFRetriever/ReciprocalRankFusion.ts +++ b/packages/components/nodes/retrievers/RRFRetriever/ReciprocalRankFusion.ts @@ -50,7 +50,7 @@ export class ReciprocalRankFusion extends BaseDocumentCompressor { }) const docList: Document>[][] = [] for (let i = 0; i < queries.length; i++) { - const resultOne = await this.baseRetriever.vectorStore.similaritySearch(queries[i], 5) + const resultOne = await this.baseRetriever.vectorStore.similaritySearch(queries[i], 5, this.baseRetriever.filter) const docs: any[] = [] resultOne.forEach((doc) => { docs.push(doc) diff --git a/packages/components/nodes/retrievers/SimilarityThresholdRetriever/SimilarityThresholdRetriever.ts b/packages/components/nodes/retrievers/SimilarityThresholdRetriever/SimilarityThresholdRetriever.ts index bdfb10d9..94c2d021 100644 --- a/packages/components/nodes/retrievers/SimilarityThresholdRetriever/SimilarityThresholdRetriever.ts +++ b/packages/components/nodes/retrievers/SimilarityThresholdRetriever/SimilarityThresholdRetriever.ts @@ -100,6 +100,7 @@ class SimilarityThresholdRetriever_Retrievers implements INode { maxK: maxK ? parseInt(maxK, 10) : 100, kIncrement: kIncrement ? parseInt(kIncrement, 10) : 2 }) + retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter if (output === 'retriever') return retriever else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input)