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 <henryheng@flowiseai.com>
This commit is contained in:
Hans 2025-02-26 23:03:54 +08:00 committed by GitHub
parent d8dc1820e1
commit 86a26f6ae3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 5 additions and 2 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -50,7 +50,7 @@ export class ReciprocalRankFusion extends BaseDocumentCompressor {
})
const docList: Document<Record<string, any>>[][] = []
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)

View File

@ -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)