Skip to content

Commit 86a26f6

Browse files
hans00HenryHengZJ
andauthored
Fix vector store filter not work (#4065)
* Fix vector store filter not work * Update ExtractMetadataRetriever.ts * Update HydeRetriever.ts * Update MultiQueryRetriever.ts * Update SimilarityThresholdRetriever.ts --------- Co-authored-by: Henry Heng <[email protected]>
1 parent d8dc182 commit 86a26f6

File tree

5 files changed

+5
-2
lines changed

5 files changed

+5
-2
lines changed

packages/components/nodes/retrievers/ExtractMetadataRetriever/ExtractMetadataRetriever.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ class ExtractMetadataRetriever_Retrievers implements INode {
150150
prompt: dynamicMetadataFilterRetrieverPrompt,
151151
topK: topK ? parseInt(topK, 10) : (vectorStore as any)?.k ?? 4
152152
})
153+
retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter
153154

154155
if (output === 'retriever') return retriever
155156
else if (output === 'document') return await retriever.getRelevantDocuments(finalInputQuery)

packages/components/nodes/retrievers/HydeRetriever/HydeRetriever.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ Passage:`
172172
else if (promptKey) obj.promptTemplate = promptKey
173173

174174
const retriever = new HydeRetriever(obj)
175+
retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter
175176

176177
if (output === 'retriever') return retriever
177178
else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input)

packages/components/nodes/retrievers/MultiQueryRetriever/MultiQueryRetriever.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class MultiQueryRetriever_Retrievers implements INode {
7171

7272
const retriever = MultiQueryRetriever.fromLLM({
7373
llm: model,
74-
retriever: vectorStore.asRetriever(),
74+
retriever: vectorStore.asRetriever({ filter: vectorStore?.lc_kwargs?.filter ?? vectorStore?.filter }),
7575
verbose: process.env.DEBUG === 'true',
7676
// @ts-ignore
7777
prompt: PromptTemplate.fromTemplate(prompt)

packages/components/nodes/retrievers/RRFRetriever/ReciprocalRankFusion.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class ReciprocalRankFusion extends BaseDocumentCompressor {
5050
})
5151
const docList: Document<Record<string, any>>[][] = []
5252
for (let i = 0; i < queries.length; i++) {
53-
const resultOne = await this.baseRetriever.vectorStore.similaritySearch(queries[i], 5)
53+
const resultOne = await this.baseRetriever.vectorStore.similaritySearch(queries[i], 5, this.baseRetriever.filter)
5454
const docs: any[] = []
5555
resultOne.forEach((doc) => {
5656
docs.push(doc)

packages/components/nodes/retrievers/SimilarityThresholdRetriever/SimilarityThresholdRetriever.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ class SimilarityThresholdRetriever_Retrievers implements INode {
100100
maxK: maxK ? parseInt(maxK, 10) : 100,
101101
kIncrement: kIncrement ? parseInt(kIncrement, 10) : 2
102102
})
103+
retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter
103104

104105
if (output === 'retriever') return retriever
105106
else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input)

0 commit comments

Comments
 (0)