mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-28 23:01:09 +03:00
Feature/Add content and metadata key for qdrant (#2997)
add content and metadata key for qdrant
This commit is contained in:
@@ -32,7 +32,7 @@ class Qdrant_VectorStores implements INode {
|
|||||||
constructor() {
|
constructor() {
|
||||||
this.label = 'Qdrant'
|
this.label = 'Qdrant'
|
||||||
this.name = 'qdrant'
|
this.name = 'qdrant'
|
||||||
this.version = 3.0
|
this.version = 4.0
|
||||||
this.type = 'Qdrant'
|
this.type = 'Qdrant'
|
||||||
this.icon = 'qdrant.png'
|
this.icon = 'qdrant.png'
|
||||||
this.category = 'Vector Stores'
|
this.category = 'Vector Stores'
|
||||||
@@ -85,6 +85,24 @@ class Qdrant_VectorStores implements INode {
|
|||||||
default: 1536,
|
default: 1536,
|
||||||
additionalParams: true
|
additionalParams: true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: 'Content Key',
|
||||||
|
name: 'contentPayloadKey',
|
||||||
|
description: 'The key for storing text. Default to `content`',
|
||||||
|
type: 'string',
|
||||||
|
default: 'content',
|
||||||
|
optional: true,
|
||||||
|
additionalParams: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Metadata Key',
|
||||||
|
name: 'metadataPayloadKey',
|
||||||
|
description: 'The key for storing metadata. Default to `metadata`',
|
||||||
|
type: 'string',
|
||||||
|
default: 'metadata',
|
||||||
|
optional: true,
|
||||||
|
additionalParams: true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: 'Upsert Batch Size',
|
label: 'Upsert Batch Size',
|
||||||
name: 'batchSize',
|
name: 'batchSize',
|
||||||
@@ -168,6 +186,8 @@ class Qdrant_VectorStores implements INode {
|
|||||||
const qdrantVectorDimension = nodeData.inputs?.qdrantVectorDimension
|
const qdrantVectorDimension = nodeData.inputs?.qdrantVectorDimension
|
||||||
const recordManager = nodeData.inputs?.recordManager
|
const recordManager = nodeData.inputs?.recordManager
|
||||||
const _batchSize = nodeData.inputs?.batchSize
|
const _batchSize = nodeData.inputs?.batchSize
|
||||||
|
const contentPayloadKey = nodeData.inputs?.contentPayloadKey || 'content'
|
||||||
|
const metadataPayloadKey = nodeData.inputs?.metadataPayloadKey || 'metadata'
|
||||||
|
|
||||||
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
|
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
|
||||||
const qdrantApiKey = getCredentialParam('qdrantApiKey', credentialData, nodeData)
|
const qdrantApiKey = getCredentialParam('qdrantApiKey', credentialData, nodeData)
|
||||||
@@ -197,7 +217,9 @@ class Qdrant_VectorStores implements INode {
|
|||||||
size: qdrantVectorDimension ? parseInt(qdrantVectorDimension, 10) : 1536,
|
size: qdrantVectorDimension ? parseInt(qdrantVectorDimension, 10) : 1536,
|
||||||
distance: qdrantSimilarity ?? 'Cosine'
|
distance: qdrantSimilarity ?? 'Cosine'
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
contentPayloadKey,
|
||||||
|
metadataPayloadKey
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -220,8 +242,8 @@ class Qdrant_VectorStores implements INode {
|
|||||||
id: documentOptions?.ids?.length ? documentOptions?.ids[idx] : uuid(),
|
id: documentOptions?.ids?.length ? documentOptions?.ids[idx] : uuid(),
|
||||||
vector: embedding,
|
vector: embedding,
|
||||||
payload: {
|
payload: {
|
||||||
content: documents[idx].pageContent,
|
[contentPayloadKey]: documents[idx].pageContent,
|
||||||
metadata: documents[idx].metadata,
|
[metadataPayloadKey]: documents[idx].metadata,
|
||||||
customPayload: documentOptions?.customPayload?.length ? documentOptions?.customPayload[idx] : undefined
|
customPayload: documentOptions?.customPayload?.length ? documentOptions?.customPayload[idx] : undefined
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
@@ -367,6 +389,8 @@ class Qdrant_VectorStores implements INode {
|
|||||||
const output = nodeData.outputs?.output as string
|
const output = nodeData.outputs?.output as string
|
||||||
const topK = nodeData.inputs?.topK as string
|
const topK = nodeData.inputs?.topK as string
|
||||||
let queryFilter = nodeData.inputs?.qdrantFilter
|
let queryFilter = nodeData.inputs?.qdrantFilter
|
||||||
|
const contentPayloadKey = nodeData.inputs?.contentPayloadKey || 'content'
|
||||||
|
const metadataPayloadKey = nodeData.inputs?.metadataPayloadKey || 'metadata'
|
||||||
|
|
||||||
const k = topK ? parseFloat(topK) : 4
|
const k = topK ? parseFloat(topK) : 4
|
||||||
|
|
||||||
@@ -383,7 +407,9 @@ class Qdrant_VectorStores implements INode {
|
|||||||
|
|
||||||
const dbConfig: QdrantLibArgs = {
|
const dbConfig: QdrantLibArgs = {
|
||||||
client,
|
client,
|
||||||
collectionName
|
collectionName,
|
||||||
|
contentPayloadKey,
|
||||||
|
metadataPayloadKey
|
||||||
}
|
}
|
||||||
|
|
||||||
const retrieverConfig: RetrieverConfig = {
|
const retrieverConfig: RetrieverConfig = {
|
||||||
|
|||||||
Reference in New Issue
Block a user