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:
parent
d8dc1820e1
commit
86a26f6ae3
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue