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,
|
prompt: dynamicMetadataFilterRetrieverPrompt,
|
||||||
topK: topK ? parseInt(topK, 10) : (vectorStore as any)?.k ?? 4
|
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
|
if (output === 'retriever') return retriever
|
||||||
else if (output === 'document') return await retriever.getRelevantDocuments(finalInputQuery)
|
else if (output === 'document') return await retriever.getRelevantDocuments(finalInputQuery)
|
||||||
|
|
|
||||||
|
|
@ -172,6 +172,7 @@ Passage:`
|
||||||
else if (promptKey) obj.promptTemplate = promptKey
|
else if (promptKey) obj.promptTemplate = promptKey
|
||||||
|
|
||||||
const retriever = new HydeRetriever(obj)
|
const retriever = new HydeRetriever(obj)
|
||||||
|
retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter
|
||||||
|
|
||||||
if (output === 'retriever') return retriever
|
if (output === 'retriever') return retriever
|
||||||
else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input)
|
else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input)
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ class MultiQueryRetriever_Retrievers implements INode {
|
||||||
|
|
||||||
const retriever = MultiQueryRetriever.fromLLM({
|
const retriever = MultiQueryRetriever.fromLLM({
|
||||||
llm: model,
|
llm: model,
|
||||||
retriever: vectorStore.asRetriever(),
|
retriever: vectorStore.asRetriever({ filter: vectorStore?.lc_kwargs?.filter ?? vectorStore?.filter }),
|
||||||
verbose: process.env.DEBUG === 'true',
|
verbose: process.env.DEBUG === 'true',
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
prompt: PromptTemplate.fromTemplate(prompt)
|
prompt: PromptTemplate.fromTemplate(prompt)
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ export class ReciprocalRankFusion extends BaseDocumentCompressor {
|
||||||
})
|
})
|
||||||
const docList: Document<Record<string, any>>[][] = []
|
const docList: Document<Record<string, any>>[][] = []
|
||||||
for (let i = 0; i < queries.length; i++) {
|
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[] = []
|
const docs: any[] = []
|
||||||
resultOne.forEach((doc) => {
|
resultOne.forEach((doc) => {
|
||||||
docs.push(doc)
|
docs.push(doc)
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,7 @@ class SimilarityThresholdRetriever_Retrievers implements INode {
|
||||||
maxK: maxK ? parseInt(maxK, 10) : 100,
|
maxK: maxK ? parseInt(maxK, 10) : 100,
|
||||||
kIncrement: kIncrement ? parseInt(kIncrement, 10) : 2
|
kIncrement: kIncrement ? parseInt(kIncrement, 10) : 2
|
||||||
})
|
})
|
||||||
|
retriever.filter = vectorStore?.lc_kwargs?.filter ?? (vectorStore as any).filter
|
||||||
|
|
||||||
if (output === 'retriever') return retriever
|
if (output === 'retriever') return retriever
|
||||||
else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input)
|
else if (output === 'document') return await retriever.getRelevantDocuments(query ? query : input)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue