mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-28 17:01:00 +03:00
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:
+1
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
+1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user