FlowiseAI/Flowise · error · Error

${e}

Error message

${e}

What it means

In Qdrant's `add` path, `QdrantVectorStore.fromDocuments` is awaited inside a try/catch that re-wraps the caught value as `new Error(e)`. This stringifies whatever was thrown (an Error becomes its .message, a string stays a string, an object becomes '[object Object]'), discarding the original stack trace and `cause`. The real failure originates inside the LangChain Qdrant integration or the Qdrant server.

Source

Thrown at packages/components/nodes/vectorstores/Qdrant/Qdrant.ts:333

                            vectorStoreName: collectionName
                        }
                    })

                    return res
                } else {
                    if (_batchSize) {
                        const batchSize = parseInt(_batchSize, 10)
                        for (let i = 0; i < finalDocs.length; i += batchSize) {
                            const batch = finalDocs.slice(i, i + batchSize)
                            await QdrantVectorStore.fromDocuments(batch, embeddings, dbConfig)
                        }
                    } else {
                        await QdrantVectorStore.fromDocuments(finalDocs, embeddings, dbConfig)
                    }
                    return { numAdded: finalDocs.length, addedDocs: finalDocs }
                }
            } catch (e) {
                throw new Error(e)
            }
        },
        async delete(nodeData: INodeData, ids: string[], options: ICommonObject): Promise<void> {
            const qdrantServerUrl = nodeData.inputs?.qdrantServerUrl as string
            const collectionName = nodeData.inputs?.qdrantCollection as string
            const embeddings = nodeData.inputs?.embeddings as Embeddings
            const qdrantSimilarity = nodeData.inputs?.qdrantSimilarity
            const qdrantVectorDimension = nodeData.inputs?.qdrantVectorDimension
            const recordManager = nodeData.inputs?.recordManager

            const credentialData = await getCredentialData(nodeData.credential ?? '', options)
            const qdrantApiKey = getCredentialParam('qdrantApiKey', credentialData, nodeData)

            const port = Qdrant_VectorStores.determinePortByUrl(qdrantServerUrl)

            const client = new QdrantClient({
                url: qdrantServerUrl,
                apiKey: qdrantApiKey,

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Verify `qdrantServerUrl` is reachable and the credential `qdrantApiKey` is valid for cloud clusters.
  2. Confirm the collection's configured vector dimension equals the embedding model's output dimension.
  3. Check that `qdrantCollection` exists (or that auto-create is enabled) and `qdrantSimilarity` matches the index.
  4. Parse `batchSize` to an integer before the loop; ignore non-numeric values.
  5. When debugging, log the original error (the wrapped message is lossy) to recover the underlying cause.

Example fix

// before
catch (e) { throw new Error(e) }

// after (preserve cause)
catch (e) { throw new Error(`Qdrant addDocuments failed: ${e instanceof Error ? e.message : String(e)}`, { cause: e }) }
Defensive patterns

Strategy: try-catch

Validate before calling

function validateQdrantAddInputs(inputs: any) {
  if (!inputs?.qdrantServerUrl) throw new Error('qdrantServerUrl is required')
  if (!inputs?.embeddings) throw new Error('embeddings is required')
  const dim = Number(inputs?.qdrantVectorDimension)
  if (!Number.isFinite(dim) || dim <= 0) throw new Error('qdrantVectorDimension must be a positive number')
  if (inputs?._batchSize != null && !/^\d+$/.test(String(inputs._batchSize))) throw new Error('batchSize must be an integer string')
}

Type guard

null

Try / catch

try { await QdrantVectorStore.fromDocuments(batch, embeddings, dbConfig) }
catch (e) { throw new Error(`Qdrant ingest failed: ${e instanceof Error ? e.message : String(e)}`, { cause: e }) }

Prevention

When it happens

Trigger: Qdrant server URL wrong/unreachable; invalid or missing `qdrantApiKey`; collection vector dimension does not match the embedding model output; `qdrantCollection` does not exist and cannot be auto-created; `batchSize` not parseable as int; TLS/DNS failure during `fromDocuments`.

Common situations: Embedding model swapped (e.g. 1536 -> 768 dims) without recreating the Qdrant collection; local Qdrant not running; cloud Qdrant URL typo; API key expired; network egress blocked from the worker.

Related errors


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/abe2ffa59a4fc5ea. Report an issue: GitHub.