mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-28 13:00:56 +03:00
Bugfix/Missing Filter for VectorStore to Document (#2285)
add filter for vector store to document
This commit is contained in:
@@ -1,11 +1,19 @@
|
||||
import { INodeData } from '../../src'
|
||||
import { VectorStore } from '@langchain/core/vectorstores'
|
||||
|
||||
export const resolveVectorStoreOrRetriever = (nodeData: INodeData, vectorStore: any) => {
|
||||
export const resolveVectorStoreOrRetriever = (
|
||||
nodeData: INodeData,
|
||||
vectorStore: VectorStore,
|
||||
metadataFilter?: string | object | undefined
|
||||
) => {
|
||||
const output = nodeData.outputs?.output as string
|
||||
const searchType = nodeData.outputs?.searchType as string
|
||||
const topK = nodeData.inputs?.topK as string
|
||||
const k = topK ? parseFloat(topK) : 4
|
||||
|
||||
// If it is already pre-defined in lc_kwargs, then don't pass it again
|
||||
const filter = vectorStore?.lc_kwargs?.filter ? undefined : metadataFilter
|
||||
|
||||
if (output === 'retriever') {
|
||||
if ('mmr' === searchType) {
|
||||
const fetchK = nodeData.inputs?.fetchK as string
|
||||
@@ -15,6 +23,7 @@ export const resolveVectorStoreOrRetriever = (nodeData: INodeData, vectorStore:
|
||||
return vectorStore.asRetriever({
|
||||
searchType: 'mmr',
|
||||
k: k,
|
||||
filter,
|
||||
searchKwargs: {
|
||||
fetchK: f,
|
||||
lambda: l
|
||||
@@ -22,10 +31,11 @@ export const resolveVectorStoreOrRetriever = (nodeData: INodeData, vectorStore:
|
||||
})
|
||||
} else {
|
||||
// "searchType" is "similarity"
|
||||
return vectorStore.asRetriever(k)
|
||||
return vectorStore.asRetriever(k, filter)
|
||||
}
|
||||
} else if (output === 'vectorStore') {
|
||||
;(vectorStore as any).k = k
|
||||
;(vectorStore as any).filter = filter
|
||||
return vectorStore
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user