FlowiseAI/Flowise · error · Error

${e}

Error message

${e}

What it means

Generic catch-all in the Pinecone node's add path wrapping either the record-manager-based upsert or `PineconeStore.fromDocuments`. Any exception is re-thrown as `new Error(e)`, flattening the original Pinecone/LangChain error into a string and dropping its stack.

Source

Thrown at packages/components/nodes/vectorstores/Pinecone/Pinecone.ts:185

                    await recordManager.createSchema()
                    const res = await index({
                        docsSource: finalDocs,
                        recordManager,
                        vectorStore,
                        options: {
                            cleanup: recordManager?.cleanup,
                            sourceIdKey: recordManager?.sourceIdKey ?? 'source',
                            vectorStoreName: pineconeNamespace
                        }
                    })

                    return res
                } else {
                    await PineconeStore.fromDocuments(finalDocs, embeddings, obj)
                    return { numAdded: finalDocs.length, addedDocs: finalDocs }
                }
            } catch (e) {
                throw new Error(e)
            }
        },
        async delete(nodeData: INodeData, ids: string[], options: ICommonObject): Promise<void> {
            const _index = nodeData.inputs?.pineconeIndex as string
            const pineconeNamespace = nodeData.inputs?.pineconeNamespace as string
            const embeddings = nodeData.inputs?.embeddings as Embeddings
            const pineconeTextKey = nodeData.inputs?.pineconeTextKey as string
            const recordManager = nodeData.inputs?.recordManager

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

            const client = new Pinecone({ apiKey: pineconeApiKey })

            const pineconeIndex = client.Index(_index)

            const obj: PineconeStoreParams = {
                pineconeIndex,

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Inspect the flattened message for the Pinecone SDK reason (auth, dimension, quota).
  2. Verify `pineconeApiKey`, index name, environment/region, and namespace.
  3. Confirm embedding dimension equals the Pinecone index dimension.
  4. For 429s, add backoff/retry or reduce batch size.
  5. Re-wrap preserving the original error (see fix).

Example fix

// before
} catch (e) {
    throw new Error(e)
}
// after — keep cause + stack
} catch (e) {
    throw e instanceof Error ? e : new Error(String(e))
}
Defensive patterns

Strategy: try-catch

Validate before calling

// preflight: validate Pinecone config + dimension
if (!pineconeApiKey) throw new Error('pineconeApiKey is required')
const dim = (await embeddings.embedQuery('test')).length
if (expectedIndexDimension && dim !== expectedIndexDimension) {
  throw new Error(`Embedding dim ${dim} != index dim ${expectedIndexDimension}`)
}

Type guard

function isPineconeRateLimit(e: unknown): boolean {
  return typeof e === 'object' && e !== null && (e as any).status === 429
}

Try / catch

try {
  await PineconeStore.fromDocuments(finalDocs, embeddings, obj)
} catch (e) {
  if (isPineconeRateLimit(e)) { /* backoff + retry */ }
  throw e instanceof Error ? e : new Error(String(e))
}

Prevention

When it happens

Trigger: Pinecone API key invalid or environment/index misconfigured; namespace does not exist; vector dimension mismatch with the index; rate limiting (429) from Pinecone; record-manager key operations failing; embedding model error.

Common situations: Rotated API key; switched from pod to serverless (or vice versa) without updating config; embedding dimension changed; exceeded Pinecone pod quota; network egress blocked.

Related errors


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