@n8n/n8n-nodes-langchain 2.22.2 → 2.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/known/nodes.json +8 -0
- package/dist/node-definitions/.nodes-hash +1 -1
- package/dist/node-definitions/index.ts +8 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v1.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v11.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v12.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v13.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v14.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v15.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v16.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v17.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v18.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v19.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v2.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v21.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v22.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v3.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/agent/v31.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v1/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v1/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v1/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v1/resource_video/operation_image_to_video.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v1/resource_video/operation_text_to_video.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v11/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v11/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v11/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v11/resource_video/operation_image_to_video.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v11/resource_video/operation_text_to_video.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/anthropic/v1/resource_document/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/anthropic/v1/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/anthropic/v1/resource_file/operation_get.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/anthropic/v1/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/anthropic/v1/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/anthropic/v1/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/anthropic/v1/resource_prompt/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/anthropic/v1/resource_prompt/operation_improve.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/anthropic/v1/resource_prompt/operation_templatize.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/anthropic/v1/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainLlm/v1.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainLlm/v11.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainLlm/v12.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainLlm/v13.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainLlm/v14.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainLlm/v15.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainLlm/v16.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainLlm/v17.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainLlm/v18.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainLlm/v19.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainSummarization/v2.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chainSummarization/v21.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chat/v1.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chat/v11.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chat/v12.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chat/v13.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v1.ts +2 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v11.ts +2 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v12.ts +3 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v13.ts +3 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v14.ts +3 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsAwsBedrock/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsAzureOpenAi/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsCohere/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsGoogleGemini/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsGoogleVertex/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsHuggingFaceInference/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsLemonade/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsMistralCloud/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsOllama/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsOpenAi/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsOpenAi/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsOpenAi/v12.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsOracleDb/index.ts +12 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsOracleDb/v1.schema.js +24 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/embeddingsOracleDb/v1.ts +30 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_audio/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_document/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_file_search/operation_create_store.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_file_search/operation_delete_store.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_file_search/operation_list_stores.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_file_search/operation_upload_to_store.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_image/operation_edit.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_video/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_video/operation_download.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v1/resource_video/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_audio/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_document/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_file_search/operation_create_store.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_file_search/operation_delete_store.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_file_search/operation_list_stores.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_file_search/operation_upload_to_store.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_image/operation_edit.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_video/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_video/operation_download.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v11/resource_video/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_audio/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_document/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_file_search/operation_create_store.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_file_search/operation_delete_store.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_file_search/operation_list_stores.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_file_search/operation_upload_to_store.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_image/operation_edit.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_video/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_video/operation_download.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/googleGemini/v12/resource_video/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatAlibabaCloud/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatAnthropic/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatAnthropic/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatAnthropic/v12.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatAnthropic/v13.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatAnthropic/v14.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatAnthropic/v15.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatAwsBedrock/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatAwsBedrock/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatAzureOpenAi/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatCohere/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatDeepSeek/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatGoogleGemini/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatGoogleGemini/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatGoogleVertex/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatGroq/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatLemonade/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatMinimax/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatMistralCloud/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatMoonshot/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatMoonshot/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatNvidia/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatOllama/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatOpenAi/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatOpenAi/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatOpenAi/v12.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatOpenAi/v13.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatOpenRouter/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatVercelAiGateway/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmChatXAiGrok/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmCohere/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmLemonade/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmOllama/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/lmOpenHuggingFaceInference/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpClient/index.ts +3 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpClient/v11.schema.js +31 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpClient/v11.ts +78 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpClientTool/index.ts +3 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpClientTool/v1.ts +1 -2
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpClientTool/v11.ts +1 -2
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpClientTool/v12.ts +1 -2
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpClientTool/v13.schema.js +30 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpClientTool/v13.ts +70 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpTrigger/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpTrigger/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/mcpTrigger/v2.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryBufferWindow/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryBufferWindow/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryBufferWindow/v12.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryBufferWindow/v13.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryBufferWindow/v14.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryMongoDbChat/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryMongoDbChat/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryPostgresChat/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryPostgresChat/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryPostgresChat/v12.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryPostgresChat/v13.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryPostgresChat/v14.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryRedisChat/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryRedisChat/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryRedisChat/v12.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryRedisChat/v13.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryRedisChat/v14.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryRedisChat/v15.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryRedisChat/v16.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryXata/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryXata/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryXata/v12.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryXata/v13.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryXata/v14.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/memoryXata/v15.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/microsoftAgent365Trigger/v1.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/microsoftAgent365Trigger/v11.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/minimax/v1/resource_audio/operation_text_to_speech.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/minimax/v1/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/minimax/v1/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/minimax/v1/resource_video/operation_image_to_video.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/minimax/v1/resource_video/operation_text_to_video.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/moonshot/v1/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/moonshot/v1/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/ollama/v1/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/ollama/v1/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_assistant/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_assistant/operation_delete_assistant.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_assistant/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_assistant/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_assistant/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v1/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_assistant/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_assistant/operation_delete_assistant.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_assistant/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_assistant/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_assistant/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v11/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_assistant/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_assistant/operation_delete_assistant.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_assistant/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_assistant/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_assistant/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v12/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_assistant/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_assistant/operation_delete_assistant.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_assistant/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_assistant/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_assistant/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v13/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_assistant/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_assistant/operation_delete_assistant.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_assistant/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_assistant/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_assistant/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v14/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_assistant/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_assistant/operation_delete_assistant.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_assistant/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_assistant/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_assistant/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v15/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_assistant/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_assistant/operation_delete_assistant.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_assistant/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_assistant/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_assistant/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v16/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_assistant/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_assistant/operation_delete_assistant.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_assistant/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_assistant/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_assistant/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v17/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_assistant/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_assistant/operation_delete_assistant.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_assistant/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_assistant/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_assistant/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v18/resource_text/operation_message.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_conversation/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_conversation/operation_get.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_conversation/operation_remove.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_conversation/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_image/operation_edit.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_text/operation_response.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v2/resource_video/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_conversation/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_conversation/operation_get.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_conversation/operation_remove.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_conversation/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_image/operation_edit.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_text/operation_response.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v21/resource_video/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_conversation/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_conversation/operation_get.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_conversation/operation_remove.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_conversation/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_image/operation_edit.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_text/operation_response.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v22/resource_video/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_audio/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_audio/operation_transcribe.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_audio/operation_translate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_conversation/operation_create.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_conversation/operation_get.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_conversation/operation_remove.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_conversation/operation_update.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_file/operation_delete_file.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_file/operation_list.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_file/operation_upload.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_image/operation_analyze.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_image/operation_edit.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_image/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_text/operation_classify.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_text/operation_response.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/openAi/v23/resource_video/operation_generate.ts +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/outputParserAutofixing/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/outputParserItemList/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/rerankerCohere/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/retrieverContextualCompression/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/retrieverMultiQuery/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/retrieverVectorStore/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/retrieverWorkflow/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/retrieverWorkflow/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/textSplitterCharacterTextSplitter/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/textSplitterRecursiveCharacterTextSplitter/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/textSplitterTokenSplitter/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolCalculator/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolCode/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolCode/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolCode/v12.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolCode/v13.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolSearXng/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolThink/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolThink/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolVectorStore/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolVectorStore/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolWikipedia/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolWolframAlpha/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolWorkflow/v1.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolWorkflow/v11.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolWorkflow/v12.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolWorkflow/v13.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolWorkflow/v2.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolWorkflow/v21.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/toolWorkflow/v22.ts +0 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/index.ts +18 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v1/index.schema.js +26 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v1/index.ts +21 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v1/mode_insert.schema.js +29 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v1/mode_insert.ts +56 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v1/mode_load.schema.js +35 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v1/mode_load.ts +98 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v1/mode_retrieve.schema.js +32 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v1/mode_retrieve.ts +89 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v1/mode_retrieve_as_tool.schema.js +36 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v1/mode_retrieve_as_tool.ts +112 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v11/index.schema.js +26 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v11/index.ts +21 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v11/mode_insert.schema.js +30 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v11/mode_insert.ts +61 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v11/mode_load.schema.js +35 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v11/mode_load.ts +98 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v11/mode_retrieve.schema.js +32 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v11/mode_retrieve.ts +89 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v11/mode_retrieve_as_tool.schema.js +36 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v11/mode_retrieve_as_tool.ts +112 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v12/index.schema.js +26 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v12/index.ts +21 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v12/mode_insert.schema.js +30 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v12/mode_insert.ts +61 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v12/mode_load.schema.js +35 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v12/mode_load.ts +98 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v12/mode_retrieve.schema.js +32 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v12/mode_retrieve.ts +89 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v12/mode_retrieve_as_tool.schema.js +36 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v12/mode_retrieve_as_tool.ts +112 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v13/index.schema.js +26 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v13/index.ts +21 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v13/mode_insert.schema.js +30 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v13/mode_insert.ts +61 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v13/mode_load.schema.js +35 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v13/mode_load.ts +98 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v13/mode_retrieve.schema.js +32 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v13/mode_retrieve.ts +89 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v13/mode_retrieve_as_tool.schema.js +35 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/vectorStoreOracleDBVector/v13/mode_retrieve_as_tool.ts +108 -0
- package/dist/nodes/document_loaders/DocumentBinaryInputLoader/DocumentBinaryInputLoader.node.d.ts +0 -1
- package/dist/nodes/document_loaders/DocumentBinaryInputLoader/DocumentBinaryInputLoader.node.js +0 -1
- package/dist/nodes/document_loaders/DocumentBinaryInputLoader/DocumentBinaryInputLoader.node.js.map +1 -1
- package/dist/nodes/document_loaders/DocumentDefaultDataLoader/DocumentDefaultDataLoader.node.d.ts +0 -1
- package/dist/nodes/document_loaders/DocumentDefaultDataLoader/DocumentDefaultDataLoader.node.js +0 -1
- package/dist/nodes/document_loaders/DocumentDefaultDataLoader/DocumentDefaultDataLoader.node.js.map +1 -1
- package/dist/nodes/embeddings/EmbeddingsOracleDB/EmbeddingsOracleDb.node.d.ts +18 -0
- package/dist/nodes/embeddings/EmbeddingsOracleDB/EmbeddingsOracleDb.node.js +125 -0
- package/dist/nodes/embeddings/EmbeddingsOracleDB/EmbeddingsOracleDb.node.js.map +1 -0
- package/dist/nodes/embeddings/EmbeddingsOracleDB/listModels.d.ts +2 -0
- package/dist/nodes/embeddings/EmbeddingsOracleDB/listModels.js +30 -0
- package/dist/nodes/embeddings/EmbeddingsOracleDB/listModels.js.map +1 -0
- package/dist/nodes/mcp/McpClient/McpClient.node.js +9 -1
- package/dist/nodes/mcp/McpClient/McpClient.node.js.map +1 -1
- package/dist/nodes/mcp/McpClientTool/McpClientTool.node.js +3 -2
- package/dist/nodes/mcp/McpClientTool/McpClientTool.node.js.map +1 -1
- package/dist/nodes/mcp/shared/runtime.js +4 -0
- package/dist/nodes/mcp/shared/runtime.js.map +1 -1
- package/dist/nodes/retrievers/RetrieverWorkflow/RetrieverWorkflow.node.js +1 -0
- package/dist/nodes/retrievers/RetrieverWorkflow/RetrieverWorkflow.node.js.map +1 -1
- package/dist/nodes/shared/icons/oracle.svg +4 -0
- package/dist/nodes/tools/ToolWorkflow/v1/ToolWorkflowV1.node.js +1 -0
- package/dist/nodes/tools/ToolWorkflow/v1/ToolWorkflowV1.node.js.map +1 -1
- package/dist/nodes/tools/ToolWorkflow/v2/utils/WorkflowToolService.js +1 -0
- package/dist/nodes/tools/ToolWorkflow/v2/utils/WorkflowToolService.js.map +1 -1
- package/dist/nodes/trigger/ChatTrigger/ChatTrigger.node.js +25 -0
- package/dist/nodes/trigger/ChatTrigger/ChatTrigger.node.js.map +1 -1
- package/dist/nodes/vector_store/VectorStoreOracleDB/VectorStoreOracleDB.node.d.ts +20 -0
- package/dist/nodes/vector_store/VectorStoreOracleDB/VectorStoreOracleDB.node.js +182 -0
- package/dist/nodes/vector_store/VectorStoreOracleDB/VectorStoreOracleDB.node.js.map +1 -0
- package/dist/nodes/vector_store/VectorStoreWeaviate/VectorStoreWeaviate.node.js +3 -3
- package/dist/nodes/vector_store/VectorStoreWeaviate/VectorStoreWeaviate.node.js.map +1 -1
- package/dist/typecheck.tsbuildinfo +1 -1
- package/dist/types/nodes.json +6 -4
- package/package.json +14 -12
package/dist/types/nodes.json
CHANGED
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
{"displayName":"Embeddings OpenAI","name":"embeddingsOpenAi","credentials":[{"name":"openAiApi","required":true}],"group":["transform"],"version":[1,1.1,1.2],"description":"Use Embeddings OpenAI","defaults":{"name":"Embeddings OpenAI"},"codex":{"categories":["AI"],"subcategories":{"AI":["Embeddings"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsopenai/"}]}},"inputs":[],"outputs":["ai_embedding"],"outputNames":["Embeddings"],"requestDefaults":{"ignoreHttpStatusErrors":true,"baseURL":"={{ $parameter.options?.baseURL?.split(\"/\").slice(0,-1).join(\"/\") || $credentials.url?.split(\"/\").slice(0,-1).join(\"/\") || \"https://api.openai.com\" }}"},"properties":[{"displayName":"This node must be connected to a vector store. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_vectorStore'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"Model","name":"model","type":"options","description":"The model which will generate the embeddings. <a href=\"https://platform.openai.com/docs/models/overview\">Learn more</a>.","typeOptions":{"loadOptions":{"routing":{"request":{"method":"GET","url":"={{ $parameter.options?.baseURL?.split(\"/\").slice(-1).pop() || $credentials?.url?.split(\"/\").slice(-1).pop() || \"v1\" }}/models"},"output":{"postReceive":[{"type":"rootProperty","properties":{"property":"data"}},{"type":"filter","properties":{"pass":"={{\n\t\t\t\t\t\t\t\t\t($parameter.options?.baseURL && !$parameter.options?.baseURL?.startsWith('https://api.openai.com/')) ||\n\t\t\t\t\t\t\t\t\t($credentials?.url && !$credentials.url.startsWith('https://api.openai.com/')) ||\n\t\t\t\t\t\t\t\t\t$responseItem.id.includes('embed')\n\t\t\t\t\t\t\t\t}}"}},{"type":"setKeyValue","properties":{"name":"={{$responseItem.id}}","value":"={{$responseItem.id}}"}},{"type":"sort","properties":{"key":"name"}}]}}}},"routing":{"send":{"type":"body","property":"model"}},"default":"text-embedding-ada-002","displayOptions":{"show":{"@version":[1]}}},{"displayName":"Model","name":"model","type":"options","description":"The model which will generate the embeddings. <a href=\"https://platform.openai.com/docs/models/overview\">Learn more</a>.","typeOptions":{"loadOptions":{"routing":{"request":{"method":"GET","url":"={{ $parameter.options?.baseURL?.split(\"/\").slice(-1).pop() || $credentials?.url?.split(\"/\").slice(-1).pop() || \"v1\" }}/models"},"output":{"postReceive":[{"type":"rootProperty","properties":{"property":"data"}},{"type":"filter","properties":{"pass":"={{\n\t\t\t\t\t\t\t\t\t($parameter.options?.baseURL && !$parameter.options?.baseURL?.startsWith('https://api.openai.com/')) ||\n\t\t\t\t\t\t\t\t\t($credentials?.url && !$credentials.url.startsWith('https://api.openai.com/')) ||\n\t\t\t\t\t\t\t\t\t$responseItem.id.includes('embed')\n\t\t\t\t\t\t\t\t}}"}},{"type":"setKeyValue","properties":{"name":"={{$responseItem.id}}","value":"={{$responseItem.id}}"}},{"type":"sort","properties":{"key":"name"}}]}}}},"routing":{"send":{"type":"body","property":"model"}},"default":"text-embedding-3-small","displayOptions":{"hide":{"@version":[1]}}},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Dimensions","name":"dimensions","default":1536,"description":"The number of dimensions the resulting output embeddings should have. Only supported in text-embedding-3 and later models.","type":"options","options":[{"name":"256","value":256},{"name":"512","value":512},{"name":"1024","value":1024},{"name":"1536","value":1536},{"name":"3072","value":3072}]},{"displayName":"Base URL","name":"baseURL","default":"https://api.openai.com/v1","description":"Override the default base URL for the API","type":"string","displayOptions":{"hide":{"@version":[{"_cnd":{"gte":1.2}}]}}},{"displayName":"Batch Size","name":"batchSize","default":512,"typeOptions":{"maxValue":2048},"description":"Maximum number of documents to send in each request","type":"number"},{"displayName":"Strip New Lines","name":"stripNewLines","default":true,"description":"Whether to strip new lines from the input text","type":"boolean"},{"displayName":"Timeout","name":"timeout","default":-1,"description":"Maximum amount of time a request is allowed to take in seconds. Set to -1 for no timeout.","type":"number"},{"displayName":"Encoding Format","name":"encodingFormat","type":"options","description":"The format to return the embeddings in","default":"float","options":[{"name":"Float","value":"float"},{"name":"Base64","value":"base64"}]}]}],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/embeddings/EmbeddingsOpenAI/openAiLight.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/embeddings/EmbeddingsOpenAI/openAiLight.dark.svg"}},
|
|
37
37
|
{"displayName":"Embeddings Lemonade","name":"embeddingsLemonade","group":["transform"],"version":1,"description":"Use Lemonade Embeddings","defaults":{"name":"Embeddings Lemonade"},"credentials":[{"name":"lemonadeApi","required":true}],"requestDefaults":{"ignoreHttpStatusErrors":true,"baseURL":"={{ $credentials.baseUrl.replace(new RegExp(\"/$\"), \"\") }}"},"codex":{"categories":["AI"],"subcategories":{"AI":["Embeddings"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingslemonade/"}]}},"inputs":[],"outputs":["ai_embedding"],"outputNames":["Embeddings"],"properties":[{"displayName":"This node must be connected to a vector store. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_vectorStore'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"Model","name":"model","type":"options","default":"","description":"The model which will generate the completion. Models are loaded and managed through the Lemonade server.","typeOptions":{"loadOptions":{"routing":{"request":{"method":"GET","url":"/models"},"output":{"postReceive":[{"type":"rootProperty","properties":{"property":"data"}},{"type":"setKeyValue","properties":{"name":"={{$responseItem.id}}","value":"={{$responseItem.id}}"}},{"type":"sort","properties":{"key":"name"}}]}}}},"routing":{"send":{"type":"body","property":"model"}},"required":true}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/embeddings/EmbeddingsLemonade/lemonade.svg"},
|
|
38
38
|
{"displayName":"Embeddings Ollama","name":"embeddingsOllama","group":["transform"],"version":1,"description":"Use Ollama Embeddings","defaults":{"name":"Embeddings Ollama"},"credentials":[{"name":"ollamaApi","required":true}],"requestDefaults":{"ignoreHttpStatusErrors":true,"baseURL":"={{ $credentials.baseUrl.replace(new RegExp(\"/$\"), \"\") }}"},"codex":{"categories":["AI"],"subcategories":{"AI":["Embeddings"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsollama/"}]}},"inputs":[],"outputs":["ai_embedding"],"outputNames":["Embeddings"],"properties":[{"displayName":"This node must be connected to a vector store. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_vectorStore'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"Model","name":"model","type":"options","default":"llama3.2","description":"The model which will generate the completion. To download models, visit <a href=\"https://ollama.ai/library\">Ollama Models Library</a>.","typeOptions":{"loadOptions":{"routing":{"request":{"method":"GET","url":"/api/tags"},"output":{"postReceive":[{"type":"rootProperty","properties":{"property":"models"}},{"type":"setKeyValue","properties":{"name":"={{$responseItem.name}}","value":"={{$responseItem.name}}"}},{"type":"sort","properties":{"key":"name"}}]}}}},"routing":{"send":{"type":"body","property":"model"}},"required":true}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/embeddings/EmbeddingsOllama/ollama.svg"},
|
|
39
|
+
{"displayName":"Embeddings Oracle Database","name":"embeddingsOracleDb","group":["transform"],"version":1,"description":"Use ONNX Embeddings","defaults":{"name":"Embeddings ONNX"},"credentials":[{"name":"oracleDBApi","required":true}],"codex":{"categories":["AI"],"subcategories":{"AI":["Embeddings"]},"resources":{"primaryDocumentation":[{"url":"https://docs.oracle.com/en/database/oracle/oracle-database/26/vecse/import-onnx-models-oracle-ai-database-end-end-example.html"}]}},"inputs":[],"outputs":["ai_embedding"],"outputNames":["Embeddings"],"properties":[{"displayName":"This node must be connected to a vector store. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_vectorStore'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"Model","name":"model","type":"resourceLocator","default":{"mode":"list","value":"ALL_MINILM_L12_V2"},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","placeholder":"Select a model...","typeOptions":{"searchListMethod":"searchModels","searchable":true}},{"displayName":"ID","name":"id","type":"string","placeholder":"ALL_MINILM_L12_V2"}],"description":"The model. Choose from the list, or specify an ID."}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/shared/icons/oracle.svg"},
|
|
39
40
|
{"displayName":"Alibaba Cloud Chat Model","name":"lmChatAlibabaCloud","group":["transform"],"version":[1],"description":"For advanced usage with an AI chain","defaults":{"name":"Alibaba Cloud Chat Model"},"codex":{"categories":["AI"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatalibabacloud/"}]},"alias":["qwen","dashscope","alibaba","model studio"]},"inputs":[],"outputs":["ai_languageModel"],"outputNames":["Model"],"credentials":[{"name":"alibabaCloudApi","required":true}],"requestDefaults":{"ignoreHttpStatusErrors":true,"baseURL":"={{ $credentials?.url + \"/compatible-mode/v1\" }}"},"properties":[{"displayName":"This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"If using JSON response format, you must include word \"json\" in the prompt in your chain or agent.","name":"notice","type":"notice","default":"","displayOptions":{"show":{"/options.responseFormat":["json_object"]}}},{"displayName":"Model","name":"model","type":"options","description":"The model which will generate the completion. <a href=\"https://www.alibabacloud.com/help/en/model-studio/getting-started/models\">Learn more</a>.","typeOptions":{"loadOptions":{"routing":{"request":{"method":"GET","url":"/models"},"output":{"postReceive":[{"type":"rootProperty","properties":{"property":"data"}},{"type":"setKeyValue","properties":{"name":"={{$responseItem.id}}","value":"={{$responseItem.id}}"}},{"type":"sort","properties":{"key":"name"}}]}}}},"routing":{"send":{"type":"body","property":"model"}},"default":"qwen-plus","builderHint":{"propertyHint":"Default to the latest Qwen flagship (qwen3.6-max-preview or qwen3.6-plus). Use qwen-plus for cost-efficient builds. Avoid qwen-turbo, Qwen 3.5 and earlier, and older dated snapshots."}},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Frequency Penalty","name":"frequencyPenalty","default":0,"typeOptions":{"maxValue":2,"minValue":-2,"numberPrecision":1},"description":"Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim","type":"number"},{"displayName":"Maximum Number of Tokens","name":"maxTokens","default":-1,"description":"The maximum number of tokens to generate in the completion. The limit depends on the selected model.","type":"number"},{"displayName":"Response Format","name":"responseFormat","default":"text","type":"options","options":[{"name":"Text","value":"text","description":"Regular text response"},{"name":"JSON","value":"json_object","description":"Enables JSON mode, which should guarantee the message the model generates is valid JSON"}]},{"displayName":"Presence Penalty","name":"presencePenalty","default":0,"typeOptions":{"maxValue":2,"minValue":-2,"numberPrecision":1},"description":"Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics","type":"number"},{"displayName":"Sampling Temperature","name":"temperature","default":0.7,"typeOptions":{"maxValue":2,"minValue":0,"numberPrecision":1},"description":"Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.","type":"number"},{"displayName":"Timeout","name":"timeout","default":360000,"description":"Maximum amount of time a request is allowed to take in milliseconds","type":"number"},{"displayName":"Max Retries","name":"maxRetries","default":2,"description":"Maximum number of retries to attempt","type":"number"},{"displayName":"Top P","name":"topP","default":1,"typeOptions":{"maxValue":1,"minValue":0,"numberPrecision":1},"description":"Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.","type":"number"}]}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/llms/LmChatAlibabaCloud/alibaba.svg"},
|
|
40
41
|
{"displayName":"Anthropic Chat Model","name":"lmChatAnthropic","group":["transform"],"version":[1,1.1,1.2,1.3,1.4,1.5],"defaultVersion":1.5,"description":"Language Model Anthropic","defaults":{"name":"Anthropic Chat Model"},"codex":{"categories":["AI"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatanthropic/"}]},"alias":["claude","sonnet","opus"]},"inputs":[],"outputs":["ai_languageModel"],"outputNames":["Model"],"credentials":[{"name":"anthropicApi","required":true}],"properties":[{"displayName":"This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"Model","name":"model","type":"options","options":[{"name":"Claude 3.5 Sonnet(20241022)","value":"claude-3-5-sonnet-20241022"},{"name":"Claude 3 Opus(20240229)","value":"claude-3-opus-20240229"},{"name":"Claude 3.5 Sonnet(20240620)","value":"claude-3-5-sonnet-20240620"},{"name":"Claude 3 Sonnet(20240229)","value":"claude-3-sonnet-20240229"},{"name":"Claude 3.5 Haiku(20241022)","value":"claude-3-5-haiku-20241022"},{"name":"Claude 3 Haiku(20240307)","value":"claude-3-haiku-20240307"},{"name":"LEGACY: Claude 2","value":"claude-2"},{"name":"LEGACY: Claude 2.1","value":"claude-2.1"},{"name":"LEGACY: Claude Instant 1.2","value":"claude-instant-1.2"},{"name":"LEGACY: Claude Instant 1","value":"claude-instant-1"}],"description":"The model which will generate the completion. <a href=\"https://docs.anthropic.com/claude/docs/models-overview\">Learn more</a>.","default":"claude-2","builderHint":{"propertyHint":"Default to claude-sonnet-4-6 (latest Sonnet); use claude-opus-4-7 when the user needs the most capable model. Never use Claude Sonnet 4.5, Claude 3.x, Claude 2, or LEGACY options — those are superseded and are not valid choices. When extended thinking is needed on Opus 4.7+, set Thinking Mode to Adaptive and choose an Effort level. The legacy Manual thinking mode is rejected by Opus 4.7."},"displayOptions":{"show":{"@version":[1]}}},{"displayName":"Model","name":"model","type":"options","options":[{"name":"Claude 3.5 Sonnet(20241022)","value":"claude-3-5-sonnet-20241022"},{"name":"Claude 3 Opus(20240229)","value":"claude-3-opus-20240229"},{"name":"Claude 3.5 Sonnet(20240620)","value":"claude-3-5-sonnet-20240620"},{"name":"Claude 3 Sonnet(20240229)","value":"claude-3-sonnet-20240229"},{"name":"Claude 3.5 Haiku(20241022)","value":"claude-3-5-haiku-20241022"},{"name":"Claude 3 Haiku(20240307)","value":"claude-3-haiku-20240307"},{"name":"LEGACY: Claude 2","value":"claude-2"},{"name":"LEGACY: Claude 2.1","value":"claude-2.1"},{"name":"LEGACY: Claude Instant 1.2","value":"claude-instant-1.2"},{"name":"LEGACY: Claude Instant 1","value":"claude-instant-1"}],"description":"The model which will generate the completion. <a href=\"https://docs.anthropic.com/claude/docs/models-overview\">Learn more</a>.","default":"claude-3-sonnet-20240229","builderHint":{"propertyHint":"Default to claude-sonnet-4-6 (latest Sonnet); use claude-opus-4-7 when the user needs the most capable model. Never use Claude Sonnet 4.5, Claude 3.x, Claude 2, or LEGACY options — those are superseded and are not valid choices. When extended thinking is needed on Opus 4.7+, set Thinking Mode to Adaptive and choose an Effort level. The legacy Manual thinking mode is rejected by Opus 4.7."},"displayOptions":{"show":{"@version":[1.1]}}},{"displayName":"Model","name":"model","type":"options","options":[{"name":"Claude 3.5 Sonnet(20241022)","value":"claude-3-5-sonnet-20241022"},{"name":"Claude 3 Opus(20240229)","value":"claude-3-opus-20240229"},{"name":"Claude 3.5 Sonnet(20240620)","value":"claude-3-5-sonnet-20240620"},{"name":"Claude 3 Sonnet(20240229)","value":"claude-3-sonnet-20240229"},{"name":"Claude 3.5 Haiku(20241022)","value":"claude-3-5-haiku-20241022"},{"name":"Claude 3 Haiku(20240307)","value":"claude-3-haiku-20240307"}],"description":"The model which will generate the completion. <a href=\"https://docs.anthropic.com/claude/docs/models-overview\">Learn more</a>.","default":"claude-3-5-sonnet-20240620","builderHint":{"propertyHint":"Default to claude-sonnet-4-6 (latest Sonnet); use claude-opus-4-7 when the user needs the most capable model. Never use Claude Sonnet 4.5, Claude 3.x, Claude 2, or LEGACY options — those are superseded and are not valid choices. When extended thinking is needed on Opus 4.7+, set Thinking Mode to Adaptive and choose an Effort level. The legacy Manual thinking mode is rejected by Opus 4.7."},"displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}]}}},{"displayName":"Model","name":"model","type":"resourceLocator","default":{"mode":"list","value":"claude-sonnet-4-5-20250929","cachedResultName":"Claude Sonnet 4.5"},"builderHint":{"propertyHint":"Default to claude-sonnet-4-6 (latest Sonnet); use claude-opus-4-7 when the user needs the most capable model. Never use Claude Sonnet 4.5, Claude 3.x, Claude 2, or LEGACY options — those are superseded and are not valid choices. When extended thinking is needed on Opus 4.7+, set Thinking Mode to Adaptive and choose an Effort level. The legacy Manual thinking mode is rejected by Opus 4.7."},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","placeholder":"Select a model...","typeOptions":{"searchListMethod":"searchModels","searchable":true}},{"displayName":"ID","name":"id","type":"string","placeholder":"Claude Sonnet"}],"description":"The model. Choose from the list, or specify an ID. <a href=\"https://docs.anthropic.com/claude/docs/models-overview\">Learn more</a>.","displayOptions":{"show":{"@version":[1.3]}}},{"displayName":"Model","name":"model","type":"resourceLocator","default":{"mode":"list","value":"claude-sonnet-4-6","cachedResultName":"Claude Sonnet 4.6"},"builderHint":{"propertyHint":"Default to claude-sonnet-4-6 (latest Sonnet); use claude-opus-4-7 when the user needs the most capable model. Never use Claude Sonnet 4.5, Claude 3.x, Claude 2, or LEGACY options — those are superseded and are not valid choices. When extended thinking is needed on Opus 4.7+, set Thinking Mode to Adaptive and choose an Effort level. The legacy Manual thinking mode is rejected by Opus 4.7."},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","placeholder":"Select a model...","typeOptions":{"searchListMethod":"searchModels","searchable":true}},{"displayName":"ID","name":"id","type":"string","placeholder":"Claude Sonnet"}],"description":"The model. Choose from the list, or specify an ID. <a href=\"https://docs.anthropic.com/claude/docs/models-overview\">Learn more</a>.","displayOptions":{"show":{"@version":[1.4]}}},{"displayName":"Model","name":"model","type":"resourceLocator","default":{"mode":"list","value":"claude-sonnet-4-6","cachedResultName":"Claude Sonnet 4.6"},"builderHint":{"propertyHint":"Default to claude-sonnet-4-6 (latest Sonnet); use claude-opus-4-7 when the user needs the most capable model. Never use Claude Sonnet 4.5, Claude 3.x, Claude 2, or LEGACY options — those are superseded and are not valid choices. When extended thinking is needed on Opus 4.7+, set Thinking Mode to Adaptive and choose an Effort level. The legacy Manual thinking mode is rejected by Opus 4.7."},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","placeholder":"Select a model...","typeOptions":{"searchListMethod":"searchModels","searchable":true}},{"displayName":"ID","name":"id","type":"string","placeholder":"Claude Sonnet"}],"description":"The model. Choose from the list, or specify an ID. <a href=\"https://docs.anthropic.com/claude/docs/models-overview\">Learn more</a>.","displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.5}}]}}},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Maximum Number of Tokens","name":"maxTokensToSample","default":4096,"description":"The maximum number of tokens to generate in the completion","type":"number"},{"displayName":"Sampling Temperature","name":"temperature","default":0.7,"typeOptions":{"maxValue":1,"minValue":0,"numberPrecision":1},"description":"Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.","type":"number","displayOptions":{"hide":{"thinking":[true],"thinkingMode":["adaptive","manual"]}}},{"displayName":"Top K","name":"topK","default":-1,"typeOptions":{"maxValue":1,"minValue":-1,"numberPrecision":1},"description":"Used to remove \"long tail\" low probability responses. Defaults to -1, which disables it.","type":"number","displayOptions":{"hide":{"thinking":[true],"thinkingMode":["adaptive","manual"]}}},{"displayName":"Top P","name":"topP","default":1,"typeOptions":{"maxValue":1,"minValue":0,"numberPrecision":1},"description":"Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.","type":"number","displayOptions":{"hide":{"thinking":[true],"thinkingMode":["adaptive","manual"]}}},{"displayName":"Enable Thinking","name":"thinking","type":"boolean","default":false,"description":"Whether to enable thinking mode for the model","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.4}}]}}},{"displayName":"Thinking Budget (Tokens)","name":"thinkingBudget","type":"number","default":1024,"description":"The maximum number of tokens to use for thinking","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.4}}],"thinking":[true]}}},{"displayName":"Thinking Mode","name":"thinkingMode","type":"options","default":"disabled","description":"How extended thinking should be configured for the model","options":[{"name":"Disabled","value":"disabled","description":"No extended thinking"},{"name":"Adaptive (Recommended)","value":"adaptive","description":"Claude decides how much to think; control with Effort"},{"name":"Manual (Deprecated)","value":"manual","description":"Legacy fixed-budget mode; rejected by Opus 4.7+"}],"displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.5}}]}}},{"displayName":"Effort","name":"effort","type":"options","default":"medium","description":"Effort level for adaptive thinking","options":[{"name":"Low","value":"low"},{"name":"Medium","value":"medium"},{"name":"High","value":"high"},{"name":"X-High","value":"xhigh"},{"name":"Max","value":"max"}],"displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.5}}],"thinkingMode":["adaptive"],"/model.value":[{"_cnd":{"includes":"opus"}}]}}},{"displayName":"Effort","name":"effort","type":"options","default":"medium","description":"Effort level for adaptive thinking","options":[{"name":"Low","value":"low"},{"name":"Medium","value":"medium"},{"name":"High","value":"high"}],"displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.5}}],"thinkingMode":["adaptive"],"/model.value":[{"_cnd":{"regex":"^(?!.*opus).*"}}]}}},{"displayName":"Thinking Budget (Tokens)","name":"thinkingBudget","type":"number","default":1024,"description":"Maximum tokens used for thinking. Manual mode is rejected by Opus 4.7+.","displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.5}}],"thinkingMode":["manual"]}}}]}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/llms/LMChatAnthropic/anthropic.svg"},
|
|
41
42
|
{"displayName":"Azure OpenAI Chat Model","name":"lmChatAzureOpenAi","group":["transform"],"version":1,"description":"For advanced usage with an AI chain","defaults":{"name":"Azure OpenAI Chat Model"},"codex":{"categories":["AI"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatazureopenai/"}]}},"inputs":[],"outputs":["ai_languageModel"],"outputNames":["Model"],"credentials":[{"name":"azureOpenAiApi","required":true,"displayOptions":{"show":{"authentication":["azureOpenAiApi"]}}},{"name":"azureEntraCognitiveServicesOAuth2Api","required":true,"displayOptions":{"show":{"authentication":["azureEntraCognitiveServicesOAuth2Api"]}}}],"properties":[{"displayName":"Authentication","name":"authentication","type":"options","default":"azureOpenAiApi","options":[{"name":"API Key","value":"azureOpenAiApi"},{"name":"Azure Entra ID (OAuth2)","value":"azureEntraCognitiveServicesOAuth2Api"}]},{"displayName":"This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"If using JSON response format, you must include word \"json\" in the prompt in your chain or agent. Also, make sure to select latest models released post November 2023.","name":"notice","type":"notice","default":"","displayOptions":{"show":{"/options.responseFormat":["json_object"]}}},{"displayName":"Model (Deployment) Name","name":"model","type":"string","description":"The name of the model(deployment) to use (e.g., gpt-4, gpt-35-turbo)","required":true,"default":""},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Frequency Penalty","name":"frequencyPenalty","default":0,"typeOptions":{"maxValue":2,"minValue":-2,"numberPrecision":1},"description":"Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim","type":"number"},{"displayName":"Maximum Number of Tokens","name":"maxTokens","default":-1,"description":"The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768). Use -1 for default.","type":"number","typeOptions":{"maxValue":128000}},{"displayName":"Response Format","name":"responseFormat","default":"text","type":"options","options":[{"name":"Text","value":"text","description":"Regular text response"},{"name":"JSON","value":"json_object","description":"Enables JSON mode, which should guarantee the message the model generates is valid JSON"}]},{"displayName":"Presence Penalty","name":"presencePenalty","default":0,"typeOptions":{"maxValue":2,"minValue":-2,"numberPrecision":1},"description":"Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics","type":"number"},{"displayName":"Sampling Temperature","name":"temperature","default":0.7,"typeOptions":{"maxValue":2,"minValue":0,"numberPrecision":1},"description":"Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.","type":"number"},{"displayName":"Timeout (Ms)","name":"timeout","default":60000,"description":"Maximum amount of time a request is allowed to take in milliseconds","type":"number"},{"displayName":"Max Retries","name":"maxRetries","default":2,"description":"Maximum number of retries to attempt on failure","type":"number"},{"displayName":"Top P","name":"topP","default":1,"typeOptions":{"maxValue":1,"minValue":0,"numberPrecision":1},"description":"Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.","type":"number"}]}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/llms/LmChatAzureOpenAi/azure.svg"},
|
|
@@ -60,8 +61,8 @@
|
|
|
60
61
|
{"displayName":"Lemonade Model","name":"lmLemonade","group":["transform"],"version":1,"description":"Language Model Lemonade","defaults":{"name":"Lemonade Model"},"codex":{"categories":["AI"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Text Completion Models"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmlemonade/"}]}},"inputs":[],"outputs":["ai_languageModel"],"outputNames":["Model"],"credentials":[{"name":"lemonadeApi","required":true}],"requestDefaults":{"ignoreHttpStatusErrors":true,"baseURL":"={{ $credentials.baseUrl.replace(new RegExp(\"/$\"), \"\") }}"},"properties":[{"displayName":"This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"Model","name":"model","type":"options","default":"","description":"The model which will generate the completion. Models are loaded and managed through the Lemonade server.","typeOptions":{"loadOptions":{"routing":{"request":{"method":"GET","url":"/models"},"output":{"postReceive":[{"type":"rootProperty","properties":{"property":"data"}},{"type":"setKeyValue","properties":{"name":"={{$responseItem.id}}","value":"={{$responseItem.id}}"}},{"type":"sort","properties":{"key":"name"}}]}}}},"routing":{"send":{"type":"body","property":"model"}},"required":true},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Sampling Temperature","name":"temperature","default":0.7,"typeOptions":{"maxValue":2,"minValue":0,"numberPrecision":1},"description":"Controls the randomness of the generated text. Lower values make the output more focused and deterministic, while higher values make it more diverse and random.","type":"number"},{"displayName":"Top P","name":"topP","default":1,"typeOptions":{"maxValue":1,"minValue":0,"numberPrecision":1},"description":"Chooses from the smallest possible set of tokens whose cumulative probability exceeds the probability top_p. Helps generate more human-like text by reducing repetitions.","type":"number"},{"displayName":"Frequency Penalty","name":"frequencyPenalty","type":"number","default":0,"typeOptions":{"minValue":-2,"maxValue":2,"numberPrecision":1},"description":"Adjusts the penalty for tokens that have already appeared in the generated text. Positive values discourage repetition, negative values encourage it."},{"displayName":"Presence Penalty","name":"presencePenalty","type":"number","default":0,"typeOptions":{"minValue":-2,"maxValue":2,"numberPrecision":1},"description":"Adjusts the penalty for tokens based on their presence in the generated text so far. Positive values penalize tokens that have already appeared, encouraging diversity."},{"displayName":"Max Tokens to Generate","name":"maxTokens","type":"number","default":-1,"description":"The maximum number of tokens to generate. Set to -1 for no limit. Be cautious when setting this to a large value, as it can lead to very long outputs."},{"displayName":"Stop Sequences","name":"stop","type":"string","default":"","description":"Comma-separated list of sequences where the model will stop generating text"}]}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/llms/LMLemonade/lemonade.svg"},
|
|
61
62
|
{"displayName":"Ollama Model","name":"lmOllama","group":["transform"],"version":1,"description":"Language Model Ollama","defaults":{"name":"Ollama Model"},"codex":{"categories":["AI"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Text Completion Models"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmollama/"}]}},"inputs":[],"outputs":["ai_languageModel"],"outputNames":["Model"],"credentials":[{"name":"ollamaApi","required":true}],"requestDefaults":{"ignoreHttpStatusErrors":true,"baseURL":"={{ $credentials.baseUrl.replace(new RegExp(\"/$\"), \"\") }}"},"properties":[{"displayName":"This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"Model","name":"model","type":"options","default":"llama3.2","description":"The model which will generate the completion. To download models, visit <a href=\"https://ollama.ai/library\">Ollama Models Library</a>.","typeOptions":{"loadOptions":{"routing":{"request":{"method":"GET","url":"/api/tags"},"output":{"postReceive":[{"type":"rootProperty","properties":{"property":"models"}},{"type":"setKeyValue","properties":{"name":"={{$responseItem.name}}","value":"={{$responseItem.name}}"}},{"type":"sort","properties":{"key":"name"}}]}}}},"routing":{"send":{"type":"body","property":"model"}},"required":true},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Enable Thinking","name":"think","type":"boolean","default":true,"description":"Whether to enable (default) thinking mode for supported models. When enabled, the model's thinking process is separated from the output. When disabled, the model outputs content directly (only for supported models)."},{"displayName":"Sampling Temperature","name":"temperature","default":0.7,"typeOptions":{"maxValue":1,"minValue":0,"numberPrecision":1},"description":"Controls the randomness of the generated text. Lower values make the output more focused and deterministic, while higher values make it more diverse and random.","type":"number"},{"displayName":"Top K","name":"topK","default":-1,"typeOptions":{"maxValue":100,"minValue":-1,"numberPrecision":1},"description":"Limits the number of highest probability vocabulary tokens to consider at each step. A higher value increases diversity but may reduce coherence. Set to -1 to disable.","type":"number"},{"displayName":"Top P","name":"topP","default":1,"typeOptions":{"maxValue":1,"minValue":0,"numberPrecision":1},"description":"Chooses from the smallest possible set of tokens whose cumulative probability exceeds the probability top_p. Helps generate more human-like text by reducing repetitions.","type":"number"},{"displayName":"Frequency Penalty","name":"frequencyPenalty","type":"number","default":0,"typeOptions":{"minValue":0},"description":"Adjusts the penalty for tokens that have already appeared in the generated text. Higher values discourage repetition."},{"displayName":"Keep Alive","name":"keepAlive","type":"string","default":"5m","description":"Specifies the duration to keep the loaded model in memory after use. Useful for frequently used models. Format: 1h30m (1 hour 30 minutes)."},{"displayName":"Low VRAM Mode","name":"lowVram","type":"boolean","default":false,"description":"Whether to Activate low VRAM mode, which reduces memory usage at the cost of slower generation speed. Useful for GPUs with limited memory."},{"displayName":"Main GPU ID","name":"mainGpu","type":"number","default":0,"description":"Specifies the ID of the GPU to use for the main computation. Only change this if you have multiple GPUs."},{"displayName":"Context Batch Size","name":"numBatch","type":"number","default":512,"description":"Sets the batch size for prompt processing. Larger batch sizes may improve generation speed but increase memory usage."},{"displayName":"Context Length","name":"numCtx","type":"number","default":2048,"description":"The maximum number of tokens to use as context for generating the next token. Smaller values reduce memory usage, while larger values provide more context to the model."},{"displayName":"Number of GPUs","name":"numGpu","type":"number","default":-1,"description":"Specifies the number of GPUs to use for parallel processing. Set to -1 for auto-detection."},{"displayName":"Max Tokens to Generate","name":"numPredict","type":"number","default":-1,"description":"The maximum number of tokens to generate. Set to -1 for no limit. Be cautious when setting this to a large value, as it can lead to very long outputs."},{"displayName":"Number of CPU Threads","name":"numThread","type":"number","default":0,"description":"Specifies the number of CPU threads to use for processing. Set to 0 for auto-detection."},{"displayName":"Penalize Newlines","name":"penalizeNewline","type":"boolean","default":true,"description":"Whether the model will be less likely to generate newline characters, encouraging longer continuous sequences of text"},{"displayName":"Presence Penalty","name":"presencePenalty","type":"number","default":0,"description":"Adjusts the penalty for tokens based on their presence in the generated text so far. Positive values penalize tokens that have already appeared, encouraging diversity."},{"displayName":"Repetition Penalty","name":"repeatPenalty","type":"number","default":1,"description":"Adjusts the penalty factor for repeated tokens. Higher values more strongly discourage repetition. Set to 1.0 to disable repetition penalty."},{"displayName":"Use Memory Locking","name":"useMLock","type":"boolean","default":false,"description":"Whether to lock the model in memory to prevent swapping. This can improve performance but requires sufficient available memory."},{"displayName":"Use Memory Mapping","name":"useMMap","type":"boolean","default":true,"description":"Whether to use memory mapping for loading the model. This can reduce memory usage but may impact performance. Recommended to keep enabled."},{"displayName":"Load Vocabulary Only","name":"vocabOnly","type":"boolean","default":false,"description":"Whether to only load the model vocabulary without the weights. Useful for quickly testing tokenization."},{"displayName":"Output Format","name":"format","type":"options","options":[{"name":"Default","value":"default"},{"name":"JSON","value":"json"}],"default":"default","description":"Specifies the format of the API response"}]}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/llms/LMOllama/ollama.svg"},
|
|
62
63
|
{"displayName":"Hugging Face Inference Model","name":"lmOpenHuggingFaceInference","group":["transform"],"version":1,"description":"Language Model HuggingFaceInference","defaults":{"name":"Hugging Face Inference Model"},"codex":{"categories":["AI"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Text Completion Models"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmopenhuggingfaceinference/"}]}},"inputs":[],"outputs":["ai_languageModel"],"outputNames":["Model"],"credentials":[{"name":"huggingFaceApi","required":true}],"properties":[{"displayName":"This node must be connected to an AI chain. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"Model","name":"model","type":"string","default":"mistralai/Mistral-Nemo-Base-2407"},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Custom Inference Endpoint","name":"endpointUrl","default":"","description":"Custom endpoint URL","type":"string"},{"displayName":"Frequency Penalty","name":"frequencyPenalty","default":0,"typeOptions":{"maxValue":2,"minValue":-2,"numberPrecision":1},"description":"Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim","type":"number"},{"displayName":"Maximum Number of Tokens","name":"maxTokens","default":128,"description":"The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).","type":"number","typeOptions":{"maxValue":32768}},{"displayName":"Presence Penalty","name":"presencePenalty","default":0,"typeOptions":{"maxValue":2,"minValue":-2,"numberPrecision":1},"description":"Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics","type":"number"},{"displayName":"Sampling Temperature","name":"temperature","default":1,"typeOptions":{"maxValue":1,"minValue":0,"numberPrecision":1},"description":"Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.","type":"number"},{"displayName":"Top K","name":"topK","default":1,"typeOptions":{"maxValue":1,"minValue":0,"numberPrecision":1},"description":"Controls the top tokens to consider within the sample operation to create new text","type":"number"},{"displayName":"Top P","name":"topP","default":1,"typeOptions":{"maxValue":1,"minValue":0,"numberPrecision":1},"description":"Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.","type":"number"}]}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/llms/LMOpenHuggingFaceInference/huggingface.svg"},
|
|
63
|
-
{"displayName":"MCP Client","description":"Standalone MCP Client","name":"mcpClient","group":["transform"],"version":1,"defaults":{"name":"MCP Client"},"credentials":[{"name":"httpBearerAuth","required":true,"displayOptions":{"show":{"authentication":["bearerAuth"]}}},{"name":"httpHeaderAuth","required":true,"displayOptions":{"show":{"authentication":["headerAuth"]}}},{"name":"mcpOAuth2Api","required":true,"displayOptions":{"show":{"authentication":["mcpOAuth2Api"]}}},{"name":"httpMultipleHeadersAuth","required":true,"displayOptions":{"show":{"authentication":["multipleHeadersAuth"]}}}],"inputs":["main"],"outputs":["main"],"properties":[{"displayName":"Server Transport","name":"serverTransport","type":"options","options":[{"name":"HTTP Streamable","value":"httpStreamable"},{"name":"Server Sent Events (Deprecated)","value":"sse"}],"default":"httpStreamable","description":"The transport used by your endpoint"},{"displayName":"MCP Endpoint URL","name":"endpointUrl","type":"string","default":"","placeholder":"e.g. https://my-mcp-server.ai/mcp","required":true,"description":"The URL of the MCP server to connect to"},{"displayName":"Authentication","name":"authentication","type":"options","options":[{"name":"Bearer Auth","value":"bearerAuth"},{"name":"Header Auth","value":"headerAuth"},{"name":"MCP OAuth2","value":"mcpOAuth2Api"},{"name":"Multiple Headers Auth","value":"multipleHeadersAuth"},{"name":"None","value":"none"}],"default":"none","description":"The way to authenticate with your endpoint"},{"displayName":"Credentials","name":"credentials","type":"credentials","default":"","displayOptions":{"show":{"authentication":["headerAuth","bearerAuth","mcpOAuth2Api","multipleHeadersAuth"]}}},{"displayName":"Tool","name":"tool","type":"resourceLocator","default":{"mode":"list","value":""},"required":true,"description":"The tool to use","modes":[{"displayName":"From List","name":"list","type":"list","typeOptions":{"searchListMethod":"getTools","searchable":true,"skipCredentialsCheckInRLC":true}},{"displayName":"ID","name":"id","type":"string"}]},{"displayName":"Input Mode","name":"inputMode","type":"options","default":"manual","noDataExpression":true,"options":[{"name":"Manual","value":"manual","description":"Manually specify the input data for each tool parameter"},{"name":"JSON","value":"json","description":"Specify the input data as a JSON object"}]},{"displayName":"Parameters","name":"parameters","type":"resourceMapper","default":{"mappingMode":"defineBelow","value":null},"noDataExpression":true,"required":true,"typeOptions":{"loadOptionsDependsOn":["tool.value"],"resourceMapper":{"resourceMapperMethod":"getToolParameters","hideNoDataError":true,"addAllFields":false,"supportAutoMap":false,"mode":"add","fieldWords":{"singular":"parameter","plural":"parameters"}}},"displayOptions":{"show":{"inputMode":["manual"]}}},{"displayName":"JSON","name":"jsonInput","type":"json","typeOptions":{"rows":5},"default":"{\n \"my_field_1\": \"value\",\n \"my_field_2\": 1\n}\n","validateType":"object","displayOptions":{"show":{"inputMode":["json"]}}},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Convert to Binary","name":"convertToBinary","type":"boolean","default":true,"description":"Whether to convert images and audio to binary data. If false, images and audio will be returned as base64 encoded strings."},{"displayName":"Timeout","name":"timeout","type":"number","typeOptions":{"minValue":1},"default":60000,"description":"Time in ms to wait for tool calls to finish"}]}],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/mcp/mcp.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/mcp/mcp.dark.svg"}},
|
|
64
|
-
{"displayName":"MCP Client Tool","name":"mcpClientTool","group":["output"],"version":[1,1.1,1.2],"description":"Connect
|
|
64
|
+
{"displayName":"MCP Client","description":"Standalone MCP Client","name":"mcpClient","group":["transform"],"version":[1,1.1],"defaultVersion":1.1,"defaults":{"name":"MCP Client"},"credentials":[{"name":"httpBearerAuth","required":true,"displayOptions":{"show":{"authentication":["bearerAuth"]}}},{"name":"httpHeaderAuth","required":true,"displayOptions":{"show":{"authentication":["headerAuth"]}}},{"name":"mcpOAuth2Api","required":true,"displayOptions":{"show":{"authentication":["mcpOAuth2Api"]}}},{"name":"httpMultipleHeadersAuth","required":true,"displayOptions":{"show":{"authentication":["multipleHeadersAuth"]}}}],"inputs":["main"],"outputs":["main"],"properties":[{"displayName":"Server Transport","name":"serverTransport","type":"options","options":[{"name":"HTTP Streamable","value":"httpStreamable"},{"name":"Server Sent Events (Deprecated)","value":"sse"}],"default":"httpStreamable","description":"The transport used by your endpoint"},{"displayName":"MCP Endpoint URL","name":"endpointUrl","type":"string","default":"","placeholder":"e.g. https://my-mcp-server.ai/mcp","required":true,"description":"The URL of the MCP server to connect to"},{"displayName":"Authentication","name":"authentication","type":"options","options":[{"name":"Bearer Auth","value":"bearerAuth"},{"name":"Header Auth","value":"headerAuth"},{"name":"MCP OAuth2","value":"mcpOAuth2Api"},{"name":"Multiple Headers Auth","value":"multipleHeadersAuth"},{"name":"None","value":"none"}],"default":"none","description":"The way to authenticate with your endpoint"},{"displayName":"Credentials","name":"credentials","type":"credentials","default":"","displayOptions":{"show":{"authentication":["headerAuth","bearerAuth","mcpOAuth2Api","multipleHeadersAuth"]}}},{"displayName":"Tool","name":"tool","type":"resourceLocator","default":{"mode":"list","value":""},"required":true,"description":"The tool to use","modes":[{"displayName":"From List","name":"list","type":"list","typeOptions":{"searchListMethod":"getTools","searchable":true,"skipCredentialsCheckInRLC":true}},{"displayName":"ID","name":"id","type":"string"}]},{"displayName":"Input Mode","name":"inputMode","type":"options","default":"manual","noDataExpression":true,"options":[{"name":"Manual","value":"manual","description":"Manually specify the input data for each tool parameter"},{"name":"JSON","value":"json","description":"Specify the input data as a JSON object"}]},{"displayName":"Parameters","name":"parameters","type":"resourceMapper","default":{"mappingMode":"defineBelow","value":null},"noDataExpression":true,"required":true,"typeOptions":{"loadOptionsDependsOn":["tool.value"],"resourceMapper":{"resourceMapperMethod":"getToolParameters","hideNoDataError":true,"addAllFields":false,"supportAutoMap":false,"mode":"add","fieldWords":{"singular":"parameter","plural":"parameters"}}},"displayOptions":{"show":{"inputMode":["manual"]}}},{"displayName":"JSON","name":"jsonInput","type":"json","typeOptions":{"rows":5},"default":"{\n \"my_field_1\": \"value\",\n \"my_field_2\": 1\n}\n","validateType":"object","displayOptions":{"show":{"inputMode":["json"]}}},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Convert to Binary","name":"convertToBinary","type":"boolean","default":true,"description":"Whether to convert images and audio to binary data. If false, images and audio will be returned as base64 encoded strings."},{"displayName":"Timeout","name":"timeout","type":"number","typeOptions":{"minValue":1},"default":60000,"description":"Time in ms to wait for tool calls to finish"}]}],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/mcp/mcp.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/mcp/mcp.dark.svg"}},
|
|
65
|
+
{"displayName":"MCP Client Tool","name":"mcpClientTool","group":["output"],"version":[1,1.1,1.2,1.3],"defaultVersion":1.3,"description":"Connect tools from an MCP Server","defaults":{"name":"MCP Client"},"codex":{"categories":["AI"],"subcategories":{"AI":["Model Context Protocol"]},"alias":["Model Context Protocol","MCP Client"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/"}]}},"inputs":[],"outputs":[{"type":"ai_tool","displayName":"Tools"}],"credentials":[{"name":"httpBearerAuth","required":true,"displayOptions":{"show":{"authentication":["bearerAuth"]}}},{"name":"httpHeaderAuth","required":true,"displayOptions":{"show":{"authentication":["headerAuth"]}}},{"name":"mcpOAuth2Api","required":true,"displayOptions":{"show":{"authentication":["mcpOAuth2Api"]}}},{"name":"httpMultipleHeadersAuth","required":true,"displayOptions":{"show":{"authentication":["multipleHeadersAuth"]}}}],"properties":[{"displayName":"This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"SSE Endpoint","name":"sseEndpoint","type":"string","description":"SSE Endpoint of your MCP server","placeholder":"e.g. https://my-mcp-server.ai/sse","default":"","required":true,"displayOptions":{"show":{"@version":[1]}}},{"displayName":"Endpoint","name":"endpointUrl","type":"string","description":"Endpoint of your MCP server","placeholder":"e.g. https://my-mcp-server.ai/mcp","default":"","required":true,"displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Server Transport","name":"serverTransport","type":"options","options":[{"name":"HTTP Streamable","value":"httpStreamable"},{"name":"Server Sent Events (Deprecated)","value":"sse"}],"default":"sse","description":"The transport used by your endpoint","displayOptions":{"show":{"@version":[1.1]}}},{"displayName":"Server Transport","name":"serverTransport","type":"options","options":[{"name":"HTTP Streamable","value":"httpStreamable"},{"name":"Server Sent Events (Deprecated)","value":"sse"}],"default":"httpStreamable","description":"The transport used by your endpoint","displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.2}}]}}},{"displayName":"Authentication","name":"authentication","type":"options","options":[{"name":"Bearer Auth","value":"bearerAuth"},{"name":"Header Auth","value":"headerAuth"},{"name":"None","value":"none"}],"default":"none","description":"The way to authenticate with your endpoint","displayOptions":{"show":{"@version":[{"_cnd":{"lt":1.2}}]}}},{"displayName":"Authentication","name":"authentication","type":"options","options":[{"name":"Bearer Auth","value":"bearerAuth"},{"name":"Header Auth","value":"headerAuth"},{"name":"MCP OAuth2","value":"mcpOAuth2Api"},{"name":"Multiple Headers Auth","value":"multipleHeadersAuth"},{"name":"None","value":"none"}],"default":"none","description":"The way to authenticate with your endpoint","displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.2}}]}}},{"displayName":"Credentials","name":"credentials","type":"credentials","default":"","displayOptions":{"show":{"authentication":["headerAuth","bearerAuth","mcpOAuth2Api","multipleHeadersAuth"]}}},{"displayName":"Tools to Include","name":"include","type":"options","description":"How to select the tools you want to be exposed to the AI Agent","default":"all","options":[{"name":"All","value":"all","description":"Also include all unchanged fields from the input"},{"name":"Selected","value":"selected","description":"Also include the tools listed in the parameter \"Tools to Include\""},{"name":"All Except","value":"except","description":"Exclude the tools listed in the parameter \"Tools to Exclude\""}]},{"displayName":"Tools to Include","name":"includeTools","type":"multiOptions","default":[],"description":"Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>","typeOptions":{"loadOptionsMethod":"getTools","loadOptionsDependsOn":["sseEndpoint"]},"displayOptions":{"show":{"include":["selected"]}}},{"displayName":"Tools to Exclude","name":"excludeTools","type":"multiOptions","default":[],"description":"Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>","typeOptions":{"loadOptionsMethod":"getTools"},"displayOptions":{"show":{"include":["except"]}}},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Timeout","name":"timeout","type":"number","typeOptions":{"minValue":1},"default":60000,"description":"Time in ms to wait for tool calls to finish"}]}],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/mcp/mcp.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/mcp/mcp.dark.svg"}},
|
|
65
66
|
{"displayName":"MCP Registry Client (internal)","name":"mcpRegistryClientTool","hidden":true,"group":["output"],"version":1,"description":"Runtime backing for MCP registry-derived nodes","defaults":{"name":"MCP Registry Client"},"codex":{"categories":["AI"],"subcategories":{"AI":["Model Context Protocol"]},"alias":["MCP","Model Context Protocol"]},"inputs":[],"outputs":[{"type":"ai_tool","displayName":"Tools"}],"credentials":[{"name":"mcpOAuth2Api","required":true}],"properties":[{"displayName":"Endpoint URL","name":"endpointUrl","type":"hidden","default":""},{"displayName":"Server Transport","name":"serverTransport","type":"hidden","default":"httpStreamable"},{"displayName":"Tools to Include","name":"include","type":"options","description":"How to select the tools you want to be exposed to the AI Agent","default":"all","options":[{"name":"All","value":"all","description":"Expose every tool from the MCP server"},{"name":"Selected","value":"selected","description":"Only expose the tools listed in \"Tools to Include\""},{"name":"All Except","value":"except","description":"Expose all tools except those listed in \"Tools to Exclude\""}]},{"displayName":"Tools to Include","name":"includeTools","type":"multiOptions","default":[],"description":"Tools from the MCP server to expose to the agent. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.","typeOptions":{"loadOptionsMethod":"getTools"},"displayOptions":{"show":{"include":["selected"]}}},{"displayName":"Tools to Exclude","name":"excludeTools","type":"multiOptions","default":[],"description":"Tools from the MCP server to hide from the agent. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.","typeOptions":{"loadOptionsMethod":"getTools"},"displayOptions":{"show":{"include":["except"]}}},{"displayName":"Options","name":"options","placeholder":"Add Option","description":"Additional options to add","type":"collection","default":{},"options":[{"displayName":"Timeout","name":"timeout","type":"number","typeOptions":{"minValue":1},"default":60000,"description":"Time in ms to wait for tool calls to finish"}]}]},
|
|
66
67
|
{"displayName":"MCP Server Trigger","name":"mcpTrigger","group":["trigger"],"version":[1,1.1,2],"description":"Expose n8n tools as an MCP Server endpoint","activationMessage":"You can now connect your MCP Clients to the URL, using SSE or Streamable HTTP transports.","defaults":{"name":"MCP Server Trigger"},"codex":{"categories":["AI","Core Nodes"],"subcategories":{"AI":["Root Nodes","Model Context Protocol"],"Core Nodes":["Other Trigger Nodes"]},"alias":["Model Context Protocol","MCP Server"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcptrigger/"}]}},"triggerPanel":{"header":"Listen for MCP events","executionsHelp":{"inactive":"This trigger has two modes: test and production.<br /><br /><b>Use test mode while you build your workflow</b>. Click the 'execute step' button, then make an MCP request to the test URL. The executions will show up in the editor.<br /><br /><b>Use production mode to run your workflow automatically</b>. Publish the workflow, then make requests to the production URL. These executions will show up in the <a data-key='executions'>executions list</a>, but not the editor.","active":"This trigger has two modes: test and production.<br /><br /><b>Use test mode while you build your workflow</b>. Click the 'execute step' button, then make an MCP request to the test URL. The executions will show up in the editor.<br /><br /><b>Use production mode to run your workflow automatically</b>. Since your workflow is activated, you can make requests to the production URL. These executions will show up in the <a data-key='executions'>executions list</a>, but not the editor."},"activationHint":"Once you've finished building your workflow, run it without having to click this button by using the production URL."},"inputs":[{"type":"ai_tool","displayName":"Tools"}],"outputs":[],"credentials":[{"name":"httpBearerAuth","required":true,"displayOptions":{"show":{"authentication":["bearerAuth"]}}},{"name":"httpHeaderAuth","required":true,"displayOptions":{"show":{"authentication":["headerAuth"]}}}],"properties":[{"displayName":"Authentication","name":"authentication","type":"options","options":[{"name":"None","value":"none"},{"name":"Bearer Auth","value":"bearerAuth"},{"name":"Header Auth","value":"headerAuth"}],"default":"none","description":"The way to authenticate","builderHint":{"propertyHint":"Default to 'none'. n8n exposes inbound trigger URLs publicly by design. Only select an authentication method when the user explicitly asks to authenticate inbound traffic."}},{"displayName":"Path","name":"path","type":"string","default":"","placeholder":"webhook","required":true,"description":"The base path for this MCP server"}],"webhooks":[{"name":"setup","httpMethod":"GET","responseMode":"onReceived","isFullPath":true,"path":"={{$parameter[\"path\"]}}{{parseFloat($nodeVersion)<2 ? '/sse' : ''}}","nodeType":"mcp","ndvHideMethod":true,"ndvHideUrl":false},{"name":"default","httpMethod":"POST","responseMode":"onReceived","isFullPath":true,"path":"={{$parameter[\"path\"]}}{{parseFloat($nodeVersion)<2 ? '/messages' : ''}}","nodeType":"mcp","ndvHideMethod":true,"ndvHideUrl":true},{"name":"default","httpMethod":"DELETE","responseMode":"onReceived","isFullPath":true,"path":"={{$parameter[\"path\"]}}","nodeType":"mcp","ndvHideMethod":true,"ndvHideUrl":true}],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/mcp/mcp.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/mcp/mcp.dark.svg"}},
|
|
67
68
|
{"displayName":"Simple Memory","name":"memoryBufferWindow","icon":"node:simple-memory","iconColor":"black","group":["transform"],"version":[1,1.1,1.2,1.3,1.4],"description":"Stores in n8n memory, so no credentials required","defaults":{"name":"Simple Memory"},"codex":{"categories":["AI"],"subcategories":{"AI":["Memory"],"Memory":["For beginners"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"}]}},"builderHint":{"searchHint":"Reuse with multiple agents in the same workflow by connecting to multiple agent nodes so agents have a shared context."},"inputs":[],"outputs":["ai_memory"],"outputNames":["Memory"],"properties":[{"displayName":"This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"This node stores memory locally in the n8n instance. It is not compatible with Queue Mode or Multi-Main setups, as memory will not be shared across workers. For production use with scaling, consider using an external memory store such as Redis, Postgres, or another persistent memory node.","name":"scalingNotice","type":"notice","default":""},{"displayName":"Session Key","name":"sessionKey","type":"string","default":"chat_history","description":"The key to use to store the memory in the workflow data","displayOptions":{"show":{"@version":[1]}}},{"displayName":"Session ID","name":"sessionKey","type":"string","default":"={{ $json.sessionId }}","description":"The key to use to store the memory","displayOptions":{"show":{"@version":[1.1]}}},{"displayName":"Session ID","name":"sessionIdType","type":"options","options":[{"name":"Connected Chat Trigger Node","value":"fromInput","description":"Looks for an input field called 'sessionId' that is coming from a directly connected Chat Trigger"},{"name":"Define below","value":"customKey","description":"Use an expression to reference data in previous nodes or enter static text"}],"default":"fromInput","builderHint":{"propertyHint":"Use 'Connected Chat Trigger Node' (fromInput) if there is a Chat Trigger node earlier in the workflow. Otherwise use 'Define below' (customKey)."},"displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.2}}]}}},{"displayName":"Session Key From Previous Node","name":"sessionKey","type":"string","default":"={{ $json.sessionId }}","disabledOptions":{"show":{"sessionIdType":["fromInput"]}},"displayOptions":{"show":{"sessionIdType":["fromInput"],"@version":[{"_cnd":{"gte":1.3}}]}}},{"displayName":"Session is automatically scoped only to this memory node. To share a session between different memory nodes, switch \"Session ID\" to \"Define below\" and use the same key in each node.","name":"scopedSessionHintNotice","type":"notice","default":"","displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.4}}],"sessionIdType":["fromInput"]}}},{"displayName":"Key","name":"sessionKey","type":"string","default":"","description":"The key to use to store session ID in the memory","displayOptions":{"show":{"sessionIdType":["customKey"]}}},{"displayName":"Context Window Length","name":"contextWindowLength","type":"number","default":5,"hint":"How many past interactions the model receives as context"}]},
|
|
@@ -96,7 +97,7 @@
|
|
|
96
97
|
{"displayName":"Call n8n Workflow Tool","name":"toolWorkflow","icon":"node:call-n8n-sub-workflow-tool","iconColor":"black","group":["transform"],"description":"Uses another n8n workflow as a tool. Allows packaging any n8n node(s) as a tool.","codex":{"categories":["AI"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow/"}]}},"defaultVersion":2.2,"defaults":{"name":"Call n8n Workflow Tool"},"version":[2,2.1,2.2],"inputs":[],"outputs":["ai_tool"],"outputNames":["Tool"],"properties":[{"displayName":"This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"See an example of a workflow to suggest meeting slots using AI <a href=\"/templates/1953\" target=\"_blank\">here</a>.","name":"noticeTemplateExample","type":"notice","default":""},{"displayName":"Name","name":"name","type":"string","default":"","placeholder":"e.g. My_Color_Tool","validateType":"string-alphanumeric","description":"The name of the function to be called, could contain letters, numbers, and underscores only","displayOptions":{"show":{"@version":[{"_cnd":{"lte":2.1}}]}}},{"displayName":"Description","name":"description","type":"string","default":"","placeholder":"Call this tool to get a random color. The input should be a string with comma separated names of colors to exclude.","typeOptions":{"rows":3}},{"displayName":"This tool will call the workflow you define below, and look in the last node for the response. The workflow needs to start with an Execute Workflow trigger","name":"executeNotice","type":"notice","default":""},{"displayName":"Source","name":"source","type":"options","options":[{"name":"Database","value":"database","description":"Load the workflow from the database by ID"},{"name":"Define Below","value":"parameter","description":"Pass the JSON code of a workflow"}],"default":"database","description":"Where to get the workflow to execute from"},{"displayName":"Workflow","name":"workflowId","type":"workflowSelector","displayOptions":{"show":{"source":["database"]}},"default":"","required":true},{"displayName":"Workflow Inputs","name":"workflowInputs","type":"resourceMapper","noDataExpression":true,"default":{"mappingMode":"defineBelow","value":null},"required":true,"typeOptions":{"loadOptionsDependsOn":["workflowId.value"],"resourceMapper":{"localResourceMapperMethod":"loadSubWorkflowInputs","valuesLabel":"Workflow Inputs","mode":"map","fieldWords":{"singular":"workflow input","plural":"workflow inputs"},"addAllFields":true,"multiKeyMatch":false,"supportAutoMap":false}},"displayOptions":{"show":{"source":["database"]},"hide":{"workflowId":[""]}}},{"displayName":"Workflow JSON","name":"workflowJson","type":"json","typeOptions":{"rows":10},"displayOptions":{"show":{"source":["parameter"]}},"default":"\n\n\n\n\n\n\n\n\n","required":true,"description":"The workflow JSON code to execute"}]},
|
|
97
98
|
{"displayName":"Call n8n Workflow Tool","name":"toolWorkflow","icon":"node:call-n8n-sub-workflow-tool","iconColor":"black","group":["transform"],"description":"Uses another n8n workflow as a tool. Allows packaging any n8n node(s) as a tool.","codex":{"categories":["AI"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow/"}]}},"defaultVersion":2.2,"version":[1,1.1,1.2,1.3],"defaults":{"name":"Call n8n Workflow Tool"},"inputs":[],"outputs":["ai_tool"],"outputNames":["Tool"],"properties":[{"displayName":"This node must be connected to an AI agent. <a data-action='openSelectiveNodeCreator' data-action-parameter-creatorview='AI'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"}},{"displayName":"See an example of a workflow to suggest meeting slots using AI <a href=\"/templates/1953\" target=\"_blank\">here</a>.","name":"noticeTemplateExample","type":"notice","default":""},{"displayName":"Name","name":"name","type":"string","default":"","placeholder":"My_Color_Tool","displayOptions":{"show":{"@version":[1]}}},{"displayName":"Name","name":"name","type":"string","default":"","placeholder":"e.g. My_Color_Tool","validateType":"string-alphanumeric","description":"The name of the function to be called, could contain letters, numbers, and underscores only","displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Description","name":"description","type":"string","default":"","placeholder":"Call this tool to get a random color. The input should be a string with comma separted names of colors to exclude.","typeOptions":{"rows":3}},{"displayName":"This tool will call the workflow you define below, and look in the last node for the response. The workflow needs to start with an Execute Workflow trigger","name":"executeNotice","type":"notice","default":""},{"displayName":"Source","name":"source","type":"options","options":[{"name":"Database","value":"database","description":"Load the workflow from the database by ID"},{"name":"Define Below","value":"parameter","description":"Pass the JSON code of a workflow"}],"default":"database","description":"Where to get the workflow to execute from"},{"displayName":"Workflow ID","name":"workflowId","type":"string","displayOptions":{"show":{"source":["database"],"@version":[{"_cnd":{"lte":1.1}}]}},"default":"","required":true,"description":"The workflow to execute","hint":"Can be found in the URL of the workflow"},{"displayName":"Workflow","name":"workflowId","type":"workflowSelector","displayOptions":{"show":{"source":["database"],"@version":[{"_cnd":{"gte":1.2}}]}},"default":"","required":true},{"displayName":"Workflow JSON","name":"workflowJson","type":"json","typeOptions":{"rows":10},"displayOptions":{"show":{"source":["parameter"]}},"default":"\n\n\n\n\n\n\n\n\n","required":true,"description":"The workflow JSON code to execute"},{"displayName":"Field to Return","name":"responsePropertyName","type":"string","default":"response","required":true,"hint":"The field in the last-executed node of the workflow that contains the response","description":"Where to find the data that this tool should return. n8n will look in the output of the last-executed node of the workflow for a field with this name, and return its value.","displayOptions":{"show":{"@version":[{"_cnd":{"lt":1.3}}]}}},{"displayName":"Extra Workflow Inputs","name":"fields","placeholder":"Add Value","type":"fixedCollection","description":"These will be output by the 'execute workflow' trigger of the workflow being called","typeOptions":{"multipleValues":true,"sortable":true},"default":{},"options":[{"name":"values","displayName":"Values","values":[{"displayName":"Name","name":"name","type":"string","default":"","placeholder":"e.g. fieldName","description":"Name of the field to set the value of. Supports dot-notation. Example: data.person[0].name.","requiresDataPath":"single"},{"displayName":"Type","name":"type","type":"options","description":"The field value type","options":[{"name":"String","value":"stringValue"},{"name":"Number","value":"numberValue"},{"name":"Boolean","value":"booleanValue"},{"name":"Array","value":"arrayValue"},{"name":"Object","value":"objectValue"}],"default":"stringValue"},{"displayName":"Value","name":"stringValue","type":"string","default":"","displayOptions":{"show":{"type":["stringValue"]}},"validateType":"string","ignoreValidationDuringExecution":true},{"displayName":"Value","name":"numberValue","type":"string","default":"","displayOptions":{"show":{"type":["numberValue"]}},"validateType":"number","ignoreValidationDuringExecution":true},{"displayName":"Value","name":"booleanValue","type":"options","default":"true","options":[{"name":"True","value":"true"},{"name":"False","value":"false"}],"displayOptions":{"show":{"type":["booleanValue"]}},"validateType":"boolean","ignoreValidationDuringExecution":true},{"displayName":"Value","name":"arrayValue","type":"string","default":"","placeholder":"e.g. [ arrayItem1, arrayItem2, arrayItem3 ]","displayOptions":{"show":{"type":["arrayValue"]}},"validateType":"array","ignoreValidationDuringExecution":true},{"displayName":"Value","name":"objectValue","type":"json","default":"={}","typeOptions":{"rows":2},"displayOptions":{"show":{"type":["objectValue"]}},"validateType":"object","ignoreValidationDuringExecution":true}]}]},{"displayName":"Specify Input Schema","name":"specifyInputSchema","type":"boolean","description":"Whether to specify the schema for the function. This would require the LLM to provide the input in the correct format and would validate it against the schema.","noDataExpression":true,"default":false},{"displayName":"Schema Type","name":"schemaType","type":"options","noDataExpression":true,"options":[{"name":"Generate From JSON Example","value":"fromJson","description":"Generate a schema from an example JSON object"},{"name":"Define using JSON Schema","value":"manual","description":"Define the JSON schema manually"}],"default":"fromJson","description":"How to specify the schema for the function","displayOptions":{"show":{"specifyInputSchema":[true]}}},{"displayName":"JSON Example","name":"jsonSchemaExample","type":"json","default":"{\n\t\"some_input\": \"some_value\"\n}","noDataExpression":true,"typeOptions":{"rows":10},"displayOptions":{"show":{"schemaType":["fromJson"]}},"description":"Example JSON object to use to generate the schema"},{"displayName":"Input Schema","name":"inputSchema","type":"json","default":"{\n\"type\": \"object\",\n\"properties\": {\n\t\"some_input\": {\n\t\t\"type\": \"string\",\n\t\t\"description\": \"Some input to the function\"\n\t\t}\n\t}\n}","noDataExpression":false,"typeOptions":{"rows":10},"displayOptions":{"show":{"schemaType":["manual"]}},"description":"Schema to use for the function","hint":"Use <a target=\"_blank\" href=\"https://json-schema.org/\">JSON Schema</a> format (<a target=\"_blank\" href=\"https://json-schema.org/learn/miscellaneous-examples.html\">examples</a>). $refs syntax is currently not supported."}]},
|
|
98
99
|
{"displayName":"Manual Chat Trigger","name":"manualChatTrigger","icon":"fa:comments","group":["trigger"],"version":[1,1.1],"description":"Runs the flow on new manual chat message","eventTriggerDescription":"","maxNodes":1,"hidden":true,"defaults":{"name":"When chat message received","color":"#909298"},"codex":{"categories":["Core Nodes"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"}]},"subcategories":{"Core Nodes":["Other Trigger Nodes"]}},"inputs":[],"outputs":["main"],"properties":[{"displayName":"This node is where a manual chat workflow execution starts. To make one, go back to the canvas and click ‘Chat’","name":"notice","type":"notice","default":""},{"displayName":"Chat and execute workflow","name":"openChat","type":"button","typeOptions":{"buttonConfig":{"action":"openChat"}},"default":""}]},
|
|
99
|
-
{"displayName":"Chat Trigger","name":"chatTrigger","icon":"node:chat-trigger","iconColor":"black","group":["trigger"],"version":[1,1.1,1.2,1.3,1.4],"defaultVersion":1.4,"description":"Runs the workflow when an n8n generated webchat is submitted","defaults":{"name":"When chat message received"},"codex":{"categories":["Core Nodes"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"}]}},"maxNodes":1,"inputs":"={{ (() => {\n\t\t\tif (!['hostedChat', 'webhook'].includes($parameter.mode)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tif ($parameter.options?.loadPreviousSession !== 'memory') {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tdisplayName: 'Memory',\n\t\t\t\t\tmaxConnections: 1,\n\t\t\t\t\ttype: 'ai_memory',\n\t\t\t\t\trequired: true,\n\t\t\t\t}\n\t\t\t];\n\t\t })() }}","outputs":["main"],"builderHint":{"inputs":{"ai_memory":{"required":true,"displayOptions":{"show":{"mode":["hostedChat","webhook"],"options.loadPreviousSession":["memory"]}}}}},"credentials":[{"name":"httpBasicAuth","required":true,"displayOptions":{"show":{"authentication":["basicAuth"]}}}],"webhooks":[{"name":"setup","httpMethod":"GET","responseMode":"onReceived","path":"chat","ndvHideUrl":true},{"name":"default","httpMethod":"POST","responseMode":"={{$parameter.options?.[\"responseMode\"] ?? ($parameter.availableInChat ? \"streaming\" : \"lastNode\") }}","path":"chat","ndvHideMethod":true,"ndvHideUrl":"={{ !$parameter.public }}"}],"eventTriggerDescription":"Waiting for you to submit the chat","activationMessage":"You can now make calls to your production chat URL.","triggerPanel":false,"properties":[{"displayName":"Make Chat Publicly Available","name":"public","type":"boolean","default":false,"description":"Whether the chat should be publicly available or only accessible through the manual chat interface"},{"displayName":"Mode","name":"mode","type":"options","options":[{"name":"Hosted Chat","value":"hostedChat","description":"Chat on a page served by n8n"},{"name":"Embedded Chat","value":"webhook","description":"Chat through a widget embedded in another page, or by calling a webhook"}],"default":"hostedChat","displayOptions":{"show":{"public":[true]}}},{"displayName":"Chat will be live at the URL above once this workflow is published. Live executions will show up in the ‘executions’ tab","name":"hostedChatNotice","type":"notice","displayOptions":{"show":{"mode":["hostedChat"],"public":[true]}},"default":""},{"displayName":"Follow the instructions <a href=\"https://www.npmjs.com/package/@n8n/chat\" target=\"_blank\">here</a> to embed chat in a webpage (or just call the webhook URL at the top of this section). Chat will be live once you publish this workflow","name":"embeddedChatNotice","type":"notice","displayOptions":{"show":{"mode":["webhook"],"public":[true]}},"default":""},{"displayName":"Authentication","name":"authentication","type":"options","displayOptions":{"show":{"public":[true]}},"options":[{"name":"Basic Auth","value":"basicAuth","description":"Simple username and password (the same one for all users)"},{"name":"n8n User Auth","value":"n8nUserAuth","description":"Require user to be logged in with their n8n account"},{"name":"None","value":"none"}],"default":"none","description":"The way to authenticate","builderHint":{"propertyHint":"Default to 'none'. n8n exposes inbound trigger URLs publicly by design. Only select an authentication method when the user explicitly asks to authenticate inbound traffic."}},{"displayName":"Initial Message(s)","name":"initialMessages","type":"string","displayOptions":{"show":{"mode":["hostedChat"],"public":[true]}},"typeOptions":{"rows":3},"default":"Hi there! 👋\nMy name is Nathan. How can I assist you today?","description":"Default messages shown at the start of the chat, one per line"},{"displayName":"Make Available in n8n Chat Hub","name":"availableInChat","type":"boolean","default":false,"noDataExpression":true,"description":"Whether to make the agent available in n8n Chat Hub for n8n instance users to chat with"},{"displayName":"Your Chat Trigger node is out of date. To update, delete this node and insert a new Chat Trigger node.","name":"availableInChatNotice","type":"notice","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"lt":1.2}}]}},"default":""},{"displayName":"Your n8n users will be able to use this agent in <a href=\"/home/chat/\" target=\"_blank\">Chat</a> once this workflow is published. Make sure to share this workflow with at least Project Chat User access to all users who should use it.","name":"availableInChatNotice","type":"notice","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"gte":1.2}}]}},"default":""},{"displayName":"Agent Icon","name":"agentIcon","type":"icon","default":{"type":"icon","value":"bot"},"noDataExpression":true,"description":"The icon of the agent on n8n Chat","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"gte":1.2}}]}}},{"displayName":"Agent Name","name":"agentName","type":"string","default":"","noDataExpression":true,"description":"The name of the agent on n8n Chat. Name of the workflow is used if left empty.","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"gte":1.2}}]}}},{"displayName":"Agent Description","name":"agentDescription","type":"string","typeOptions":{"rows":2},"default":"","noDataExpression":true,"description":"The description of the agent on n8n Chat","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"gte":1.2}}]}}},{"displayName":"Suggestions","name":"suggestedPrompts","type":"fixedCollection","typeOptions":{"multipleValues":true,"fixedCollection":{"layout":"inline"}},"default":{},"noDataExpression":true,"placeholder":"Add Prompt","description":"Suggested prompts shown to users in n8n Chat Hub to start a conversation with the agent","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"gte":1.2}}]}},"options":[{"name":"prompts","displayName":"Prompts","values":[{"displayName":"Icon","name":"icon","type":"icon","noDataExpression":true,"default":{"type":"icon","value":"comment"}},{"displayName":"Prompt Text","name":"text","type":"string","default":"","noDataExpression":true,"required":true}]}]},{"displayName":"Options","name":"options","type":"collection","displayOptions":{"show":{"public":[false],"@version":[1,1.1]}},"placeholder":"Add Field","default":{},"options":[{"displayName":"Allow File Uploads","name":"allowFileUploads","type":"boolean","default":false,"description":"Whether to allow file uploads in the chat"},{"displayName":"Allowed File Mime Types","name":"allowedFilesMimeTypes","type":"string","default":"*","placeholder":"e.g. image/*, text/*, application/pdf","description":"Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>."}]},{"displayName":"Options","name":"options","type":"collection","displayOptions":{"show":{"mode":["hostedChat","webhook"],"public":[true],"@version":[1,1.1]}},"placeholder":"Add Field","default":{},"options":[{"displayName":"Allowed Origins (CORS)","name":"allowedOrigins","type":"string","default":"*","description":"Comma-separated list of URLs allowed for cross-origin non-preflight requests. Use * (default) to allow all origins.","displayOptions":{"show":{"/mode":["hostedChat","webhook"]}}},{"displayName":"Allow File Uploads","name":"allowFileUploads","type":"boolean","default":false,"description":"Whether to allow file uploads in the chat","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Allowed File Mime Types","name":"allowedFilesMimeTypes","type":"string","default":"*","placeholder":"e.g. image/*, text/*, application/pdf","description":"Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>.","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Input Placeholder","name":"inputPlaceholder","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Type your question..","placeholder":"e.g. Type your message here","description":"Shown as placeholder text in the chat input field"},{"displayName":"Load Previous Session","name":"loadPreviousSession","type":"options","options":[{"name":"Off","value":"notSupported","description":"Loading messages of previous session is turned off"},{"name":"From Memory","value":"memory","description":"Load session messages from memory"},{"name":"Manually","value":"manually","description":"Manually return messages of session"}],"default":"notSupported","description":"If loading messages of a previous session should be enabled","builderHint":{"propertyHint":"This ONLY rehydrates the chat widget UI when the user reopens it — it does NOT give the Agent memory. The Agent gets memory from its own memory subnode regardless of this setting. Only set to 'memory' if the user wants the widget to restore visible history on reload; if so, you MUST also attach a memory subnode to this trigger (use the same memory node as the Agent so widget history matches what the Agent remembers). Otherwise leave as 'notSupported'."}},{"displayName":"Require Button Click to Start Chat","name":"showWelcomeScreen","type":"boolean","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":false,"description":"Whether to show the welcome screen at the start of the chat"},{"displayName":"Start Conversation Button Text","name":"getStarted","type":"string","displayOptions":{"show":{"showWelcomeScreen":[true],"/mode":["hostedChat"]}},"default":"New Conversation","placeholder":"e.g. New Conversation","description":"Shown as part of the welcome screen, in the middle of the chat window"},{"displayName":"Subtitle","name":"subtitle","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Start a chat. We're here to help you 24/7.","placeholder":"e.g. We're here for you","description":"Shown at the top of the chat, under the title"},{"displayName":"Title","name":"title","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Hi there! 👋","placeholder":"e.g. Welcome","description":"Shown at the top of the chat"},{"displayName":"Custom Chat Styling","name":"customCss","type":"string","typeOptions":{"rows":10,"editor":"cssEditor"},"displayOptions":{"show":{"/mode":["hostedChat"]}},"default":":root {\n /* Colors */\n --chat--color--primary: #e74266;\n --chat--color--primary-shade-50: #db4061;\n --chat--color--primary--shade-100: #cf3c5c;\n --chat--color--secondary: #20b69e;\n --chat--color-secondary-shade-50: #1ca08a;\n --chat--color-white: #fff;\n --chat--color-light: #f2f4f8;\n --chat--color-light-shade-50: #e6e9f1;\n --chat--color-light-shade-100: #c2c5cc;\n --chat--color-medium: #d2d4d9;\n --chat--color-dark: #101330;\n --chat--color-disabled: #d2d4d9;\n --chat--color-typing: #404040;\n\n /* Base Layout */\n --chat--spacing: 1rem;\n --chat--border-radius: 0.25rem;\n --chat--transition-duration: 0.15s;\n --chat--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;\n\n /* Window Dimensions */\n --chat--window--width: 400px;\n --chat--window--height: 600px;\n --chat--window--bottom: var(--chat--spacing);\n --chat--window--right: var(--chat--spacing);\n --chat--window--z-index: 9999;\n --chat--window--border: 1px solid var(--chat--color-light-shade-50);\n --chat--window--border-radius: var(--chat--border-radius);\n --chat--window--margin-bottom: var(--chat--spacing);\n\n /* Header Styles */\n --chat--header-height: auto;\n --chat--header--padding: var(--chat--spacing);\n --chat--header--background: var(--chat--color-dark);\n --chat--header--color: var(--chat--color-light);\n --chat--header--border-top: none;\n --chat--header--border-bottom: none;\n --chat--header--border-left: none;\n --chat--header--border-right: none;\n --chat--heading--font-size: 2em;\n --chat--subtitle--font-size: inherit;\n --chat--subtitle--line-height: 1.8;\n\n /* Message Styles */\n --chat--message--font-size: 1rem;\n --chat--message--padding: var(--chat--spacing);\n --chat--message--border-radius: var(--chat--border-radius);\n --chat--message-line-height: 1.5;\n --chat--message--margin-bottom: calc(var(--chat--spacing) * 1);\n --chat--message--bot--background: var(--chat--color-white);\n --chat--message--bot--color: var(--chat--color-dark);\n --chat--message--bot--border: none;\n --chat--message--user--background: var(--chat--color--secondary);\n --chat--message--user--color: var(--chat--color-white);\n --chat--message--user--border: none;\n --chat--message--pre--background: rgba(0, 0, 0, 0.05);\n --chat--messages-list--padding: var(--chat--spacing);\n\n /* Toggle Button */\n --chat--toggle--size: 64px;\n --chat--toggle--width: var(--chat--toggle--size);\n --chat--toggle--height: var(--chat--toggle--size);\n --chat--toggle--border-radius: 50%;\n --chat--toggle--background: var(--chat--color--primary);\n --chat--toggle--hover--background: var(--chat--color--primary-shade-50);\n --chat--toggle--active--background: var(--chat--color--primary--shade-100);\n --chat--toggle--color: var(--chat--color-white);\n\n /* Input Area */\n --chat--textarea--height: 50px;\n --chat--textarea--max-height: 30rem;\n --chat--input--font-size: inherit;\n --chat--input--border: 0;\n --chat--input--border-radius: 0;\n --chat--input--padding: 0.8rem;\n --chat--input--background: var(--chat--color-white);\n --chat--input--text-color: initial;\n --chat--input--line-height: 1.5;\n --chat--input--placeholder--font-size: var(--chat--input--font-size);\n --chat--input--border-active: 0;\n --chat--input--left--panel--width: 2rem;\n\n /* Button Styles */\n --chat--button--padding: calc(var(--chat--spacing) * 5 / 8) var(--chat--spacing);\n --chat--button--border-radius: var(--chat--border-radius);\n --chat--button--font-size: 1rem;\n --chat--button--line-height: 1;\n --chat--button--color--primary: var(--chat--color-light);\n --chat--button--background--primary: var(--chat--color--secondary);\n --chat--button--border--primary: none;\n --chat--button--color--primary--hover: var(--chat--color-light);\n --chat--button--background--primary--hover: var(--chat--color-secondary-shade-50);\n --chat--button--border--primary--hover: none;\n --chat--button--color--primary--disabled: var(--chat--color-light);\n --chat--button--background--primary--disabled: #81bbb1;\n --chat--button--border--primary--disabled: none;\n --chat--button--color--secondary: var(--chat--color-light);\n --chat--button--background--secondary: hsl(0, 0%, 58%);\n --chat--button--border--secondary: none;\n --chat--button--color--secondary--hover: var(--chat--color-light);\n --chat--button--background--secondary--hover: hsl(0, 0%, 51%);\n --chat--button--border--secondary--hover: none;\n --chat--button--color--secondary--disabled: var(--chat--color-light);\n --chat--button--background--secondary--disabled: hsl(0, 0%, 78%);\n --chat--button--border--secondary--disabled: none;\n --chat--close--button--color-hover: var(--chat--color--primary);\n\n /* Send and File Buttons */\n --chat--input--send--button--background: var(--chat--color-white);\n --chat--input--send--button--color: var(--chat--color--secondary);\n --chat--input--send--button--background-hover: var(--chat--color--primary-shade-50);\n --chat--input--send--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--input--file--button--background: var(--chat--color-white);\n --chat--input--file--button--color: var(--chat--color--secondary);\n --chat--input--file--button--background-hover: var(--chat--input--file--button--background);\n --chat--input--file--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--files-spacing: 0.25rem;\n\n /* Body and Footer */\n --chat--body--background: var(--chat--color-light);\n --chat--footer--background: var(--chat--color-light);\n --chat--footer--color: var(--chat--color-dark);\n}\n\n\n/* You can override any class styles, too. Right-click inspect in Chat UI to find class to override. */\n.chat-message {\n\tmax-width: 50%;\n}","description":"Override default styling of the public chat interface with CSS"},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Using 'Respond to Webhook' Node","value":"responseNode","description":"Response defined in that node"}],"default":"lastNode","description":"When and how to respond to the webhook"},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}]},{"displayName":"Options","name":"options","type":"collection","displayOptions":{"show":{"mode":["hostedChat","webhook"],"public":[true],"@version":[1.2]}},"placeholder":"Add Field","default":{},"options":[{"displayName":"Allowed Origins (CORS)","name":"allowedOrigins","type":"string","default":"*","description":"Comma-separated list of URLs allowed for cross-origin non-preflight requests. Use * (default) to allow all origins.","displayOptions":{"show":{"/mode":["hostedChat","webhook"]}}},{"displayName":"Allow File Uploads","name":"allowFileUploads","type":"boolean","default":false,"description":"Whether to allow file uploads in the chat","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Allowed File Mime Types","name":"allowedFilesMimeTypes","type":"string","default":"*","placeholder":"e.g. image/*, text/*, application/pdf","description":"Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>.","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Input Placeholder","name":"inputPlaceholder","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Type your question..","placeholder":"e.g. Type your message here","description":"Shown as placeholder text in the chat input field"},{"displayName":"Load Previous Session","name":"loadPreviousSession","type":"options","options":[{"name":"Off","value":"notSupported","description":"Loading messages of previous session is turned off"},{"name":"From Memory","value":"memory","description":"Load session messages from memory"},{"name":"Manually","value":"manually","description":"Manually return messages of session"}],"default":"notSupported","description":"If loading messages of a previous session should be enabled","builderHint":{"propertyHint":"This ONLY rehydrates the chat widget UI when the user reopens it — it does NOT give the Agent memory. The Agent gets memory from its own memory subnode regardless of this setting. Only set to 'memory' if the user wants the widget to restore visible history on reload; if so, you MUST also attach a memory subnode to this trigger (use the same memory node as the Agent so widget history matches what the Agent remembers). Otherwise leave as 'notSupported'."}},{"displayName":"Require Button Click to Start Chat","name":"showWelcomeScreen","type":"boolean","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":false,"description":"Whether to show the welcome screen at the start of the chat"},{"displayName":"Start Conversation Button Text","name":"getStarted","type":"string","displayOptions":{"show":{"showWelcomeScreen":[true],"/mode":["hostedChat"]}},"default":"New Conversation","placeholder":"e.g. New Conversation","description":"Shown as part of the welcome screen, in the middle of the chat window"},{"displayName":"Subtitle","name":"subtitle","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Start a chat. We're here to help you 24/7.","placeholder":"e.g. We're here for you","description":"Shown at the top of the chat, under the title"},{"displayName":"Title","name":"title","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Hi there! 👋","placeholder":"e.g. Welcome","description":"Shown at the top of the chat"},{"displayName":"Custom Chat Styling","name":"customCss","type":"string","typeOptions":{"rows":10,"editor":"cssEditor"},"displayOptions":{"show":{"/mode":["hostedChat"]}},"default":":root {\n /* Colors */\n --chat--color--primary: #e74266;\n --chat--color--primary-shade-50: #db4061;\n --chat--color--primary--shade-100: #cf3c5c;\n --chat--color--secondary: #20b69e;\n --chat--color-secondary-shade-50: #1ca08a;\n --chat--color-white: #fff;\n --chat--color-light: #f2f4f8;\n --chat--color-light-shade-50: #e6e9f1;\n --chat--color-light-shade-100: #c2c5cc;\n --chat--color-medium: #d2d4d9;\n --chat--color-dark: #101330;\n --chat--color-disabled: #d2d4d9;\n --chat--color-typing: #404040;\n\n /* Base Layout */\n --chat--spacing: 1rem;\n --chat--border-radius: 0.25rem;\n --chat--transition-duration: 0.15s;\n --chat--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;\n\n /* Window Dimensions */\n --chat--window--width: 400px;\n --chat--window--height: 600px;\n --chat--window--bottom: var(--chat--spacing);\n --chat--window--right: var(--chat--spacing);\n --chat--window--z-index: 9999;\n --chat--window--border: 1px solid var(--chat--color-light-shade-50);\n --chat--window--border-radius: var(--chat--border-radius);\n --chat--window--margin-bottom: var(--chat--spacing);\n\n /* Header Styles */\n --chat--header-height: auto;\n --chat--header--padding: var(--chat--spacing);\n --chat--header--background: var(--chat--color-dark);\n --chat--header--color: var(--chat--color-light);\n --chat--header--border-top: none;\n --chat--header--border-bottom: none;\n --chat--header--border-left: none;\n --chat--header--border-right: none;\n --chat--heading--font-size: 2em;\n --chat--subtitle--font-size: inherit;\n --chat--subtitle--line-height: 1.8;\n\n /* Message Styles */\n --chat--message--font-size: 1rem;\n --chat--message--padding: var(--chat--spacing);\n --chat--message--border-radius: var(--chat--border-radius);\n --chat--message-line-height: 1.5;\n --chat--message--margin-bottom: calc(var(--chat--spacing) * 1);\n --chat--message--bot--background: var(--chat--color-white);\n --chat--message--bot--color: var(--chat--color-dark);\n --chat--message--bot--border: none;\n --chat--message--user--background: var(--chat--color--secondary);\n --chat--message--user--color: var(--chat--color-white);\n --chat--message--user--border: none;\n --chat--message--pre--background: rgba(0, 0, 0, 0.05);\n --chat--messages-list--padding: var(--chat--spacing);\n\n /* Toggle Button */\n --chat--toggle--size: 64px;\n --chat--toggle--width: var(--chat--toggle--size);\n --chat--toggle--height: var(--chat--toggle--size);\n --chat--toggle--border-radius: 50%;\n --chat--toggle--background: var(--chat--color--primary);\n --chat--toggle--hover--background: var(--chat--color--primary-shade-50);\n --chat--toggle--active--background: var(--chat--color--primary--shade-100);\n --chat--toggle--color: var(--chat--color-white);\n\n /* Input Area */\n --chat--textarea--height: 50px;\n --chat--textarea--max-height: 30rem;\n --chat--input--font-size: inherit;\n --chat--input--border: 0;\n --chat--input--border-radius: 0;\n --chat--input--padding: 0.8rem;\n --chat--input--background: var(--chat--color-white);\n --chat--input--text-color: initial;\n --chat--input--line-height: 1.5;\n --chat--input--placeholder--font-size: var(--chat--input--font-size);\n --chat--input--border-active: 0;\n --chat--input--left--panel--width: 2rem;\n\n /* Button Styles */\n --chat--button--padding: calc(var(--chat--spacing) * 5 / 8) var(--chat--spacing);\n --chat--button--border-radius: var(--chat--border-radius);\n --chat--button--font-size: 1rem;\n --chat--button--line-height: 1;\n --chat--button--color--primary: var(--chat--color-light);\n --chat--button--background--primary: var(--chat--color--secondary);\n --chat--button--border--primary: none;\n --chat--button--color--primary--hover: var(--chat--color-light);\n --chat--button--background--primary--hover: var(--chat--color-secondary-shade-50);\n --chat--button--border--primary--hover: none;\n --chat--button--color--primary--disabled: var(--chat--color-light);\n --chat--button--background--primary--disabled: #81bbb1;\n --chat--button--border--primary--disabled: none;\n --chat--button--color--secondary: var(--chat--color-light);\n --chat--button--background--secondary: hsl(0, 0%, 58%);\n --chat--button--border--secondary: none;\n --chat--button--color--secondary--hover: var(--chat--color-light);\n --chat--button--background--secondary--hover: hsl(0, 0%, 51%);\n --chat--button--border--secondary--hover: none;\n --chat--button--color--secondary--disabled: var(--chat--color-light);\n --chat--button--background--secondary--disabled: hsl(0, 0%, 78%);\n --chat--button--border--secondary--disabled: none;\n --chat--close--button--color-hover: var(--chat--color--primary);\n\n /* Send and File Buttons */\n --chat--input--send--button--background: var(--chat--color-white);\n --chat--input--send--button--color: var(--chat--color--secondary);\n --chat--input--send--button--background-hover: var(--chat--color--primary-shade-50);\n --chat--input--send--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--input--file--button--background: var(--chat--color-white);\n --chat--input--file--button--color: var(--chat--color--secondary);\n --chat--input--file--button--background-hover: var(--chat--input--file--button--background);\n --chat--input--file--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--files-spacing: 0.25rem;\n\n /* Body and Footer */\n --chat--body--background: var(--chat--color-light);\n --chat--footer--background: var(--chat--color-light);\n --chat--footer--color: var(--chat--color-dark);\n}\n\n\n/* You can override any class styles, too. Right-click inspect in Chat UI to find class to override. */\n.chat-message {\n\tmax-width: 50%;\n}","description":"Override default styling of the public chat interface with CSS"},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Using 'Respond to Webhook' Node","value":"responseNode","description":"Response defined in that node"},{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"}],"default":"lastNode","description":"When and how to respond to the webhook","displayOptions":{"show":{"/availableInChat":[false]}}},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"}],"default":"streaming","description":"When and how to respond to the webhook","displayOptions":{"show":{"/availableInChat":[true]}}},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}]},{"displayName":"Options","name":"options","type":"collection","displayOptions":{"show":{"public":[false],"@version":[{"_cnd":{"gte":1.3}}]}},"placeholder":"Add Field","default":{},"options":[{"displayName":"Allow File Uploads","name":"allowFileUploads","type":"boolean","default":false,"description":"Whether to allow file uploads in the chat"},{"displayName":"Allowed File Mime Types","name":"allowedFilesMimeTypes","type":"string","default":"*","placeholder":"e.g. image/*, text/*, application/pdf","description":"Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>."},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Using Response Nodes","value":"responseNodes","description":"Send responses to the chat by using one or more Chat nodes"},{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"}],"default":"lastNode","description":"When and how to respond to the chat","displayOptions":{"show":{"/availableInChat":[false]}}},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Using Response Nodes","value":"responseNodes","description":"Send responses to the chat by using one or more Chat nodes"}],"default":"streaming","description":"When and how to respond to the chat","displayOptions":{"show":{"/availableInChat":[true]}}},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}]},{"displayName":"Options","name":"options","type":"collection","displayOptions":{"show":{"mode":["hostedChat","webhook"],"public":[true],"@version":[{"_cnd":{"gte":1.3}}]}},"placeholder":"Add Field","default":{},"options":[{"displayName":"Allowed Origins (CORS)","name":"allowedOrigins","type":"string","default":"*","description":"Comma-separated list of URLs allowed for cross-origin non-preflight requests. Use * (default) to allow all origins.","displayOptions":{"show":{"/mode":["hostedChat","webhook"]}}},{"displayName":"Allow File Uploads","name":"allowFileUploads","type":"boolean","default":false,"description":"Whether to allow file uploads in the chat","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Allowed File Mime Types","name":"allowedFilesMimeTypes","type":"string","default":"*","placeholder":"e.g. image/*, text/*, application/pdf","description":"Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>.","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Input Placeholder","name":"inputPlaceholder","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Type your question..","placeholder":"e.g. Type your message here","description":"Shown as placeholder text in the chat input field"},{"displayName":"Load Previous Session","name":"loadPreviousSession","type":"options","options":[{"name":"Off","value":"notSupported","description":"Loading messages of previous session is turned off"},{"name":"From Memory","value":"memory","description":"Load session messages from memory"},{"name":"Manually","value":"manually","description":"Manually return messages of session"}],"default":"notSupported","description":"If loading messages of a previous session should be enabled","builderHint":{"propertyHint":"This ONLY rehydrates the chat widget UI when the user reopens it — it does NOT give the Agent memory. The Agent gets memory from its own memory subnode regardless of this setting. Only set to 'memory' if the user wants the widget to restore visible history on reload; if so, you MUST also attach a memory subnode to this trigger (use the same memory node as the Agent so widget history matches what the Agent remembers). Otherwise leave as 'notSupported'."}},{"displayName":"Require Button Click to Start Chat","name":"showWelcomeScreen","type":"boolean","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":false,"description":"Whether to show the welcome screen at the start of the chat"},{"displayName":"Start Conversation Button Text","name":"getStarted","type":"string","displayOptions":{"show":{"showWelcomeScreen":[true],"/mode":["hostedChat"]}},"default":"New Conversation","placeholder":"e.g. New Conversation","description":"Shown as part of the welcome screen, in the middle of the chat window"},{"displayName":"Subtitle","name":"subtitle","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Start a chat. We're here to help you 24/7.","placeholder":"e.g. We're here for you","description":"Shown at the top of the chat, under the title"},{"displayName":"Title","name":"title","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Hi there! 👋","placeholder":"e.g. Welcome","description":"Shown at the top of the chat"},{"displayName":"Custom Chat Styling","name":"customCss","type":"string","typeOptions":{"rows":10,"editor":"cssEditor"},"displayOptions":{"show":{"/mode":["hostedChat"]}},"default":":root {\n /* Colors */\n --chat--color--primary: #e74266;\n --chat--color--primary-shade-50: #db4061;\n --chat--color--primary--shade-100: #cf3c5c;\n --chat--color--secondary: #20b69e;\n --chat--color-secondary-shade-50: #1ca08a;\n --chat--color-white: #fff;\n --chat--color-light: #f2f4f8;\n --chat--color-light-shade-50: #e6e9f1;\n --chat--color-light-shade-100: #c2c5cc;\n --chat--color-medium: #d2d4d9;\n --chat--color-dark: #101330;\n --chat--color-disabled: #d2d4d9;\n --chat--color-typing: #404040;\n\n /* Base Layout */\n --chat--spacing: 1rem;\n --chat--border-radius: 0.25rem;\n --chat--transition-duration: 0.15s;\n --chat--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;\n\n /* Window Dimensions */\n --chat--window--width: 400px;\n --chat--window--height: 600px;\n --chat--window--bottom: var(--chat--spacing);\n --chat--window--right: var(--chat--spacing);\n --chat--window--z-index: 9999;\n --chat--window--border: 1px solid var(--chat--color-light-shade-50);\n --chat--window--border-radius: var(--chat--border-radius);\n --chat--window--margin-bottom: var(--chat--spacing);\n\n /* Header Styles */\n --chat--header-height: auto;\n --chat--header--padding: var(--chat--spacing);\n --chat--header--background: var(--chat--color-dark);\n --chat--header--color: var(--chat--color-light);\n --chat--header--border-top: none;\n --chat--header--border-bottom: none;\n --chat--header--border-left: none;\n --chat--header--border-right: none;\n --chat--heading--font-size: 2em;\n --chat--subtitle--font-size: inherit;\n --chat--subtitle--line-height: 1.8;\n\n /* Message Styles */\n --chat--message--font-size: 1rem;\n --chat--message--padding: var(--chat--spacing);\n --chat--message--border-radius: var(--chat--border-radius);\n --chat--message-line-height: 1.5;\n --chat--message--margin-bottom: calc(var(--chat--spacing) * 1);\n --chat--message--bot--background: var(--chat--color-white);\n --chat--message--bot--color: var(--chat--color-dark);\n --chat--message--bot--border: none;\n --chat--message--user--background: var(--chat--color--secondary);\n --chat--message--user--color: var(--chat--color-white);\n --chat--message--user--border: none;\n --chat--message--pre--background: rgba(0, 0, 0, 0.05);\n --chat--messages-list--padding: var(--chat--spacing);\n\n /* Toggle Button */\n --chat--toggle--size: 64px;\n --chat--toggle--width: var(--chat--toggle--size);\n --chat--toggle--height: var(--chat--toggle--size);\n --chat--toggle--border-radius: 50%;\n --chat--toggle--background: var(--chat--color--primary);\n --chat--toggle--hover--background: var(--chat--color--primary-shade-50);\n --chat--toggle--active--background: var(--chat--color--primary--shade-100);\n --chat--toggle--color: var(--chat--color-white);\n\n /* Input Area */\n --chat--textarea--height: 50px;\n --chat--textarea--max-height: 30rem;\n --chat--input--font-size: inherit;\n --chat--input--border: 0;\n --chat--input--border-radius: 0;\n --chat--input--padding: 0.8rem;\n --chat--input--background: var(--chat--color-white);\n --chat--input--text-color: initial;\n --chat--input--line-height: 1.5;\n --chat--input--placeholder--font-size: var(--chat--input--font-size);\n --chat--input--border-active: 0;\n --chat--input--left--panel--width: 2rem;\n\n /* Button Styles */\n --chat--button--padding: calc(var(--chat--spacing) * 5 / 8) var(--chat--spacing);\n --chat--button--border-radius: var(--chat--border-radius);\n --chat--button--font-size: 1rem;\n --chat--button--line-height: 1;\n --chat--button--color--primary: var(--chat--color-light);\n --chat--button--background--primary: var(--chat--color--secondary);\n --chat--button--border--primary: none;\n --chat--button--color--primary--hover: var(--chat--color-light);\n --chat--button--background--primary--hover: var(--chat--color-secondary-shade-50);\n --chat--button--border--primary--hover: none;\n --chat--button--color--primary--disabled: var(--chat--color-light);\n --chat--button--background--primary--disabled: #81bbb1;\n --chat--button--border--primary--disabled: none;\n --chat--button--color--secondary: var(--chat--color-light);\n --chat--button--background--secondary: hsl(0, 0%, 58%);\n --chat--button--border--secondary: none;\n --chat--button--color--secondary--hover: var(--chat--color-light);\n --chat--button--background--secondary--hover: hsl(0, 0%, 51%);\n --chat--button--border--secondary--hover: none;\n --chat--button--color--secondary--disabled: var(--chat--color-light);\n --chat--button--background--secondary--disabled: hsl(0, 0%, 78%);\n --chat--button--border--secondary--disabled: none;\n --chat--close--button--color-hover: var(--chat--color--primary);\n\n /* Send and File Buttons */\n --chat--input--send--button--background: var(--chat--color-white);\n --chat--input--send--button--color: var(--chat--color--secondary);\n --chat--input--send--button--background-hover: var(--chat--color--primary-shade-50);\n --chat--input--send--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--input--file--button--background: var(--chat--color-white);\n --chat--input--file--button--color: var(--chat--color--secondary);\n --chat--input--file--button--background-hover: var(--chat--input--file--button--background);\n --chat--input--file--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--files-spacing: 0.25rem;\n\n /* Body and Footer */\n --chat--body--background: var(--chat--color-light);\n --chat--footer--background: var(--chat--color-light);\n --chat--footer--color: var(--chat--color-dark);\n}\n\n\n/* You can override any class styles, too. Right-click inspect in Chat UI to find class to override. */\n.chat-message {\n\tmax-width: 50%;\n}","description":"Override default styling of the public chat interface with CSS"},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"Using 'Respond to Webhook' Node","value":"responseNode","description":"Response defined in that node"}],"default":"lastNode","description":"When and how to respond to the chat","displayOptions":{"show":{"/mode":["webhook"],"/availableInChat":[false]}}},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"}],"default":"streaming","description":"When and how to respond to the chat","displayOptions":{"show":{"/mode":["webhook"],"/availableInChat":[true]}}},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"Using Response Nodes","value":"responseNodes","description":"Send responses to the chat by using one or more Chat nodes"}],"default":"lastNode","description":"When and how to respond to the chat","displayOptions":{"show":{"/mode":["hostedChat"],"/availableInChat":[false]}}},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Using Response Nodes","value":"responseNodes","description":"Send responses to the chat by using one or more Chat nodes"}],"default":"streaming","description":"When and how to respond to the chat","displayOptions":{"show":{"/mode":["hostedChat"],"/availableInChat":[true]}}},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}]}]},
|
|
100
|
+
{"displayName":"Chat Trigger","name":"chatTrigger","icon":"node:chat-trigger","iconColor":"black","group":["trigger"],"version":[1,1.1,1.2,1.3,1.4],"defaultVersion":1.4,"description":"Runs the workflow when an n8n generated webchat is submitted","defaults":{"name":"When chat message received"},"codex":{"categories":["Core Nodes"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"}]}},"maxNodes":1,"inputs":"={{ (() => {\n\t\t\tif (!['hostedChat', 'webhook'].includes($parameter.mode)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tif ($parameter.options?.loadPreviousSession !== 'memory') {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tdisplayName: 'Memory',\n\t\t\t\t\tmaxConnections: 1,\n\t\t\t\t\ttype: 'ai_memory',\n\t\t\t\t\trequired: true,\n\t\t\t\t}\n\t\t\t];\n\t\t })() }}","outputs":["main"],"builderHint":{"searchHint":"Pair with `@n8n/n8n-nodes-langchain.agent` for chatbot workflows. Reply delivery is controlled by `options.responseMode` — `streaming` (Agent streams directly to widget) is simplest and preferred. For `lastNode` mode, the workflow's last-executed node MUST output `{ output: '<reply>' }` — typically the Agent itself or a Set node re-shaping data; ending the chain with a Data Table insert, HTTP Request, or other side-effect node will fail. Put logging or persistence on a parallel branch, not inline after the Agent.","relatedNodes":[{"nodeType":"@n8n/n8n-nodes-langchain.agent","relationHint":"Main reply producer; use `responseMode: 'streaming'` so the Agent streams directly to the widget."},{"nodeType":"n8n-nodes-base.set","relationHint":"Append at the end of a `responseMode: 'lastNode'` chain to re-shape the last node's output into `{ output: '<reply text>' }` when the natural last step (e.g. a Data Table insert) doesn't produce chat-shaped data."},{"nodeType":"@n8n/n8n-nodes-langchain.chat","relationHint":"Required for `responseMode: 'responseNodes'`. Place inside the flow wherever you want to emit a reply chunk."}],"inputs":{"ai_memory":{"required":true,"displayOptions":{"show":{"mode":["hostedChat","webhook"],"options.loadPreviousSession":["memory"]}}}}},"credentials":[{"name":"httpBasicAuth","required":true,"displayOptions":{"show":{"authentication":["basicAuth"]}}}],"webhooks":[{"name":"setup","httpMethod":"GET","responseMode":"onReceived","path":"chat","ndvHideUrl":true},{"name":"default","httpMethod":"POST","responseMode":"={{$parameter.options?.[\"responseMode\"] ?? ($parameter.availableInChat ? \"streaming\" : \"lastNode\") }}","path":"chat","ndvHideMethod":true,"ndvHideUrl":"={{ !$parameter.public }}"}],"eventTriggerDescription":"Waiting for you to submit the chat","activationMessage":"You can now make calls to your production chat URL.","triggerPanel":false,"properties":[{"displayName":"Make Chat Publicly Available","name":"public","type":"boolean","default":false,"description":"Whether the chat should be publicly available or only accessible through the manual chat interface"},{"displayName":"Mode","name":"mode","type":"options","options":[{"name":"Hosted Chat","value":"hostedChat","description":"Chat on a page served by n8n"},{"name":"Embedded Chat","value":"webhook","description":"Chat through a widget embedded in another page, or by calling a webhook"}],"default":"hostedChat","displayOptions":{"show":{"public":[true]}}},{"displayName":"Chat will be live at the URL above once this workflow is published. Live executions will show up in the ‘executions’ tab","name":"hostedChatNotice","type":"notice","displayOptions":{"show":{"mode":["hostedChat"],"public":[true]}},"default":""},{"displayName":"Follow the instructions <a href=\"https://www.npmjs.com/package/@n8n/chat\" target=\"_blank\">here</a> to embed chat in a webpage (or just call the webhook URL at the top of this section). Chat will be live once you publish this workflow","name":"embeddedChatNotice","type":"notice","displayOptions":{"show":{"mode":["webhook"],"public":[true]}},"default":""},{"displayName":"Authentication","name":"authentication","type":"options","displayOptions":{"show":{"public":[true]}},"options":[{"name":"Basic Auth","value":"basicAuth","description":"Simple username and password (the same one for all users)"},{"name":"n8n User Auth","value":"n8nUserAuth","description":"Require user to be logged in with their n8n account"},{"name":"None","value":"none"}],"default":"none","description":"The way to authenticate","builderHint":{"propertyHint":"Default to 'none'. n8n exposes inbound trigger URLs publicly by design. Only select an authentication method when the user explicitly asks to authenticate inbound traffic."}},{"displayName":"Initial Message(s)","name":"initialMessages","type":"string","displayOptions":{"show":{"mode":["hostedChat"],"public":[true]}},"typeOptions":{"rows":3},"default":"Hi there! 👋\nMy name is Nathan. How can I assist you today?","description":"Default messages shown at the start of the chat, one per line"},{"displayName":"Make Available in n8n Chat Hub","name":"availableInChat","type":"boolean","default":false,"noDataExpression":true,"description":"Whether to make the agent available in n8n Chat Hub for n8n instance users to chat with"},{"displayName":"Your Chat Trigger node is out of date. To update, delete this node and insert a new Chat Trigger node.","name":"availableInChatNotice","type":"notice","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"lt":1.2}}]}},"default":""},{"displayName":"Your n8n users will be able to use this agent in <a href=\"/home/chat/\" target=\"_blank\">Chat</a> once this workflow is published. Make sure to share this workflow with at least Project Chat User access to all users who should use it.","name":"availableInChatNotice","type":"notice","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"gte":1.2}}]}},"default":""},{"displayName":"Agent Icon","name":"agentIcon","type":"icon","default":{"type":"icon","value":"bot"},"noDataExpression":true,"description":"The icon of the agent on n8n Chat","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"gte":1.2}}]}}},{"displayName":"Agent Name","name":"agentName","type":"string","default":"","noDataExpression":true,"description":"The name of the agent on n8n Chat. Name of the workflow is used if left empty.","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"gte":1.2}}]}}},{"displayName":"Agent Description","name":"agentDescription","type":"string","typeOptions":{"rows":2},"default":"","noDataExpression":true,"description":"The description of the agent on n8n Chat","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"gte":1.2}}]}}},{"displayName":"Suggestions","name":"suggestedPrompts","type":"fixedCollection","typeOptions":{"multipleValues":true,"fixedCollection":{"layout":"inline"}},"default":{},"noDataExpression":true,"placeholder":"Add Prompt","description":"Suggested prompts shown to users in n8n Chat Hub to start a conversation with the agent","displayOptions":{"show":{"availableInChat":[true],"@version":[{"_cnd":{"gte":1.2}}]}},"options":[{"name":"prompts","displayName":"Prompts","values":[{"displayName":"Icon","name":"icon","type":"icon","noDataExpression":true,"default":{"type":"icon","value":"comment"}},{"displayName":"Prompt Text","name":"text","type":"string","default":"","noDataExpression":true,"required":true}]}]},{"displayName":"Options","name":"options","type":"collection","displayOptions":{"show":{"public":[false],"@version":[1,1.1]}},"placeholder":"Add Field","default":{},"options":[{"displayName":"Allow File Uploads","name":"allowFileUploads","type":"boolean","default":false,"description":"Whether to allow file uploads in the chat"},{"displayName":"Allowed File Mime Types","name":"allowedFilesMimeTypes","type":"string","default":"*","placeholder":"e.g. image/*, text/*, application/pdf","description":"Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>."}]},{"displayName":"Options","name":"options","type":"collection","displayOptions":{"show":{"mode":["hostedChat","webhook"],"public":[true],"@version":[1,1.1]}},"placeholder":"Add Field","default":{},"options":[{"displayName":"Allowed Origins (CORS)","name":"allowedOrigins","type":"string","default":"*","description":"Comma-separated list of URLs allowed for cross-origin non-preflight requests. Use * (default) to allow all origins.","displayOptions":{"show":{"/mode":["hostedChat","webhook"]}}},{"displayName":"Allow File Uploads","name":"allowFileUploads","type":"boolean","default":false,"description":"Whether to allow file uploads in the chat","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Allowed File Mime Types","name":"allowedFilesMimeTypes","type":"string","default":"*","placeholder":"e.g. image/*, text/*, application/pdf","description":"Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>.","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Input Placeholder","name":"inputPlaceholder","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Type your question..","placeholder":"e.g. Type your message here","description":"Shown as placeholder text in the chat input field"},{"displayName":"Load Previous Session","name":"loadPreviousSession","type":"options","options":[{"name":"Off","value":"notSupported","description":"Loading messages of previous session is turned off"},{"name":"From Memory","value":"memory","description":"Load session messages from memory"},{"name":"Manually","value":"manually","description":"Manually return messages of session"}],"default":"notSupported","description":"If loading messages of a previous session should be enabled","builderHint":{"propertyHint":"This ONLY rehydrates the chat widget UI when the user reopens it — it does NOT give the Agent memory. The Agent gets memory from its own memory subnode regardless of this setting. Only set to 'memory' if the user wants the widget to restore visible history on reload; if so, you MUST also attach a memory subnode to this trigger (use the same memory node as the Agent so widget history matches what the Agent remembers). Otherwise leave as 'notSupported'."}},{"displayName":"Require Button Click to Start Chat","name":"showWelcomeScreen","type":"boolean","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":false,"description":"Whether to show the welcome screen at the start of the chat"},{"displayName":"Start Conversation Button Text","name":"getStarted","type":"string","displayOptions":{"show":{"showWelcomeScreen":[true],"/mode":["hostedChat"]}},"default":"New Conversation","placeholder":"e.g. New Conversation","description":"Shown as part of the welcome screen, in the middle of the chat window"},{"displayName":"Subtitle","name":"subtitle","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Start a chat. We're here to help you 24/7.","placeholder":"e.g. We're here for you","description":"Shown at the top of the chat, under the title"},{"displayName":"Title","name":"title","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Hi there! 👋","placeholder":"e.g. Welcome","description":"Shown at the top of the chat"},{"displayName":"Custom Chat Styling","name":"customCss","type":"string","typeOptions":{"rows":10,"editor":"cssEditor"},"displayOptions":{"show":{"/mode":["hostedChat"]}},"default":":root {\n /* Colors */\n --chat--color--primary: #e74266;\n --chat--color--primary-shade-50: #db4061;\n --chat--color--primary--shade-100: #cf3c5c;\n --chat--color--secondary: #20b69e;\n --chat--color-secondary-shade-50: #1ca08a;\n --chat--color-white: #fff;\n --chat--color-light: #f2f4f8;\n --chat--color-light-shade-50: #e6e9f1;\n --chat--color-light-shade-100: #c2c5cc;\n --chat--color-medium: #d2d4d9;\n --chat--color-dark: #101330;\n --chat--color-disabled: #d2d4d9;\n --chat--color-typing: #404040;\n\n /* Base Layout */\n --chat--spacing: 1rem;\n --chat--border-radius: 0.25rem;\n --chat--transition-duration: 0.15s;\n --chat--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;\n\n /* Window Dimensions */\n --chat--window--width: 400px;\n --chat--window--height: 600px;\n --chat--window--bottom: var(--chat--spacing);\n --chat--window--right: var(--chat--spacing);\n --chat--window--z-index: 9999;\n --chat--window--border: 1px solid var(--chat--color-light-shade-50);\n --chat--window--border-radius: var(--chat--border-radius);\n --chat--window--margin-bottom: var(--chat--spacing);\n\n /* Header Styles */\n --chat--header-height: auto;\n --chat--header--padding: var(--chat--spacing);\n --chat--header--background: var(--chat--color-dark);\n --chat--header--color: var(--chat--color-light);\n --chat--header--border-top: none;\n --chat--header--border-bottom: none;\n --chat--header--border-left: none;\n --chat--header--border-right: none;\n --chat--heading--font-size: 2em;\n --chat--subtitle--font-size: inherit;\n --chat--subtitle--line-height: 1.8;\n\n /* Message Styles */\n --chat--message--font-size: 1rem;\n --chat--message--padding: var(--chat--spacing);\n --chat--message--border-radius: var(--chat--border-radius);\n --chat--message-line-height: 1.5;\n --chat--message--margin-bottom: calc(var(--chat--spacing) * 1);\n --chat--message--bot--background: var(--chat--color-white);\n --chat--message--bot--color: var(--chat--color-dark);\n --chat--message--bot--border: none;\n --chat--message--user--background: var(--chat--color--secondary);\n --chat--message--user--color: var(--chat--color-white);\n --chat--message--user--border: none;\n --chat--message--pre--background: rgba(0, 0, 0, 0.05);\n --chat--messages-list--padding: var(--chat--spacing);\n\n /* Toggle Button */\n --chat--toggle--size: 64px;\n --chat--toggle--width: var(--chat--toggle--size);\n --chat--toggle--height: var(--chat--toggle--size);\n --chat--toggle--border-radius: 50%;\n --chat--toggle--background: var(--chat--color--primary);\n --chat--toggle--hover--background: var(--chat--color--primary-shade-50);\n --chat--toggle--active--background: var(--chat--color--primary--shade-100);\n --chat--toggle--color: var(--chat--color-white);\n\n /* Input Area */\n --chat--textarea--height: 50px;\n --chat--textarea--max-height: 30rem;\n --chat--input--font-size: inherit;\n --chat--input--border: 0;\n --chat--input--border-radius: 0;\n --chat--input--padding: 0.8rem;\n --chat--input--background: var(--chat--color-white);\n --chat--input--text-color: initial;\n --chat--input--line-height: 1.5;\n --chat--input--placeholder--font-size: var(--chat--input--font-size);\n --chat--input--border-active: 0;\n --chat--input--left--panel--width: 2rem;\n\n /* Button Styles */\n --chat--button--padding: calc(var(--chat--spacing) * 5 / 8) var(--chat--spacing);\n --chat--button--border-radius: var(--chat--border-radius);\n --chat--button--font-size: 1rem;\n --chat--button--line-height: 1;\n --chat--button--color--primary: var(--chat--color-light);\n --chat--button--background--primary: var(--chat--color--secondary);\n --chat--button--border--primary: none;\n --chat--button--color--primary--hover: var(--chat--color-light);\n --chat--button--background--primary--hover: var(--chat--color-secondary-shade-50);\n --chat--button--border--primary--hover: none;\n --chat--button--color--primary--disabled: var(--chat--color-light);\n --chat--button--background--primary--disabled: #81bbb1;\n --chat--button--border--primary--disabled: none;\n --chat--button--color--secondary: var(--chat--color-light);\n --chat--button--background--secondary: hsl(0, 0%, 58%);\n --chat--button--border--secondary: none;\n --chat--button--color--secondary--hover: var(--chat--color-light);\n --chat--button--background--secondary--hover: hsl(0, 0%, 51%);\n --chat--button--border--secondary--hover: none;\n --chat--button--color--secondary--disabled: var(--chat--color-light);\n --chat--button--background--secondary--disabled: hsl(0, 0%, 78%);\n --chat--button--border--secondary--disabled: none;\n --chat--close--button--color-hover: var(--chat--color--primary);\n\n /* Send and File Buttons */\n --chat--input--send--button--background: var(--chat--color-white);\n --chat--input--send--button--color: var(--chat--color--secondary);\n --chat--input--send--button--background-hover: var(--chat--color--primary-shade-50);\n --chat--input--send--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--input--file--button--background: var(--chat--color-white);\n --chat--input--file--button--color: var(--chat--color--secondary);\n --chat--input--file--button--background-hover: var(--chat--input--file--button--background);\n --chat--input--file--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--files-spacing: 0.25rem;\n\n /* Body and Footer */\n --chat--body--background: var(--chat--color-light);\n --chat--footer--background: var(--chat--color-light);\n --chat--footer--color: var(--chat--color-dark);\n}\n\n\n/* You can override any class styles, too. Right-click inspect in Chat UI to find class to override. */\n.chat-message {\n\tmax-width: 50%;\n}","description":"Override default styling of the public chat interface with CSS"},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Using 'Respond to Webhook' Node","value":"responseNode","description":"Response defined in that node"}],"default":"lastNode","description":"When and how to respond to the webhook","builderHint":{"propertyHint":"'streaming' (preferred for Agent-backed chats): the connected Agent streams its reply to the widget directly — no extra wiring. Place logging or side-effects on a PARALLEL branch off the trigger or Agent, never inline after the Agent. 'lastNode': the last-executed node's output is sent to the widget — that node MUST emit `{ output: '<reply text>' }` (typically the Agent itself, or a Set node re-shaping data). NEVER terminate the chain with a Data Table insert, HTTP Request, or other side-effect node — their output is not a chat reply and the widget will error. 'responseNodes' / 'responseNode': requires explicit response nodes inside the flow (`@n8n/n8n-nodes-langchain.chat` for chat-hub mode, `n8n-nodes-base.respondToWebhook` for webhook mode)."}},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}]},{"displayName":"Options","name":"options","type":"collection","displayOptions":{"show":{"mode":["hostedChat","webhook"],"public":[true],"@version":[1.2]}},"placeholder":"Add Field","default":{},"options":[{"displayName":"Allowed Origins (CORS)","name":"allowedOrigins","type":"string","default":"*","description":"Comma-separated list of URLs allowed for cross-origin non-preflight requests. Use * (default) to allow all origins.","displayOptions":{"show":{"/mode":["hostedChat","webhook"]}}},{"displayName":"Allow File Uploads","name":"allowFileUploads","type":"boolean","default":false,"description":"Whether to allow file uploads in the chat","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Allowed File Mime Types","name":"allowedFilesMimeTypes","type":"string","default":"*","placeholder":"e.g. image/*, text/*, application/pdf","description":"Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>.","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Input Placeholder","name":"inputPlaceholder","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Type your question..","placeholder":"e.g. Type your message here","description":"Shown as placeholder text in the chat input field"},{"displayName":"Load Previous Session","name":"loadPreviousSession","type":"options","options":[{"name":"Off","value":"notSupported","description":"Loading messages of previous session is turned off"},{"name":"From Memory","value":"memory","description":"Load session messages from memory"},{"name":"Manually","value":"manually","description":"Manually return messages of session"}],"default":"notSupported","description":"If loading messages of a previous session should be enabled","builderHint":{"propertyHint":"This ONLY rehydrates the chat widget UI when the user reopens it — it does NOT give the Agent memory. The Agent gets memory from its own memory subnode regardless of this setting. Only set to 'memory' if the user wants the widget to restore visible history on reload; if so, you MUST also attach a memory subnode to this trigger (use the same memory node as the Agent so widget history matches what the Agent remembers). Otherwise leave as 'notSupported'."}},{"displayName":"Require Button Click to Start Chat","name":"showWelcomeScreen","type":"boolean","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":false,"description":"Whether to show the welcome screen at the start of the chat"},{"displayName":"Start Conversation Button Text","name":"getStarted","type":"string","displayOptions":{"show":{"showWelcomeScreen":[true],"/mode":["hostedChat"]}},"default":"New Conversation","placeholder":"e.g. New Conversation","description":"Shown as part of the welcome screen, in the middle of the chat window"},{"displayName":"Subtitle","name":"subtitle","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Start a chat. We're here to help you 24/7.","placeholder":"e.g. We're here for you","description":"Shown at the top of the chat, under the title"},{"displayName":"Title","name":"title","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Hi there! 👋","placeholder":"e.g. Welcome","description":"Shown at the top of the chat"},{"displayName":"Custom Chat Styling","name":"customCss","type":"string","typeOptions":{"rows":10,"editor":"cssEditor"},"displayOptions":{"show":{"/mode":["hostedChat"]}},"default":":root {\n /* Colors */\n --chat--color--primary: #e74266;\n --chat--color--primary-shade-50: #db4061;\n --chat--color--primary--shade-100: #cf3c5c;\n --chat--color--secondary: #20b69e;\n --chat--color-secondary-shade-50: #1ca08a;\n --chat--color-white: #fff;\n --chat--color-light: #f2f4f8;\n --chat--color-light-shade-50: #e6e9f1;\n --chat--color-light-shade-100: #c2c5cc;\n --chat--color-medium: #d2d4d9;\n --chat--color-dark: #101330;\n --chat--color-disabled: #d2d4d9;\n --chat--color-typing: #404040;\n\n /* Base Layout */\n --chat--spacing: 1rem;\n --chat--border-radius: 0.25rem;\n --chat--transition-duration: 0.15s;\n --chat--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;\n\n /* Window Dimensions */\n --chat--window--width: 400px;\n --chat--window--height: 600px;\n --chat--window--bottom: var(--chat--spacing);\n --chat--window--right: var(--chat--spacing);\n --chat--window--z-index: 9999;\n --chat--window--border: 1px solid var(--chat--color-light-shade-50);\n --chat--window--border-radius: var(--chat--border-radius);\n --chat--window--margin-bottom: var(--chat--spacing);\n\n /* Header Styles */\n --chat--header-height: auto;\n --chat--header--padding: var(--chat--spacing);\n --chat--header--background: var(--chat--color-dark);\n --chat--header--color: var(--chat--color-light);\n --chat--header--border-top: none;\n --chat--header--border-bottom: none;\n --chat--header--border-left: none;\n --chat--header--border-right: none;\n --chat--heading--font-size: 2em;\n --chat--subtitle--font-size: inherit;\n --chat--subtitle--line-height: 1.8;\n\n /* Message Styles */\n --chat--message--font-size: 1rem;\n --chat--message--padding: var(--chat--spacing);\n --chat--message--border-radius: var(--chat--border-radius);\n --chat--message-line-height: 1.5;\n --chat--message--margin-bottom: calc(var(--chat--spacing) * 1);\n --chat--message--bot--background: var(--chat--color-white);\n --chat--message--bot--color: var(--chat--color-dark);\n --chat--message--bot--border: none;\n --chat--message--user--background: var(--chat--color--secondary);\n --chat--message--user--color: var(--chat--color-white);\n --chat--message--user--border: none;\n --chat--message--pre--background: rgba(0, 0, 0, 0.05);\n --chat--messages-list--padding: var(--chat--spacing);\n\n /* Toggle Button */\n --chat--toggle--size: 64px;\n --chat--toggle--width: var(--chat--toggle--size);\n --chat--toggle--height: var(--chat--toggle--size);\n --chat--toggle--border-radius: 50%;\n --chat--toggle--background: var(--chat--color--primary);\n --chat--toggle--hover--background: var(--chat--color--primary-shade-50);\n --chat--toggle--active--background: var(--chat--color--primary--shade-100);\n --chat--toggle--color: var(--chat--color-white);\n\n /* Input Area */\n --chat--textarea--height: 50px;\n --chat--textarea--max-height: 30rem;\n --chat--input--font-size: inherit;\n --chat--input--border: 0;\n --chat--input--border-radius: 0;\n --chat--input--padding: 0.8rem;\n --chat--input--background: var(--chat--color-white);\n --chat--input--text-color: initial;\n --chat--input--line-height: 1.5;\n --chat--input--placeholder--font-size: var(--chat--input--font-size);\n --chat--input--border-active: 0;\n --chat--input--left--panel--width: 2rem;\n\n /* Button Styles */\n --chat--button--padding: calc(var(--chat--spacing) * 5 / 8) var(--chat--spacing);\n --chat--button--border-radius: var(--chat--border-radius);\n --chat--button--font-size: 1rem;\n --chat--button--line-height: 1;\n --chat--button--color--primary: var(--chat--color-light);\n --chat--button--background--primary: var(--chat--color--secondary);\n --chat--button--border--primary: none;\n --chat--button--color--primary--hover: var(--chat--color-light);\n --chat--button--background--primary--hover: var(--chat--color-secondary-shade-50);\n --chat--button--border--primary--hover: none;\n --chat--button--color--primary--disabled: var(--chat--color-light);\n --chat--button--background--primary--disabled: #81bbb1;\n --chat--button--border--primary--disabled: none;\n --chat--button--color--secondary: var(--chat--color-light);\n --chat--button--background--secondary: hsl(0, 0%, 58%);\n --chat--button--border--secondary: none;\n --chat--button--color--secondary--hover: var(--chat--color-light);\n --chat--button--background--secondary--hover: hsl(0, 0%, 51%);\n --chat--button--border--secondary--hover: none;\n --chat--button--color--secondary--disabled: var(--chat--color-light);\n --chat--button--background--secondary--disabled: hsl(0, 0%, 78%);\n --chat--button--border--secondary--disabled: none;\n --chat--close--button--color-hover: var(--chat--color--primary);\n\n /* Send and File Buttons */\n --chat--input--send--button--background: var(--chat--color-white);\n --chat--input--send--button--color: var(--chat--color--secondary);\n --chat--input--send--button--background-hover: var(--chat--color--primary-shade-50);\n --chat--input--send--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--input--file--button--background: var(--chat--color-white);\n --chat--input--file--button--color: var(--chat--color--secondary);\n --chat--input--file--button--background-hover: var(--chat--input--file--button--background);\n --chat--input--file--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--files-spacing: 0.25rem;\n\n /* Body and Footer */\n --chat--body--background: var(--chat--color-light);\n --chat--footer--background: var(--chat--color-light);\n --chat--footer--color: var(--chat--color-dark);\n}\n\n\n/* You can override any class styles, too. Right-click inspect in Chat UI to find class to override. */\n.chat-message {\n\tmax-width: 50%;\n}","description":"Override default styling of the public chat interface with CSS"},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Using 'Respond to Webhook' Node","value":"responseNode","description":"Response defined in that node"},{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"}],"default":"lastNode","description":"When and how to respond to the webhook","displayOptions":{"show":{"/availableInChat":[false]}},"builderHint":{"propertyHint":"'streaming' (preferred for Agent-backed chats): the connected Agent streams its reply to the widget directly — no extra wiring. Place logging or side-effects on a PARALLEL branch off the trigger or Agent, never inline after the Agent. 'lastNode': the last-executed node's output is sent to the widget — that node MUST emit `{ output: '<reply text>' }` (typically the Agent itself, or a Set node re-shaping data). NEVER terminate the chain with a Data Table insert, HTTP Request, or other side-effect node — their output is not a chat reply and the widget will error. 'responseNodes' / 'responseNode': requires explicit response nodes inside the flow (`@n8n/n8n-nodes-langchain.chat` for chat-hub mode, `n8n-nodes-base.respondToWebhook` for webhook mode)."}},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"}],"default":"streaming","description":"When and how to respond to the webhook","displayOptions":{"show":{"/availableInChat":[true]}},"builderHint":{"propertyHint":"'streaming' (preferred for Agent-backed chats): the connected Agent streams its reply to the widget directly — no extra wiring. Place logging or side-effects on a PARALLEL branch off the trigger or Agent, never inline after the Agent. 'lastNode': the last-executed node's output is sent to the widget — that node MUST emit `{ output: '<reply text>' }` (typically the Agent itself, or a Set node re-shaping data). NEVER terminate the chain with a Data Table insert, HTTP Request, or other side-effect node — their output is not a chat reply and the widget will error. 'responseNodes' / 'responseNode': requires explicit response nodes inside the flow (`@n8n/n8n-nodes-langchain.chat` for chat-hub mode, `n8n-nodes-base.respondToWebhook` for webhook mode)."}},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}]},{"displayName":"Options","name":"options","type":"collection","displayOptions":{"show":{"public":[false],"@version":[{"_cnd":{"gte":1.3}}]}},"placeholder":"Add Field","default":{},"options":[{"displayName":"Allow File Uploads","name":"allowFileUploads","type":"boolean","default":false,"description":"Whether to allow file uploads in the chat"},{"displayName":"Allowed File Mime Types","name":"allowedFilesMimeTypes","type":"string","default":"*","placeholder":"e.g. image/*, text/*, application/pdf","description":"Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>."},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Using Response Nodes","value":"responseNodes","description":"Send responses to the chat by using one or more Chat nodes"},{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"}],"default":"lastNode","description":"When and how to respond to the chat","displayOptions":{"show":{"/availableInChat":[false]}},"builderHint":{"propertyHint":"'streaming' (preferred for Agent-backed chats): the connected Agent streams its reply to the widget directly — no extra wiring. Place logging or side-effects on a PARALLEL branch off the trigger or Agent, never inline after the Agent. 'lastNode': the last-executed node's output is sent to the widget — that node MUST emit `{ output: '<reply text>' }` (typically the Agent itself, or a Set node re-shaping data). NEVER terminate the chain with a Data Table insert, HTTP Request, or other side-effect node — their output is not a chat reply and the widget will error. 'responseNodes' / 'responseNode': requires explicit response nodes inside the flow (`@n8n/n8n-nodes-langchain.chat` for chat-hub mode, `n8n-nodes-base.respondToWebhook` for webhook mode)."}},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Using Response Nodes","value":"responseNodes","description":"Send responses to the chat by using one or more Chat nodes"}],"default":"streaming","description":"When and how to respond to the chat","displayOptions":{"show":{"/availableInChat":[true]}},"builderHint":{"propertyHint":"'streaming' (preferred for Agent-backed chats): the connected Agent streams its reply to the widget directly — no extra wiring. Place logging or side-effects on a PARALLEL branch off the trigger or Agent, never inline after the Agent. 'lastNode': the last-executed node's output is sent to the widget — that node MUST emit `{ output: '<reply text>' }` (typically the Agent itself, or a Set node re-shaping data). NEVER terminate the chain with a Data Table insert, HTTP Request, or other side-effect node — their output is not a chat reply and the widget will error. 'responseNodes' / 'responseNode': requires explicit response nodes inside the flow (`@n8n/n8n-nodes-langchain.chat` for chat-hub mode, `n8n-nodes-base.respondToWebhook` for webhook mode)."}},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}]},{"displayName":"Options","name":"options","type":"collection","displayOptions":{"show":{"mode":["hostedChat","webhook"],"public":[true],"@version":[{"_cnd":{"gte":1.3}}]}},"placeholder":"Add Field","default":{},"options":[{"displayName":"Allowed Origins (CORS)","name":"allowedOrigins","type":"string","default":"*","description":"Comma-separated list of URLs allowed for cross-origin non-preflight requests. Use * (default) to allow all origins.","displayOptions":{"show":{"/mode":["hostedChat","webhook"]}}},{"displayName":"Allow File Uploads","name":"allowFileUploads","type":"boolean","default":false,"description":"Whether to allow file uploads in the chat","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Allowed File Mime Types","name":"allowedFilesMimeTypes","type":"string","default":"*","placeholder":"e.g. image/*, text/*, application/pdf","description":"Allowed file types for upload. Comma-separated list of <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\" target=\"_blank\">MIME types</a>.","displayOptions":{"show":{"/mode":["hostedChat"]}}},{"displayName":"Input Placeholder","name":"inputPlaceholder","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Type your question..","placeholder":"e.g. Type your message here","description":"Shown as placeholder text in the chat input field"},{"displayName":"Load Previous Session","name":"loadPreviousSession","type":"options","options":[{"name":"Off","value":"notSupported","description":"Loading messages of previous session is turned off"},{"name":"From Memory","value":"memory","description":"Load session messages from memory"},{"name":"Manually","value":"manually","description":"Manually return messages of session"}],"default":"notSupported","description":"If loading messages of a previous session should be enabled","builderHint":{"propertyHint":"This ONLY rehydrates the chat widget UI when the user reopens it — it does NOT give the Agent memory. The Agent gets memory from its own memory subnode regardless of this setting. Only set to 'memory' if the user wants the widget to restore visible history on reload; if so, you MUST also attach a memory subnode to this trigger (use the same memory node as the Agent so widget history matches what the Agent remembers). Otherwise leave as 'notSupported'."}},{"displayName":"Require Button Click to Start Chat","name":"showWelcomeScreen","type":"boolean","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":false,"description":"Whether to show the welcome screen at the start of the chat"},{"displayName":"Start Conversation Button Text","name":"getStarted","type":"string","displayOptions":{"show":{"showWelcomeScreen":[true],"/mode":["hostedChat"]}},"default":"New Conversation","placeholder":"e.g. New Conversation","description":"Shown as part of the welcome screen, in the middle of the chat window"},{"displayName":"Subtitle","name":"subtitle","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Start a chat. We're here to help you 24/7.","placeholder":"e.g. We're here for you","description":"Shown at the top of the chat, under the title"},{"displayName":"Title","name":"title","type":"string","displayOptions":{"show":{"/mode":["hostedChat"]}},"default":"Hi there! 👋","placeholder":"e.g. Welcome","description":"Shown at the top of the chat"},{"displayName":"Custom Chat Styling","name":"customCss","type":"string","typeOptions":{"rows":10,"editor":"cssEditor"},"displayOptions":{"show":{"/mode":["hostedChat"]}},"default":":root {\n /* Colors */\n --chat--color--primary: #e74266;\n --chat--color--primary-shade-50: #db4061;\n --chat--color--primary--shade-100: #cf3c5c;\n --chat--color--secondary: #20b69e;\n --chat--color-secondary-shade-50: #1ca08a;\n --chat--color-white: #fff;\n --chat--color-light: #f2f4f8;\n --chat--color-light-shade-50: #e6e9f1;\n --chat--color-light-shade-100: #c2c5cc;\n --chat--color-medium: #d2d4d9;\n --chat--color-dark: #101330;\n --chat--color-disabled: #d2d4d9;\n --chat--color-typing: #404040;\n\n /* Base Layout */\n --chat--spacing: 1rem;\n --chat--border-radius: 0.25rem;\n --chat--transition-duration: 0.15s;\n --chat--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;\n\n /* Window Dimensions */\n --chat--window--width: 400px;\n --chat--window--height: 600px;\n --chat--window--bottom: var(--chat--spacing);\n --chat--window--right: var(--chat--spacing);\n --chat--window--z-index: 9999;\n --chat--window--border: 1px solid var(--chat--color-light-shade-50);\n --chat--window--border-radius: var(--chat--border-radius);\n --chat--window--margin-bottom: var(--chat--spacing);\n\n /* Header Styles */\n --chat--header-height: auto;\n --chat--header--padding: var(--chat--spacing);\n --chat--header--background: var(--chat--color-dark);\n --chat--header--color: var(--chat--color-light);\n --chat--header--border-top: none;\n --chat--header--border-bottom: none;\n --chat--header--border-left: none;\n --chat--header--border-right: none;\n --chat--heading--font-size: 2em;\n --chat--subtitle--font-size: inherit;\n --chat--subtitle--line-height: 1.8;\n\n /* Message Styles */\n --chat--message--font-size: 1rem;\n --chat--message--padding: var(--chat--spacing);\n --chat--message--border-radius: var(--chat--border-radius);\n --chat--message-line-height: 1.5;\n --chat--message--margin-bottom: calc(var(--chat--spacing) * 1);\n --chat--message--bot--background: var(--chat--color-white);\n --chat--message--bot--color: var(--chat--color-dark);\n --chat--message--bot--border: none;\n --chat--message--user--background: var(--chat--color--secondary);\n --chat--message--user--color: var(--chat--color-white);\n --chat--message--user--border: none;\n --chat--message--pre--background: rgba(0, 0, 0, 0.05);\n --chat--messages-list--padding: var(--chat--spacing);\n\n /* Toggle Button */\n --chat--toggle--size: 64px;\n --chat--toggle--width: var(--chat--toggle--size);\n --chat--toggle--height: var(--chat--toggle--size);\n --chat--toggle--border-radius: 50%;\n --chat--toggle--background: var(--chat--color--primary);\n --chat--toggle--hover--background: var(--chat--color--primary-shade-50);\n --chat--toggle--active--background: var(--chat--color--primary--shade-100);\n --chat--toggle--color: var(--chat--color-white);\n\n /* Input Area */\n --chat--textarea--height: 50px;\n --chat--textarea--max-height: 30rem;\n --chat--input--font-size: inherit;\n --chat--input--border: 0;\n --chat--input--border-radius: 0;\n --chat--input--padding: 0.8rem;\n --chat--input--background: var(--chat--color-white);\n --chat--input--text-color: initial;\n --chat--input--line-height: 1.5;\n --chat--input--placeholder--font-size: var(--chat--input--font-size);\n --chat--input--border-active: 0;\n --chat--input--left--panel--width: 2rem;\n\n /* Button Styles */\n --chat--button--padding: calc(var(--chat--spacing) * 5 / 8) var(--chat--spacing);\n --chat--button--border-radius: var(--chat--border-radius);\n --chat--button--font-size: 1rem;\n --chat--button--line-height: 1;\n --chat--button--color--primary: var(--chat--color-light);\n --chat--button--background--primary: var(--chat--color--secondary);\n --chat--button--border--primary: none;\n --chat--button--color--primary--hover: var(--chat--color-light);\n --chat--button--background--primary--hover: var(--chat--color-secondary-shade-50);\n --chat--button--border--primary--hover: none;\n --chat--button--color--primary--disabled: var(--chat--color-light);\n --chat--button--background--primary--disabled: #81bbb1;\n --chat--button--border--primary--disabled: none;\n --chat--button--color--secondary: var(--chat--color-light);\n --chat--button--background--secondary: hsl(0, 0%, 58%);\n --chat--button--border--secondary: none;\n --chat--button--color--secondary--hover: var(--chat--color-light);\n --chat--button--background--secondary--hover: hsl(0, 0%, 51%);\n --chat--button--border--secondary--hover: none;\n --chat--button--color--secondary--disabled: var(--chat--color-light);\n --chat--button--background--secondary--disabled: hsl(0, 0%, 78%);\n --chat--button--border--secondary--disabled: none;\n --chat--close--button--color-hover: var(--chat--color--primary);\n\n /* Send and File Buttons */\n --chat--input--send--button--background: var(--chat--color-white);\n --chat--input--send--button--color: var(--chat--color--secondary);\n --chat--input--send--button--background-hover: var(--chat--color--primary-shade-50);\n --chat--input--send--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--input--file--button--background: var(--chat--color-white);\n --chat--input--file--button--color: var(--chat--color--secondary);\n --chat--input--file--button--background-hover: var(--chat--input--file--button--background);\n --chat--input--file--button--color-hover: var(--chat--color-secondary-shade-50);\n --chat--files-spacing: 0.25rem;\n\n /* Body and Footer */\n --chat--body--background: var(--chat--color-light);\n --chat--footer--background: var(--chat--color-light);\n --chat--footer--color: var(--chat--color-dark);\n}\n\n\n/* You can override any class styles, too. Right-click inspect in Chat UI to find class to override. */\n.chat-message {\n\tmax-width: 50%;\n}","description":"Override default styling of the public chat interface with CSS"},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"Using 'Respond to Webhook' Node","value":"responseNode","description":"Response defined in that node"}],"default":"lastNode","description":"When and how to respond to the chat","displayOptions":{"show":{"/mode":["webhook"],"/availableInChat":[false]}},"builderHint":{"propertyHint":"'streaming' (preferred for Agent-backed chats): the connected Agent streams its reply to the widget directly — no extra wiring. Place logging or side-effects on a PARALLEL branch off the trigger or Agent, never inline after the Agent. 'lastNode': the last-executed node's output is sent to the widget — that node MUST emit `{ output: '<reply text>' }` (typically the Agent itself, or a Set node re-shaping data). NEVER terminate the chain with a Data Table insert, HTTP Request, or other side-effect node — their output is not a chat reply and the widget will error. 'responseNodes' / 'responseNode': requires explicit response nodes inside the flow (`@n8n/n8n-nodes-langchain.chat` for chat-hub mode, `n8n-nodes-base.respondToWebhook` for webhook mode)."}},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"}],"default":"streaming","description":"When and how to respond to the chat","displayOptions":{"show":{"/mode":["webhook"],"/availableInChat":[true]}},"builderHint":{"propertyHint":"'streaming' (preferred for Agent-backed chats): the connected Agent streams its reply to the widget directly — no extra wiring. Place logging or side-effects on a PARALLEL branch off the trigger or Agent, never inline after the Agent. 'lastNode': the last-executed node's output is sent to the widget — that node MUST emit `{ output: '<reply text>' }` (typically the Agent itself, or a Set node re-shaping data). NEVER terminate the chain with a Data Table insert, HTTP Request, or other side-effect node — their output is not a chat reply and the widget will error. 'responseNodes' / 'responseNode': requires explicit response nodes inside the flow (`@n8n/n8n-nodes-langchain.chat` for chat-hub mode, `n8n-nodes-base.respondToWebhook` for webhook mode)."}},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"Using Response Nodes","value":"responseNodes","description":"Send responses to the chat by using one or more Chat nodes"}],"default":"lastNode","description":"When and how to respond to the chat","displayOptions":{"show":{"/mode":["hostedChat"],"/availableInChat":[false]}},"builderHint":{"propertyHint":"'streaming' (preferred for Agent-backed chats): the connected Agent streams its reply to the widget directly — no extra wiring. Place logging or side-effects on a PARALLEL branch off the trigger or Agent, never inline after the Agent. 'lastNode': the last-executed node's output is sent to the widget — that node MUST emit `{ output: '<reply text>' }` (typically the Agent itself, or a Set node re-shaping data). NEVER terminate the chain with a Data Table insert, HTTP Request, or other side-effect node — their output is not a chat reply and the widget will error. 'responseNodes' / 'responseNode': requires explicit response nodes inside the flow (`@n8n/n8n-nodes-langchain.chat` for chat-hub mode, `n8n-nodes-base.respondToWebhook` for webhook mode)."}},{"displayName":"Response Mode","name":"responseMode","type":"options","options":[{"name":"Streaming","value":"streaming","description":"Streaming response from specified nodes (e.g. Agents)"},{"name":"When Last Node Finishes","value":"lastNode","description":"Returns data of the last-executed node"},{"name":"Using Response Nodes","value":"responseNodes","description":"Send responses to the chat by using one or more Chat nodes"}],"default":"streaming","description":"When and how to respond to the chat","displayOptions":{"show":{"/mode":["hostedChat"],"/availableInChat":[true]}},"builderHint":{"propertyHint":"'streaming' (preferred for Agent-backed chats): the connected Agent streams its reply to the widget directly — no extra wiring. Place logging or side-effects on a PARALLEL branch off the trigger or Agent, never inline after the Agent. 'lastNode': the last-executed node's output is sent to the widget — that node MUST emit `{ output: '<reply text>' }` (typically the Agent itself, or a Set node re-shaping data). NEVER terminate the chain with a Data Table insert, HTTP Request, or other side-effect node — their output is not a chat reply and the widget will error. 'responseNodes' / 'responseNode': requires explicit response nodes inside the flow (`@n8n/n8n-nodes-langchain.chat` for chat-hub mode, `n8n-nodes-base.respondToWebhook` for webhook mode)."}},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}]}]},
|
|
100
101
|
{"usableAsTool":true,"displayName":"Chat","name":"chat","icon":"node:chat-trigger","iconColor":"black","group":["input"],"version":[1,1.1,1.2,1.3],"defaultVersion":1.3,"description":"Send a message into the chat","defaults":{"name":"Chat"},"builderHint":{"relatedNodes":[{"nodeType":"@n8n/n8n-nodes-langchain.chatTrigger","relationHint":"Required trigger for this node to work - must set responseMode to \"responseNodes\""}]},"codex":{"categories":["Core Nodes","HITL"],"subcategories":{"HITL":["Human in the Loop"]},"alias":["human","wait","hitl","respond","approve","confirm","send","message"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.respondtochat/"}]}},"inputs":"={{ ((parameters) => {\n const inputs = [\n {\n type: 'main',\n },\n ];\n if (parameters.options?.memoryConnection) {\n return [\n ...inputs,\n {\n type: 'ai_memory',\n displayName: 'Memory',\n maxConnections: 1,\n },\n ];\n }\n return inputs;\n})($parameter) }}","outputs":["main"],"waitingNodeTooltip":"={{ ((parameters) => {\n if (parameters?.operation === 'sendAndWait') {\n return \"Execution will continue after the user's response\";\n }\n return '';\n})($parameter) }}","webhooks":[{"name":"default","httpMethod":"GET","responseMode":"onReceived","responseData":"","path":"={{ $nodeId }}","restartWebhook":true,"isFullPath":true},{"name":"default","httpMethod":"POST","responseMode":"onReceived","responseData":"","path":"={{ $nodeId }}","restartWebhook":true,"isFullPath":true}],"properties":[{"displayName":"Verify you're using a chat trigger with the 'Response Mode' option set to 'Using Response Nodes'","name":"generalNotice","type":"notice","default":""},{"displayName":"Operation","name":"operation","type":"options","default":"send","noDataExpression":true,"options":[{"name":"Send Message","value":"send","action":"Send a message"},{"name":"Send and Wait for Response","value":"sendAndWait","action":"Send message and wait for response"}],"displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Message","name":"message","type":"string","default":"","required":true,"typeOptions":{"rows":4}},{"displayName":"Wait for User Reply","name":"waitUserReply","type":"boolean","default":true,"noDataExpression":true,"displayOptions":{"show":{"@version":[{"_cnd":{"lt":1.1}}]}}},{"displayName":"Response Type","name":"responseType","type":"options","default":"freeTextChat","options":[{"name":"Approval","value":"approval","description":"User can approve/disapprove from within the message"},{"name":"Free Text","value":"freeTextChat","description":"User can submit a response in the chat"}],"displayOptions":{"show":{"operation":["sendAndWait"]}}},{"displayName":"Block User Input","name":"blockUserInput","type":"boolean","default":false,"description":"Whether to block input from the user while waiting for approval","displayOptions":{"show":{"responseType":["approval"]}}},{"displayName":"Define Form","name":"defineForm","type":"options","noDataExpression":true,"options":[{"name":"Using Fields Below","value":"fields"},{"name":"Using JSON","value":"json"}],"default":"fields","displayOptions":{"show":{"responseType":["customForm"],"operation":["sendAndWait"]}}},{"displayName":"Form Fields","name":"jsonOutput","type":"json","typeOptions":{"rows":5},"default":"[\n {\n \"fieldLabel\": \"Name\",\n \"placeholder\": \"enter your name\",\n \"requiredField\": true\n },\n {\n \"fieldLabel\": \"Age\",\n \"fieldType\": \"number\",\n \"placeholder\": \"enter your age\"\n },\n {\n \"fieldLabel\": \"Email\",\n \"fieldType\": \"email\",\n \"requiredField\": true\n },\n {\n \"fieldLabel\": \"Textarea\",\n \"fieldType\": \"textarea\"\n },\n {\n \"fieldLabel\": \"Dropdown Options\",\n \"fieldType\": \"dropdown\",\n \"fieldOptions\": {\n \"values\": [\n {\n \"option\": \"option 1\"\n },\n {\n \"option\": \"option 2\"\n }\n ]\n },\n \"requiredField\": true\n },\n {\n \"fieldLabel\": \"Checkboxes\",\n \"fieldType\": \"checkbox\",\n \"fieldOptions\": {\n \"values\": [\n {\n \"option\": \"option 1\"\n },\n {\n \"option\": \"option 2\"\n }\n ]\n }\n },\n {\n \"fieldLabel\": \"Radio\",\n \"fieldType\": \"radio\",\n \"fieldOptions\": {\n \"values\": [\n {\n \"option\": \"option 1\"\n },\n {\n \"option\": \"option 2\"\n }\n ]\n }\n },\n {\n \"fieldLabel\": \"Email\",\n \"fieldType\": \"email\",\n \"placeholder\": \"me@mail.con\"\n },\n {\n \"fieldLabel\": \"File\",\n \"fieldType\": \"file\",\n \"multipleFiles\": true,\n \"acceptFileTypes\": \".jpg, .png\"\n },\n {\n \"fieldLabel\": \"Number\",\n \"fieldType\": \"number\"\n },\n {\n \"fieldLabel\": \"Password\",\n \"fieldType\": \"password\"\n }\n]\n","validateType":"form-fields","ignoreValidationDuringExecution":true,"hint":"<a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.form/\" target=\"_blank\">See docs</a> for field syntax","displayOptions":{"show":{"defineForm":["json"],"responseType":["customForm"],"operation":["sendAndWait"]}}},{"displayName":"Form Elements","name":"formFields","placeholder":"Add Form Element","type":"fixedCollection","default":{},"typeOptions":{"multipleValues":true,"sortable":true,"fixedCollection":{"itemTitle":"={{ $collection.item.properties.find(p => p.name === \"fieldType\").options.find(o => o.value === $collection.item.value.fieldType).name }}"}},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Field Name","name":"fieldName","description":"The name of the field, used in input attributes and referenced by the workflow","required":true,"type":"string","default":"","displayOptions":{"hide":{"fieldType":["html"]},"show":{"@version":[2.4]}}},{"displayName":"Label","name":"fieldLabel","type":"string","default":"","placeholder":"e.g. What is your name?","description":"Label that appears above the input field","required":true,"displayOptions":{"hide":{"fieldType":["hiddenField","html"]},"show":{"@version":[{"_cnd":{"gte":2.4}}]}}},{"displayName":"Field Name","name":"fieldLabel","type":"string","default":"","placeholder":"e.g. What is your name?","description":"Label that appears above the input field","required":true,"displayOptions":{"hide":{"fieldType":["hiddenField","html"]},"show":{"@version":[{"_cnd":{"lt":2.4}}]}}},{"displayName":"Field Name","name":"fieldName","description":"The name of the field, used in input attributes and referenced by the workflow","type":"string","default":"","displayOptions":{"show":{"fieldType":["hiddenField"],"@version":[{"_cnd":{"lt":2.4}}]}}},{"displayName":"Element Type","name":"fieldType","type":"options","default":"text","description":"The type of field to add to the form","options":[{"name":"Checkboxes","value":"checkbox"},{"name":"Custom HTML","value":"html"},{"name":"Date","value":"date"},{"name":"Dropdown","value":"dropdown"},{"name":"Email","value":"email"},{"name":"File","value":"file"},{"name":"Hidden Field","value":"hiddenField"},{"name":"Number","value":"number"},{"name":"Password","value":"password"},{"name":"Radio Buttons","value":"radio"},{"name":"Text Input","value":"text"},{"name":"Textarea","value":"textarea"}],"required":true},{"displayName":"Element Name","name":"elementName","type":"string","default":"","placeholder":"e.g. content-section","description":"Optional field. It can be used to include the html in the output.","displayOptions":{"show":{"fieldType":["html"]}}},{"displayName":"Custom Field Name","name":"fieldName","description":"The name of the field, used in input attributes and referenced by the workflow","type":"string","default":"","displayOptions":{"hide":{"fieldType":["html"]},"show":{"@version":[{"_cnd":{"gte":2.5}}]}}},{"displayName":"Placeholder","name":"placeholder","description":"Sample text to display inside the field","type":"string","default":"","displayOptions":{"hide":{"fieldType":["dropdown","date","file","html","hiddenField","radio","checkbox"]}}},{"displayName":"Default Value","name":"defaultValue","description":"Default value that will be pre-filled in the form field","type":"string","default":"","displayOptions":{"show":{"fieldType":["text","number","email","textarea"]}}},{"displayName":"Default Value","name":"defaultValue","description":"Default date value that will be pre-filled in the form field (format: YYYY-MM-DD)","type":"dateTime","typeOptions":{"dateOnly":true},"default":"","displayOptions":{"show":{"fieldType":["date"]}}},{"displayName":"Default Value","name":"defaultValue","description":"Default value that will be pre-selected. Must match one of the option labels.","type":"string","default":"","displayOptions":{"show":{"fieldType":["dropdown","radio"]}}},{"displayName":"Default Value","name":"defaultValue","description":"Default value(s) that will be pre-selected. Must match one or multiple of the option labels. Separate multiple pre-selected options with a comma.","type":"string","default":"","displayOptions":{"show":{"fieldType":["checkbox"]}}},{"displayName":"Field Value","name":"fieldValue","description":"Input value can be set here or will be passed as a query parameter via Field Name if no value is set","type":"string","default":"","displayOptions":{"show":{"fieldType":["hiddenField"]}}},{"displayName":"Field Options","name":"fieldOptions","placeholder":"Add Field Option","description":"List of options that can be selected from the dropdown","type":"fixedCollection","default":{"values":[{"option":""}]},"required":true,"displayOptions":{"show":{"fieldType":["dropdown"]}},"typeOptions":{"multipleValues":true,"sortable":true},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Option","name":"option","type":"string","default":""}]}]},{"displayName":"Checkboxes","name":"fieldOptions","placeholder":"Add Checkbox","type":"fixedCollection","default":{"values":[{"option":""}]},"required":true,"displayOptions":{"show":{"fieldType":["checkbox"]}},"typeOptions":{"multipleValues":true,"sortable":true},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Checkbox Label","name":"option","type":"string","default":""}]}]},{"displayName":"Radio Buttons","name":"fieldOptions","placeholder":"Add Radio Button","type":"fixedCollection","default":{"values":[{"option":""}]},"required":true,"displayOptions":{"show":{"fieldType":["radio"]}},"typeOptions":{"multipleValues":true,"sortable":true},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Radio Button Label","name":"option","type":"string","default":""}]}]},{"displayName":"Multiple Choice is a legacy option, please use Checkboxes or Radio Buttons field type instead","name":"multiselectLegacyNotice","type":"notice","default":"","displayOptions":{"show":{"multiselect":[true],"fieldType":["dropdown"],"@version":[{"_cnd":{"lt":2.3}}]}}},{"displayName":"Multiple Choice","name":"multiselect","type":"boolean","default":false,"description":"Whether to allow the user to select multiple options from the dropdown list","displayOptions":{"show":{"fieldType":["dropdown"],"@version":[{"_cnd":{"lt":2.3}}]}}},{"displayName":"Limit Selection","name":"limitSelection","type":"options","default":"unlimited","options":[{"name":"Exact Number","value":"exact"},{"name":"Range","value":"range"},{"name":"Unlimited","value":"unlimited"}],"displayOptions":{"show":{"fieldType":["checkbox"]}}},{"displayName":"Number of Selections","name":"numberOfSelections","type":"number","default":1,"typeOptions":{"numberPrecision":0,"minValue":1,"showEvenWhenOptional":true},"displayOptions":{"show":{"fieldType":["checkbox"],"limitSelection":["exact"]}}},{"displayName":"Minimum Selections","name":"minSelections","type":"number","default":0,"typeOptions":{"numberPrecision":0,"minValue":0,"showEvenWhenOptional":true},"displayOptions":{"show":{"fieldType":["checkbox"],"limitSelection":["range"]}}},{"displayName":"Maximum Selections","name":"maxSelections","type":"number","default":1,"typeOptions":{"numberPrecision":0,"minValue":1,"showEvenWhenOptional":true},"displayOptions":{"show":{"fieldType":["checkbox"],"limitSelection":["range"]}}},{"displayName":"HTML","name":"html","typeOptions":{"editor":"htmlEditor"},"type":"string","noDataExpression":true,"default":"<!-- Your custom HTML here --->\n\n\n","description":"HTML elements to display on the form page","hint":"Does not accept <code><script></code>, <code><style></code> or <code><input></code> tags","displayOptions":{"show":{"fieldType":["html"]}}},{"displayName":"Multiple Files","name":"multipleFiles","type":"boolean","default":true,"description":"Whether to allow the user to select multiple files from the file input or just one","displayOptions":{"show":{"fieldType":["file"]}}},{"displayName":"Accepted File Types","name":"acceptFileTypes","type":"string","default":"","description":"Comma-separated list of allowed file extensions","hint":"Leave empty to allow all file types","placeholder":"e.g. .jpg, .png","displayOptions":{"show":{"fieldType":["file"]}}},{"displayName":"The displayed date is formatted based on the locale of the user's browser","name":"formatDate","type":"notice","default":"","displayOptions":{"show":{"fieldType":["date"]}}},{"displayName":"Required Field","name":"requiredField","type":"boolean","default":false,"description":"Whether to require the user to enter a value for this field before submitting the form","displayOptions":{"hide":{"fieldType":["html","hiddenField"]}}}]}],"displayOptions":{"show":{"@version":[{"_cnd":{"lt":2.5}}],"defineForm":["fields"],"responseType":["customForm"],"operation":["sendAndWait"]}}},{"displayName":"Form Elements","name":"formFields","placeholder":"Add Form Element","type":"fixedCollection","default":{},"typeOptions":{"multipleValues":true,"sortable":true,"hideOptionalFields":true,"addOptionalFieldButtonText":"Add Attributes","fixedCollection":{"itemTitle":"={{ $collection.item.properties.find(p => p.name === \"fieldType\").options.find(o => o.value === $collection.item.value.fieldType).name }}"}},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Field Name","name":"fieldName","description":"The name of the field, used in input attributes and referenced by the workflow","required":true,"type":"string","default":"","displayOptions":{"hide":{"fieldType":["html"]},"show":{"@version":[2.4]}}},{"displayName":"Label","name":"fieldLabel","type":"string","default":"","placeholder":"e.g. What is your name?","description":"Label that appears above the input field","required":true,"displayOptions":{"hide":{"fieldType":["hiddenField","html"]},"show":{"@version":[{"_cnd":{"gte":2.4}}]}}},{"displayName":"Field Name","name":"fieldLabel","type":"string","default":"","placeholder":"e.g. What is your name?","description":"Label that appears above the input field","required":true,"displayOptions":{"hide":{"fieldType":["hiddenField","html"]},"show":{"@version":[{"_cnd":{"lt":2.4}}]}}},{"displayName":"Field Name","name":"fieldName","description":"The name of the field, used in input attributes and referenced by the workflow","type":"string","default":"","displayOptions":{"show":{"fieldType":["hiddenField"],"@version":[{"_cnd":{"lt":2.4}}]}}},{"displayName":"Element Type","name":"fieldType","type":"options","default":"text","description":"The type of field to add to the form","options":[{"name":"Checkboxes","value":"checkbox"},{"name":"Custom HTML","value":"html"},{"name":"Date","value":"date"},{"name":"Dropdown","value":"dropdown"},{"name":"Email","value":"email"},{"name":"File","value":"file"},{"name":"Hidden Field","value":"hiddenField"},{"name":"Number","value":"number"},{"name":"Password","value":"password"},{"name":"Radio Buttons","value":"radio"},{"name":"Text Input","value":"text"},{"name":"Textarea","value":"textarea"}],"required":true},{"displayName":"Element Name","name":"elementName","type":"string","default":"","placeholder":"e.g. content-section","description":"Optional field. It can be used to include the html in the output.","displayOptions":{"show":{"fieldType":["html"]}}},{"displayName":"Custom Field Name","name":"fieldName","description":"The name of the field, used in input attributes and referenced by the workflow","type":"string","default":"","displayOptions":{"hide":{"fieldType":["html"]},"show":{"@version":[{"_cnd":{"gte":2.5}}]}}},{"displayName":"Placeholder","name":"placeholder","description":"Sample text to display inside the field","type":"string","default":"","displayOptions":{"hide":{"fieldType":["dropdown","date","file","html","hiddenField","radio","checkbox"]}}},{"displayName":"Default Value","name":"defaultValue","description":"Default value that will be pre-filled in the form field","type":"string","default":"","displayOptions":{"show":{"fieldType":["text","number","email","textarea"]}}},{"displayName":"Default Value","name":"defaultValue","description":"Default date value that will be pre-filled in the form field (format: YYYY-MM-DD)","type":"dateTime","typeOptions":{"dateOnly":true},"default":"","displayOptions":{"show":{"fieldType":["date"]}}},{"displayName":"Default Value","name":"defaultValue","description":"Default value that will be pre-selected. Must match one of the option labels.","type":"string","default":"","displayOptions":{"show":{"fieldType":["dropdown","radio"]}}},{"displayName":"Default Value","name":"defaultValue","description":"Default value(s) that will be pre-selected. Must match one or multiple of the option labels. Separate multiple pre-selected options with a comma.","type":"string","default":"","displayOptions":{"show":{"fieldType":["checkbox"]}}},{"displayName":"Field Value","name":"fieldValue","description":"Input value can be set here or will be passed as a query parameter via Field Name if no value is set","type":"string","default":"","displayOptions":{"show":{"fieldType":["hiddenField"]}}},{"displayName":"Field Options","name":"fieldOptions","placeholder":"Add Field Option","description":"List of options that can be selected from the dropdown","type":"fixedCollection","default":{"values":[{"option":""}]},"required":true,"displayOptions":{"show":{"fieldType":["dropdown"]}},"typeOptions":{"multipleValues":true,"sortable":true},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Option","name":"option","type":"string","default":""}]}]},{"displayName":"Checkboxes","name":"fieldOptions","placeholder":"Add Checkbox","type":"fixedCollection","default":{"values":[{"option":""}]},"required":true,"displayOptions":{"show":{"fieldType":["checkbox"]}},"typeOptions":{"multipleValues":true,"sortable":true},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Checkbox Label","name":"option","type":"string","default":""}]}]},{"displayName":"Radio Buttons","name":"fieldOptions","placeholder":"Add Radio Button","type":"fixedCollection","default":{"values":[{"option":""}]},"required":true,"displayOptions":{"show":{"fieldType":["radio"]}},"typeOptions":{"multipleValues":true,"sortable":true},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Radio Button Label","name":"option","type":"string","default":""}]}]},{"displayName":"Multiple Choice is a legacy option, please use Checkboxes or Radio Buttons field type instead","name":"multiselectLegacyNotice","type":"notice","default":"","displayOptions":{"show":{"multiselect":[true],"fieldType":["dropdown"],"@version":[{"_cnd":{"lt":2.3}}]}}},{"displayName":"Multiple Choice","name":"multiselect","type":"boolean","default":false,"description":"Whether to allow the user to select multiple options from the dropdown list","displayOptions":{"show":{"fieldType":["dropdown"],"@version":[{"_cnd":{"lt":2.3}}]}}},{"displayName":"Limit Selection","name":"limitSelection","type":"options","default":"unlimited","options":[{"name":"Exact Number","value":"exact"},{"name":"Range","value":"range"},{"name":"Unlimited","value":"unlimited"}],"displayOptions":{"show":{"fieldType":["checkbox"]}}},{"displayName":"Number of Selections","name":"numberOfSelections","type":"number","default":1,"typeOptions":{"numberPrecision":0,"minValue":1,"showEvenWhenOptional":true},"displayOptions":{"show":{"fieldType":["checkbox"],"limitSelection":["exact"]}}},{"displayName":"Minimum Selections","name":"minSelections","type":"number","default":0,"typeOptions":{"numberPrecision":0,"minValue":0,"showEvenWhenOptional":true},"displayOptions":{"show":{"fieldType":["checkbox"],"limitSelection":["range"]}}},{"displayName":"Maximum Selections","name":"maxSelections","type":"number","default":1,"typeOptions":{"numberPrecision":0,"minValue":1,"showEvenWhenOptional":true},"displayOptions":{"show":{"fieldType":["checkbox"],"limitSelection":["range"]}}},{"displayName":"HTML","name":"html","typeOptions":{"editor":"htmlEditor"},"type":"string","noDataExpression":true,"default":"<!-- Your custom HTML here --->\n\n\n","description":"HTML elements to display on the form page","hint":"Does not accept <code><script></code>, <code><style></code> or <code><input></code> tags","displayOptions":{"show":{"fieldType":["html"]}}},{"displayName":"Multiple Files","name":"multipleFiles","type":"boolean","default":true,"description":"Whether to allow the user to select multiple files from the file input or just one","displayOptions":{"show":{"fieldType":["file"]}}},{"displayName":"Accepted File Types","name":"acceptFileTypes","type":"string","default":"","description":"Comma-separated list of allowed file extensions","hint":"Leave empty to allow all file types","placeholder":"e.g. .jpg, .png","displayOptions":{"show":{"fieldType":["file"]}}},{"displayName":"The displayed date is formatted based on the locale of the user's browser","name":"formatDate","type":"notice","default":"","displayOptions":{"show":{"fieldType":["date"]}}},{"displayName":"Required Field","name":"requiredField","type":"boolean","default":false,"description":"Whether to require the user to enter a value for this field before submitting the form","displayOptions":{"hide":{"fieldType":["html","hiddenField"]}}}]}],"displayOptions":{"show":{"@version":[{"_cnd":{"gte":2.5}}],"defineForm":["fields"],"responseType":["customForm"],"operation":["sendAndWait"]}}},{"displayName":"Approval Options","name":"approvalOptions","type":"fixedCollection","placeholder":"Add option","default":{},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Type of Approval","name":"approvalType","type":"options","placeholder":"Add option","default":"single","options":[{"name":"Approve Only","value":"single"},{"name":"Approve and Disapprove","value":"double"}]},{"displayName":"Approve Button Label","name":"approveLabel","type":"string","default":"Approve","displayOptions":{"show":{"approvalType":["single","double"]}}},{"displayName":"Approve Button Style","name":"buttonApprovalStyle","type":"options","default":"primary","options":[{"name":"Primary","value":"primary"},{"name":"Secondary","value":"secondary"}],"displayOptions":{"show":{"approvalType":["single","double"]}}},{"displayName":"Disapprove Button Label","name":"disapproveLabel","type":"string","default":"Decline","displayOptions":{"show":{"approvalType":["double"]}}},{"displayName":"Disapprove Button Style","name":"buttonDisapprovalStyle","type":"options","default":"secondary","options":[{"name":"Primary","value":"primary"},{"name":"Secondary","value":"secondary"}],"displayOptions":{"show":{"approvalType":["double"]}}}]}],"displayOptions":{"show":{"responseType":["approval"],"operation":["sendAndWait"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"displayOptions":{"hide":{"@tool":[true]}},"options":[{"displayName":"Add Memory Input Connection","name":"memoryConnection","type":"boolean","default":false,"displayOptions":{"hide":{"/responseType":["approval"]}}},{"displayName":"Limit Wait Time","name":"limitWaitTime","type":"fixedCollection","description":"Whether to limit the time this node should wait for a user response before execution resumes","default":{"values":{"limitType":"afterTimeInterval","resumeAmount":45,"resumeUnit":"minutes"}},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Limit Type","name":"limitType","type":"options","default":"afterTimeInterval","description":"Sets the condition for the execution to resume. Can be a specified date or after some time.","options":[{"name":"After Time Interval","description":"Waits for a certain amount of time","value":"afterTimeInterval"},{"name":"At Specified Time","description":"Waits until the set date and time to continue","value":"atSpecifiedTime"}]},{"displayName":"Amount","name":"resumeAmount","type":"number","displayOptions":{"show":{"limitType":["afterTimeInterval"]}},"typeOptions":{"minValue":0,"numberPrecision":2},"default":1,"description":"The time to wait"},{"displayName":"Unit","name":"resumeUnit","type":"options","displayOptions":{"show":{"limitType":["afterTimeInterval"]}},"options":[{"name":"Minutes","value":"minutes"},{"name":"Hours","value":"hours"},{"name":"Days","value":"days"}],"default":"hours","description":"Unit of the interval value"},{"displayName":"Max Date and Time","name":"maxDateAndTime","type":"dateTime","displayOptions":{"show":{"limitType":["atSpecifiedTime"]}},"default":"","description":"Continue execution after the specified date and time"}]}],"displayOptions":{"show":{"/waitUserReply":[true]}}},{"displayName":"Limit Wait Time","name":"limitWaitTime","type":"fixedCollection","description":"Whether to limit the time this node should wait for a user response before execution resumes","default":{"values":{"limitType":"afterTimeInterval","resumeAmount":45,"resumeUnit":"minutes"}},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Limit Type","name":"limitType","type":"options","default":"afterTimeInterval","description":"Sets the condition for the execution to resume. Can be a specified date or after some time.","options":[{"name":"After Time Interval","description":"Waits for a certain amount of time","value":"afterTimeInterval"},{"name":"At Specified Time","description":"Waits until the set date and time to continue","value":"atSpecifiedTime"}]},{"displayName":"Amount","name":"resumeAmount","type":"number","displayOptions":{"show":{"limitType":["afterTimeInterval"]}},"typeOptions":{"minValue":0,"numberPrecision":2},"default":1,"description":"The time to wait"},{"displayName":"Unit","name":"resumeUnit","type":"options","displayOptions":{"show":{"limitType":["afterTimeInterval"]}},"options":[{"name":"Minutes","value":"minutes"},{"name":"Hours","value":"hours"},{"name":"Days","value":"days"}],"default":"hours","description":"Unit of the interval value"},{"displayName":"Max Date and Time","name":"maxDateAndTime","type":"dateTime","displayOptions":{"show":{"limitType":["atSpecifiedTime"]}},"default":"","description":"Continue execution after the specified date and time"}]}],"displayOptions":{"show":{"/operation":["sendAndWait"]}}},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}]},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Limit Wait Time","name":"limitWaitTime","type":"fixedCollection","description":"Whether to limit the time this node should wait for a user response before execution resumes","default":{"values":{"limitType":"afterTimeInterval","resumeAmount":45,"resumeUnit":"minutes"}},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Limit Type","name":"limitType","type":"options","default":"afterTimeInterval","description":"Sets the condition for the execution to resume. Can be a specified date or after some time.","options":[{"name":"After Time Interval","description":"Waits for a certain amount of time","value":"afterTimeInterval"},{"name":"At Specified Time","description":"Waits until the set date and time to continue","value":"atSpecifiedTime"}]},{"displayName":"Amount","name":"resumeAmount","type":"number","displayOptions":{"show":{"limitType":["afterTimeInterval"]}},"typeOptions":{"minValue":0,"numberPrecision":2},"default":1,"description":"The time to wait"},{"displayName":"Unit","name":"resumeUnit","type":"options","displayOptions":{"show":{"limitType":["afterTimeInterval"]}},"options":[{"name":"Minutes","value":"minutes"},{"name":"Hours","value":"hours"},{"name":"Days","value":"days"}],"default":"hours","description":"Unit of the interval value"},{"displayName":"Max Date and Time","name":"maxDateAndTime","type":"dateTime","displayOptions":{"show":{"limitType":["atSpecifiedTime"]}},"default":"","description":"Continue execution after the specified date and time"}]}]},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}],"displayOptions":{"show":{"@tool":[true],"/waitUserReply":[true]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Limit Wait Time","name":"limitWaitTime","type":"fixedCollection","description":"Whether to limit the time this node should wait for a user response before execution resumes","default":{"values":{"limitType":"afterTimeInterval","resumeAmount":45,"resumeUnit":"minutes"}},"options":[{"displayName":"Values","name":"values","values":[{"displayName":"Limit Type","name":"limitType","type":"options","default":"afterTimeInterval","description":"Sets the condition for the execution to resume. Can be a specified date or after some time.","options":[{"name":"After Time Interval","description":"Waits for a certain amount of time","value":"afterTimeInterval"},{"name":"At Specified Time","description":"Waits until the set date and time to continue","value":"atSpecifiedTime"}]},{"displayName":"Amount","name":"resumeAmount","type":"number","displayOptions":{"show":{"limitType":["afterTimeInterval"]}},"typeOptions":{"minValue":0,"numberPrecision":2},"default":1,"description":"The time to wait"},{"displayName":"Unit","name":"resumeUnit","type":"options","displayOptions":{"show":{"limitType":["afterTimeInterval"]}},"options":[{"name":"Minutes","value":"minutes"},{"name":"Hours","value":"hours"},{"name":"Days","value":"days"}],"default":"hours","description":"Unit of the interval value"},{"displayName":"Max Date and Time","name":"maxDateAndTime","type":"dateTime","displayOptions":{"show":{"limitType":["atSpecifiedTime"]}},"default":"","description":"Continue execution after the specified date and time"}]}]},{"displayName":"Auto-save highlighted data","name":"autoSaveHighlightedData","type":"boolean","default":true,"description":"Whether to automatically save <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/\" target=\"_blank\">highlighted data</a>. This data can then be used to filter executions in the Executions view. Available on Pro and Enterprise plans in n8n Cloud, and on Enterprise or registered Community Edition for self-hosted. Defaults to true."}],"displayOptions":{"show":{"@tool":[true],"/operation":["sendAndWait"]}}}]},
|
|
101
102
|
{"displayName":"Azure AI Search Vector Store","name":"vectorStoreAzureAISearch","description":"Work with your data in Azure AI Search Vector Store","group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"Azure AI Search Vector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreazureaisearch/"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"azureAiSearchApi","required":true}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"},{"name":"Update Documents","value":"update","description":"Update documents in vector store by ID","action":"Update vector store documents"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Work with your data in Azure AI Search Vector Store","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"Index Name","name":"indexName","type":"string","default":"n8n-vectorstore","description":"The name of the Azure AI Search index. Will be created automatically if it does not exist.","required":true},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Clear Index","name":"clearIndex","type":"boolean","default":false,"description":"Whether to delete and recreate the index before inserting new data. Warning: This will reset any custom index configuration (semantic ranking, analyzers, etc.) to defaults."},{"displayName":"Metadata Keys to Insert","name":"metadataKeysToInsert","type":"string","default":"","placeholder":"e.g., source,author,category","description":"Comma-separated list of metadata keys to store in Azure AI Search. Leave empty to include all metadata. Azure AI Search stores metadata in an \"attributes\" array format."}],"displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Query Type","name":"queryType","type":"options","default":"hybrid","description":"The type of search query to perform","options":[{"name":"Vector","value":"vector","description":"Vector similarity search only"},{"name":"Hybrid","value":"hybrid","description":"Combines vector and keyword search (recommended)"},{"name":"Semantic Hybrid","value":"semanticHybrid","description":"Hybrid search with semantic ranking (requires Basic tier or higher)"}]},{"displayName":"Filter","name":"filter","type":"string","default":"","description":"Filter results using OData syntax. Use metadata/fieldName for metadata fields. <a href=\"https://learn.microsoft.com/en-us/azure/search/search-query-odata-filter\" target=\"_blank\">Learn more</a>.","placeholder":"metadata/category eq 'technology' and metadata/author eq 'John'"},{"displayName":"Semantic Configuration","name":"semanticConfiguration","type":"string","default":"","description":"Name of the semantic configuration for semantic ranking (optional)","displayOptions":{"show":{"queryType":["semanticHybrid"]}}}],"displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Query Type","name":"queryType","type":"options","default":"hybrid","description":"The type of search query to perform","options":[{"name":"Vector","value":"vector","description":"Vector similarity search only"},{"name":"Hybrid","value":"hybrid","description":"Combines vector and keyword search (recommended)"},{"name":"Semantic Hybrid","value":"semanticHybrid","description":"Hybrid search with semantic ranking (requires Basic tier or higher)"}]},{"displayName":"Filter","name":"filter","type":"string","default":"","description":"Filter results using OData syntax. Use metadata/fieldName for metadata fields. <a href=\"https://learn.microsoft.com/en-us/azure/search/search-query-odata-filter\" target=\"_blank\">Learn more</a>.","placeholder":"metadata/category eq 'technology' and metadata/author eq 'John'"},{"displayName":"Semantic Configuration","name":"semanticConfiguration","type":"string","default":"","description":"Name of the semantic configuration for semantic ranking (optional)","displayOptions":{"show":{"queryType":["semanticHybrid"]}}}],"displayOptions":{"show":{"mode":["retrieve"]}}}],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreAzureAISearch/azure-aisearch.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreAzureAISearch/azure-aisearch.svg"}},
|
|
102
103
|
{"displayName":"Simple Vector Store","name":"vectorStoreInMemory","description":"The easiest way to experiment with vector stores, without external setup.","icon":"node:simple-vector-store","iconColor":"black","group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"Simple Vector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["For Beginners"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory/"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","relatedNodes":[{"nodeType":"@n8n/n8n-nodes-langchain.retrieverVectorStore","relationHint":"Connect to enable retrieval-augmented generation (RAG) for AI Agent workflows"}],"extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. The easiest way to experiment with vector stores, without external setup.","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"Memory Key","name":"memoryKey","type":"string","default":"vector_store_key","description":"The key to use to store the vector memory in the workflow data. The key will be prefixed with the workflow ID to avoid collisions.","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.1}}]}}},{"displayName":"Memory Key","name":"memoryKey","type":"resourceLocator","required":true,"default":{"mode":"list","value":"vector_store_key"},"description":"The key to use to store the vector memory in the workflow data. These keys are shared between workflows.","displayOptions":{"show":{"@version":[{"_cnd":{"gte":1.2}}]}},"modes":[{"displayName":"From List","name":"list","type":"list","typeOptions":{"searchListMethod":"vectorStoresSearch","searchable":true,"allowNewResource":{"label":"resourceLocator.mode.list.addNewResource.vectorStoreInMemory","defaultName":"vector_store_key","method":"createVectorStore"}}},{"displayName":"Manual","name":"id","type":"string","placeholder":"vector_store_key"}]},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Clear Store","name":"clearStore","type":"boolean","default":false,"description":"Whether to clear the store before inserting new data","displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"<strong>For experimental use only</strong>: Data is stored in memory and will be lost if n8n restarts. Data may also be cleared if available memory gets low, and is accessible to all users of this instance. <a href=\"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory/\">More info</a>","name":"notice","type":"notice","default":"","displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"<strong>For experimental use only</strong>: Data is stored in memory and will be lost if n8n restarts. Data may also be cleared if available memory gets low, and is accessible to all users of this instance. <a href=\"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory/\">More info</a>","name":"notice","type":"notice","default":"","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"<strong>For experimental use only</strong>: Data is stored in memory and will be lost if n8n restarts. Data may also be cleared if available memory gets low, and is accessible to all users of this instance. <a href=\"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory/\">More info</a>","name":"notice","type":"notice","default":"","displayOptions":{"show":{"mode":["retrieve"]}}}]},
|
|
@@ -104,6 +105,7 @@
|
|
|
104
105
|
{"displayName":"In Memory Vector Store Load","name":"vectorStoreInMemoryLoad","icon":"fa:database","group":["transform"],"version":1,"hidden":true,"description":"Load embedded data from an in-memory vector store","defaults":{"name":"In Memory Vector Store Load"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory/"}]}},"inputs":[{"displayName":"Embedding","maxConnections":1,"type":"ai_embedding","required":true}],"outputs":["ai_vectorStore"],"outputNames":["Vector Store"],"properties":[{"displayName":"Memory Key","name":"memoryKey","type":"string","default":"vector_store_key","description":"The key to use to store the vector memory in the workflow data. The key will be prefixed with the workflow ID to avoid collisions."}]},
|
|
105
106
|
{"displayName":"Milvus Vector Store","name":"vectorStoreMilvus","description":"Work with your data in Milvus Vector Store","group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"Milvus Vector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoremilvus/"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"milvusApi","required":true}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Work with your data in Milvus Vector Store","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"Milvus Collection","name":"milvusCollection","type":"resourceLocator","default":{"mode":"list","value":""},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","typeOptions":{"searchListMethod":"milvusCollectionsSearch"}},{"displayName":"ID","name":"id","type":"string"}]},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Clear Collection","name":"clearCollection","type":"boolean","default":false,"description":"Whether to clear the collection before inserting new data"}],"displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}}],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreMilvus/milvus-icon-black.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreMilvus/milvus-icon-white.svg"}},
|
|
106
107
|
{"displayName":"MongoDB Atlas Vector Store","name":"vectorStoreMongoDBAtlas","description":"Work with your data in MongoDB Atlas Vector Store","group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"MongoDB Atlas Vector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoremongodbatlas/"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"mongoDb","required":true}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"},{"name":"Update Documents","value":"update","description":"Update documents in vector store by ID","action":"Update vector store documents"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Work with your data in MongoDB Atlas Vector Store","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"MongoDB Collection","name":"mongoCollection","type":"resourceLocator","default":{"mode":"list","value":""},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","typeOptions":{"searchListMethod":"mongoCollectionSearch"}},{"displayName":"Name","name":"name","type":"string","placeholder":"e.g. my_collection"}]},{"displayName":"Embedding","name":"embedding","type":"string","default":"embedding","description":"The field with the embedding array","required":true},{"displayName":"Metadata Field","name":"metadata_field","type":"string","default":"text","description":"The text field of the raw data","required":true},{"displayName":"Vector Index Name","name":"vectorIndexName","type":"string","default":"","description":"The name of the vector index","required":true},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Clear Namespace","name":"clearNamespace","type":"boolean","default":false,"description":"Whether to clear documents in the namespace before inserting new data"},{"displayName":"Namespace","name":"namespace","type":"string","description":"Logical partition for documents. Uses metadata.namespace field for filtering.","default":""}],"displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Namespace","name":"namespace","type":"string","description":"Logical partition for documents. Uses metadata.namespace field for filtering.","default":""},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]},{"displayName":"Pre Filter","name":"preFilter","type":"json","typeOptions":{"alwaysOpenEditWindow":true},"default":"","placeholder":"{ \"key\": \"value\" }","hint":"This is a filter applied in the $vectorSearch stage <a href=\"https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/#atlas-vector-search-pre-filter\">here</a>","required":true,"description":"MongoDB Atlas Vector Search pre-filter"},{"displayName":"Post Filter Pipeline","name":"postFilterPipeline","type":"json","typeOptions":{"alwaysOpenEditWindow":true},"default":"","placeholder":"[{ \"$match\": { \"$gt\": \"1950-01-01\" }, ... }]","hint":"Learn more about aggregation pipeline <a href=\"https://docs.mongodb.com/manual/core/aggregation-pipeline/\">here</a>","required":true,"description":"MongoDB aggregation pipeline in JSON format"}],"displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Namespace","name":"namespace","type":"string","description":"Logical partition for documents. Uses metadata.namespace field for filtering.","default":""},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]},{"displayName":"Pre Filter","name":"preFilter","type":"json","typeOptions":{"alwaysOpenEditWindow":true},"default":"","placeholder":"{ \"key\": \"value\" }","hint":"This is a filter applied in the $vectorSearch stage <a href=\"https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/#atlas-vector-search-pre-filter\">here</a>","required":true,"description":"MongoDB Atlas Vector Search pre-filter"},{"displayName":"Post Filter Pipeline","name":"postFilterPipeline","type":"json","typeOptions":{"alwaysOpenEditWindow":true},"default":"","placeholder":"[{ \"$match\": { \"$gt\": \"1950-01-01\" }, ... }]","hint":"Learn more about aggregation pipeline <a href=\"https://docs.mongodb.com/manual/core/aggregation-pipeline/\">here</a>","required":true,"description":"MongoDB aggregation pipeline in JSON format"}],"displayOptions":{"show":{"mode":["retrieve"]}}}],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreMongoDBAtlas/mongodb.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreMongoDBAtlas/mongodb.dark.svg"}},
|
|
108
|
+
{"displayName":"Oracle Database Vector Store","name":"vectorStoreOracleDBVector","description":"Work with your data in OracleDB vector support","group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"Oracle Database Vector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreoracledb/"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"oracleDBApi","required":true,"testedBy":"oracleDBConnectionTest"}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Work with your data in OracleDB vector support","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"Table Name","name":"tableName","type":"string","default":"n8n_vectors","description":"The table name to store the vectors in. If table does not exist, it will be created."},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[],"displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Distance Strategy","name":"distanceStrategy","type":"options","default":"COSINE","description":"The method to calculate the distance between two vectors","options":[{"name":"Cosine","value":"COSINE"},{"name":"Inner Product","value":"DOT"},{"name":"Euclidean","value":"EUCLIDEAN"},{"name":"Manhattan","value":"MANHATTAN"},{"name":"Euclidean Squared","value":"EUCLIDEAN_SQUARED"},{"name":"Hamming","value":"HAMMING"}]},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Distance Strategy","name":"distanceStrategy","type":"options","default":"COSINE","description":"The method to calculate the distance between two vectors","options":[{"name":"Cosine","value":"COSINE"},{"name":"Inner Product","value":"DOT"},{"name":"Euclidean","value":"EUCLIDEAN"},{"name":"Manhattan","value":"MANHATTAN"},{"name":"Euclidean Squared","value":"EUCLIDEAN_SQUARED"},{"name":"Hamming","value":"HAMMING"}]},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["retrieve"]}}}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/shared/icons/oracle.svg"},
|
|
107
109
|
{"displayName":"Postgres PGVector Store","name":"vectorStorePGVector","description":"Work with your data in Postgresql with the PGVector extension","group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"Postgres PGVector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstorepgvector/"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"postgres","required":true,"testedBy":"postgresConnectionTest"}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Work with your data in Postgresql with the PGVector extension","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"Table Name","name":"tableName","type":"string","default":"n8n_vectors","description":"The table name to store the vectors in. If table does not exist, it will be created."},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Collection","name":"collection","type":"fixedCollection","description":"Collection of vectors","default":{"values":{"useCollection":false,"collectionName":"n8n","collectionTable":"n8n_vector_collections"}},"typeOptions":{},"placeholder":"Add Collection Settings","options":[{"name":"values","displayName":"Collection Settings","values":[{"displayName":"Use Collection","name":"useCollection","type":"boolean","default":false},{"displayName":"Collection Name","name":"collectionName","type":"string","default":"n8n","required":true,"displayOptions":{"show":{"useCollection":[true]}}},{"displayName":"Collection Table Name","name":"collectionTableName","type":"string","default":"n8n_vector_collections","required":true,"displayOptions":{"show":{"useCollection":[true]}}}]}]},{"displayName":"Column Names","name":"columnNames","type":"fixedCollection","description":"The names of the columns in the PGVector table","default":{"values":{"idColumnName":"id","vectorColumnName":"embedding","contentColumnName":"text","metadataColumnName":"metadata"}},"typeOptions":{},"placeholder":"Set Column Names","options":[{"name":"values","displayName":"Column Name Settings","values":[{"displayName":"ID Column Name","name":"idColumnName","type":"string","default":"id","required":true},{"displayName":"Vector Column Name","name":"vectorColumnName","type":"string","default":"embedding","required":true},{"displayName":"Content Column Name","name":"contentColumnName","type":"string","default":"text","required":true},{"displayName":"Metadata Column Name","name":"metadataColumnName","type":"string","default":"metadata","required":true}]}]}],"displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Distance Strategy","name":"distanceStrategy","type":"options","default":"cosine","description":"The method to calculate the distance between two vectors","options":[{"name":"Cosine","value":"cosine"},{"name":"Inner Product","value":"innerProduct"},{"name":"Euclidean","value":"euclidean"}]},{"displayName":"Collection","name":"collection","type":"fixedCollection","description":"Collection of vectors","default":{"values":{"useCollection":false,"collectionName":"n8n","collectionTable":"n8n_vector_collections"}},"typeOptions":{},"placeholder":"Add Collection Settings","options":[{"name":"values","displayName":"Collection Settings","values":[{"displayName":"Use Collection","name":"useCollection","type":"boolean","default":false},{"displayName":"Collection Name","name":"collectionName","type":"string","default":"n8n","required":true,"displayOptions":{"show":{"useCollection":[true]}}},{"displayName":"Collection Table Name","name":"collectionTableName","type":"string","default":"n8n_vector_collections","required":true,"displayOptions":{"show":{"useCollection":[true]}}}]}]},{"displayName":"Column Names","name":"columnNames","type":"fixedCollection","description":"The names of the columns in the PGVector table","default":{"values":{"idColumnName":"id","vectorColumnName":"embedding","contentColumnName":"text","metadataColumnName":"metadata"}},"typeOptions":{},"placeholder":"Set Column Names","options":[{"name":"values","displayName":"Column Name Settings","values":[{"displayName":"ID Column Name","name":"idColumnName","type":"string","default":"id","required":true},{"displayName":"Vector Column Name","name":"vectorColumnName","type":"string","default":"embedding","required":true},{"displayName":"Content Column Name","name":"contentColumnName","type":"string","default":"text","required":true},{"displayName":"Metadata Column Name","name":"metadataColumnName","type":"string","default":"metadata","required":true}]}]},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Distance Strategy","name":"distanceStrategy","type":"options","default":"cosine","description":"The method to calculate the distance between two vectors","options":[{"name":"Cosine","value":"cosine"},{"name":"Inner Product","value":"innerProduct"},{"name":"Euclidean","value":"euclidean"}]},{"displayName":"Collection","name":"collection","type":"fixedCollection","description":"Collection of vectors","default":{"values":{"useCollection":false,"collectionName":"n8n","collectionTable":"n8n_vector_collections"}},"typeOptions":{},"placeholder":"Add Collection Settings","options":[{"name":"values","displayName":"Collection Settings","values":[{"displayName":"Use Collection","name":"useCollection","type":"boolean","default":false},{"displayName":"Collection Name","name":"collectionName","type":"string","default":"n8n","required":true,"displayOptions":{"show":{"useCollection":[true]}}},{"displayName":"Collection Table Name","name":"collectionTableName","type":"string","default":"n8n_vector_collections","required":true,"displayOptions":{"show":{"useCollection":[true]}}}]}]},{"displayName":"Column Names","name":"columnNames","type":"fixedCollection","description":"The names of the columns in the PGVector table","default":{"values":{"idColumnName":"id","vectorColumnName":"embedding","contentColumnName":"text","metadataColumnName":"metadata"}},"typeOptions":{},"placeholder":"Set Column Names","options":[{"name":"values","displayName":"Column Name Settings","values":[{"displayName":"ID Column Name","name":"idColumnName","type":"string","default":"id","required":true},{"displayName":"Vector Column Name","name":"vectorColumnName","type":"string","default":"embedding","required":true},{"displayName":"Content Column Name","name":"contentColumnName","type":"string","default":"text","required":true},{"displayName":"Metadata Column Name","name":"metadataColumnName","type":"string","default":"metadata","required":true}]}]},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["retrieve"]}}}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStorePGVector/postgres.svg"},
|
|
108
110
|
{"displayName":"ChatHub PGVector Store","name":"chatHubVectorStorePGVector","description":"Internal-use vector store for ChatHub","hidden":true,"group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"ChatHub PGVector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"chatHubVectorStorePGVectorApi","required":true,"testedBy":"chatHubVectorStorePGVectorApiConnectionTest"}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Internal-use vector store for ChatHub","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["retrieve"]}}}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStorePGVector/postgres.svg"},
|
|
109
111
|
{"displayName":"ChatHub Qdrant Vector Store","name":"chatHubVectorStoreQdrant","description":"Internal-use vector store for ChatHub","hidden":true,"group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"ChatHub Qdrant Vector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"chatHubVectorStoreQdrantApi","required":true,"testedBy":"chatHubVectorStoreQdrantApiConnectionTest"}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Internal-use vector store for ChatHub","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["retrieve"]}}}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreQdrant/qdrant.svg"},
|
|
@@ -116,7 +118,7 @@
|
|
|
116
118
|
{"displayName":"Supabase Vector Store","name":"vectorStoreSupabase","description":"Work with your data in Supabase Vector Store","group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"Supabase Vector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoresupabase/"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"supabaseApi","required":true}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"},{"name":"Update Documents","value":"update","description":"Update documents in vector store by ID","action":"Update vector store documents"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Work with your data in Supabase Vector Store","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"Table Name","name":"tableName","type":"resourceLocator","default":{"mode":"list","value":""},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","typeOptions":{"searchListMethod":"supabaseTableNameSearch"}},{"displayName":"ID","name":"id","type":"string"}]},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Query Name","name":"queryName","type":"string","default":"match_documents","description":"Name of the query to use for matching documents"}],"displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Query Name","name":"queryName","type":"string","default":"match_documents","description":"Name of the query to use for matching documents"},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Query Name","name":"queryName","type":"string","default":"match_documents","description":"Name of the query to use for matching documents"},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Query Name","name":"queryName","type":"string","default":"match_documents","description":"Name of the query to use for matching documents"}],"displayOptions":{"show":{"mode":["update"]}}}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreSupabase/supabase.svg"},
|
|
117
119
|
{"displayName":"Supabase: Insert","hidden":true,"name":"vectorStoreSupabaseInsert","group":["transform"],"version":1,"description":"Insert data into Supabase Vector Store index [https://supabase.com/docs/guides/ai/langchain]","defaults":{"name":"Supabase: Insert"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoresupabase/"}]}},"credentials":[{"name":"supabaseApi","required":true}],"inputs":["main",{"displayName":"Document","maxConnections":1,"type":"ai_document","required":true},{"displayName":"Embedding","maxConnections":1,"type":"ai_embedding","required":true}],"outputs":["main"],"properties":[{"displayName":"Please refer to the <a href=\"https://supabase.com/docs/guides/ai/langchain\" target=\"_blank\">Supabase documentation</a> for more information on how to setup your database as a Vector Store.","name":"setupNotice","type":"notice","default":""},{"displayName":"Table Name","name":"tableName","type":"resourceLocator","default":{"mode":"list","value":""},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","typeOptions":{"searchListMethod":"supabaseTableNameSearch"}},{"displayName":"ID","name":"id","type":"string"}]},{"displayName":"Query Name","name":"queryName","type":"string","default":"match_documents","required":true,"description":"Name of the query to use for matching documents"},{"displayName":"Specify the document to load in the document loader sub-node","name":"notice","type":"notice","default":""}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreSupabaseInsert/supabase.svg"},
|
|
118
120
|
{"displayName":"Supabase: Load","name":"vectorStoreSupabaseLoad","hidden":true,"group":["transform"],"version":1,"description":"Load data from Supabase Vector Store index","defaults":{"name":"Supabase: Load"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoresupabase/"}]}},"credentials":[{"name":"supabaseApi","required":true}],"inputs":[{"displayName":"Embedding","maxConnections":1,"type":"ai_embedding","required":true}],"outputs":["ai_vectorStore"],"outputNames":["Vector Store"],"properties":[{"displayName":"Table Name","name":"tableName","type":"resourceLocator","default":{"mode":"list","value":""},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","typeOptions":{"searchListMethod":"supabaseTableNameSearch"}},{"displayName":"ID","name":"id","type":"string"}]},{"displayName":"Query Name","name":"queryName","type":"string","default":"match_documents","required":true,"description":"Name of the query to use for matching documents"},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}]}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreSupabaseLoad/supabase.svg"},
|
|
119
|
-
{"displayName":"Weaviate Vector Store","name":"vectorStoreWeaviate","description":"Work with your data in a Weaviate Cluster","group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"Weaviate Vector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreweaviate/"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"weaviateApi","required":true}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Work with your data in a Weaviate Cluster","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"Weaviate Collection","name":"weaviateCollection","type":"resourceLocator","default":{"mode":"list","value":""},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","typeOptions":{"searchListMethod":"weaviateCollectionsSearch"}},{"displayName":"ID","name":"id","type":"string"}]},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Tenant Name","name":"tenant","type":"string","validateType":"string","description":"Tenant Name. Collection must have been created with tenant support enabled."},{"displayName":"Text Key","name":"textKey","type":"string","default":"text","validateType":"string","description":"The key in the document that contains the embedded text"},{"displayName":"Skip Init Checks","name":"skip_init_checks","type":"boolean","default":false,"validateType":"boolean","description":"Whether to skip init checks while instantiating the client"},{"displayName":"Init Timeout","name":"timeout_init","type":"number","default":2,"validateType":"number","description":"Number of timeout seconds for initial checks"},{"displayName":"Insert Timeout","name":"timeout_insert","type":"number","default":90,"validateType":"number","description":"Number of timeout seconds for inserts"},{"displayName":"Query Timeout","name":"timeout_query","type":"number","default":30,"validateType":"number","description":"Number of timeout seconds for queries"},{"displayName":"GRPC Proxy","name":"proxy_grpc","type":"string","validateType":"string","description":"Proxy to use for GRPC"},{"displayName":"Clear Data","name":"clearStore","type":"boolean","default":false,"description":"Whether to clear the Collection/Tenant before inserting new data"}],"displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Search Filters","name":"searchFilterJson","type":"json","typeOptions":{"rows":5},"default":"{\n \"OR\": [\n {\n \"path\": [\"pdf_info_Author\"],\n \"operator\": \"Equal\",\n \"valueString\": \"Elis\"\n },\n {\n \"path\": [\"pdf_info_Author\"],\n \"operator\": \"Equal\",\n \"valueString\": \"Pinnacle\"\n } \n ]\n}","validateType":"object","description":"Filter pageContent or metadata using this <a href=\"https://weaviate.io/\" target=\"_blank\">filtering syntax</a>"},{"displayName":"Metadata Keys","name":"metadataKeys","type":"string","default":"source,page","validateType":"string","description":"Select the metadata to retrieve along the content"},{"displayName":"Hybrid: Query Text","name":"hybridQuery","type":"string","default":"","validateType":"string","description":"Provide a query text to combine vector search with a keyword/text search"},{"displayName":"Hybrid: Explain Score","name":"hybridExplainScore","type":"boolean","default":false,"validateType":"boolean","description":"Whether to show the score fused between hybrid and vector search explanation"},{"displayName":"Hybrid: Fusion Type","name":"fusionType","type":"options","options":[{"name":"Relative Score","value":"RelativeScore"},{"name":"Ranked","value":"Ranked"}],"default":"RelativeScore","description":"Select the fusion type for combining vector and keyword search results"},{"displayName":"Hybrid: Auto Cut Limit","name":"autoCutLimit","type":"number","validateType":"number","description":"Limit result groups by detecting sudden jumps in score"},{"displayName":"Hybrid: Alpha","name":"alpha","type":"number","default":0.5,"validateType":"number","description":"Change the relative weights of the keyword and vector components. 1.0 = pure vector, 0.0 = pure keyword."},{"displayName":"Hybrid: Query Properties","name":"queryProperties","type":"string","default":"","validateType":"string","description":"Comma-separated list of properties to include in the query with optionally weighted values, e.g., \"question^2,answer\""},{"displayName":"Hybrid: Max Vector Distance","name":"maxVectorDistance","type":"number","validateType":"number","description":"Set the maximum allowable distance for the vector search component"},{"displayName":"Tenant Name","name":"tenant","type":"string","validateType":"string","description":"Tenant Name. Collection must have been created with tenant support enabled."},{"displayName":"Text Key","name":"textKey","type":"string","default":"text","validateType":"string","description":"The key in the document that contains the embedded text"},{"displayName":"Skip Init Checks","name":"skip_init_checks","type":"boolean","default":false,"validateType":"boolean","description":"Whether to skip init checks while instantiating the client"},{"displayName":"Init Timeout","name":"timeout_init","type":"number","default":2,"validateType":"number","description":"Number of timeout seconds for initial checks"},{"displayName":"Insert Timeout","name":"timeout_insert","type":"number","default":90,"validateType":"number","description":"Number of timeout seconds for inserts"},{"displayName":"Query Timeout","name":"timeout_query","type":"number","default":30,"validateType":"number","description":"Number of timeout seconds for queries"},{"displayName":"GRPC Proxy","name":"proxy_grpc","type":"string","validateType":"string","description":"Proxy to use for GRPC"}],"displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Search Filters","name":"searchFilterJson","type":"json","typeOptions":{"rows":5},"default":"{\n \"OR\": [\n {\n \"path\": [\"pdf_info_Author\"],\n \"operator\": \"Equal\",\n \"valueString\": \"Elis\"\n },\n {\n \"path\": [\"pdf_info_Author\"],\n \"operator\": \"Equal\",\n \"valueString\": \"Pinnacle\"\n } \n ]\n}","validateType":"object","description":"Filter pageContent or metadata using this <a href=\"https://weaviate.io/\" target=\"_blank\">filtering syntax</a>"},{"displayName":"Metadata Keys","name":"metadataKeys","type":"string","default":"source,page","validateType":"string","description":"Select the metadata to retrieve along the content"},{"displayName":"Hybrid: Query Text","name":"hybridQuery","type":"string","default":"","validateType":"string","description":"Provide a query text to combine vector search with a keyword/text search"},{"displayName":"Hybrid: Explain Score","name":"hybridExplainScore","type":"boolean","default":false,"validateType":"boolean","description":"Whether to show the score fused between hybrid and vector search explanation"},{"displayName":"Hybrid: Fusion Type","name":"fusionType","type":"options","options":[{"name":"Relative Score","value":"RelativeScore"},{"name":"Ranked","value":"Ranked"}],"default":"RelativeScore","description":"Select the fusion type for combining vector and keyword search results"},{"displayName":"Hybrid: Auto Cut Limit","name":"autoCutLimit","type":"number","validateType":"number","description":"Limit result groups by detecting sudden jumps in score"},{"displayName":"Hybrid: Alpha","name":"alpha","type":"number","default":0.5,"validateType":"number","description":"Change the relative weights of the keyword and vector components. 1.0 = pure vector, 0.0 = pure keyword."},{"displayName":"Hybrid: Query Properties","name":"queryProperties","type":"string","default":"","validateType":"string","description":"Comma-separated list of properties to include in the query with optionally weighted values, e.g., \"question^2,answer\""},{"displayName":"Hybrid: Max Vector Distance","name":"maxVectorDistance","type":"number","validateType":"number","description":"Set the maximum allowable distance for the vector search component"},{"displayName":"Tenant Name","name":"tenant","type":"string","validateType":"string","description":"Tenant Name. Collection must have been created with tenant support enabled."},{"displayName":"Text Key","name":"textKey","type":"string","default":"text","validateType":"string","description":"The key in the document that contains the embedded text"},{"displayName":"Skip Init Checks","name":"skip_init_checks","type":"boolean","default":false,"validateType":"boolean","description":"Whether to skip init checks while instantiating the client"},{"displayName":"Init Timeout","name":"timeout_init","type":"number","default":2,"validateType":"number","description":"Number of timeout seconds for initial checks"},{"displayName":"Insert Timeout","name":"timeout_insert","type":"number","default":90,"validateType":"number","description":"Number of timeout seconds for inserts"},{"displayName":"Query Timeout","name":"timeout_query","type":"number","default":30,"validateType":"number","description":"Number of timeout seconds for queries"},{"displayName":"GRPC Proxy","name":"proxy_grpc","type":"string","validateType":"string","description":"Proxy to use for GRPC"}],"displayOptions":{"show":{"mode":["retrieve"]}}}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreWeaviate/weaviate.svg"},
|
|
121
|
+
{"displayName":"Weaviate Vector Store","name":"vectorStoreWeaviate","description":"Work with your data in a Weaviate Cluster","group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"Weaviate Vector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreweaviate/"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"weaviateApi","required":true}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Work with your data in a Weaviate Cluster","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"Weaviate Collection","name":"weaviateCollection","type":"resourceLocator","default":{"mode":"list","value":""},"required":true,"modes":[{"displayName":"From List","name":"list","type":"list","typeOptions":{"searchListMethod":"weaviateCollectionsSearch"}},{"displayName":"ID","name":"id","type":"string"}]},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Tenant Name","name":"tenant","type":"string","default":"","validateType":"string","description":"Tenant Name. Collection must have been created with tenant support enabled."},{"displayName":"Text Key","name":"textKey","type":"string","default":"text","validateType":"string","description":"The key in the document that contains the embedded text"},{"displayName":"Skip Init Checks","name":"skip_init_checks","type":"boolean","default":false,"validateType":"boolean","description":"Whether to skip init checks while instantiating the client"},{"displayName":"Init Timeout","name":"timeout_init","type":"number","default":2,"validateType":"number","description":"Number of timeout seconds for initial checks"},{"displayName":"Insert Timeout","name":"timeout_insert","type":"number","default":90,"validateType":"number","description":"Number of timeout seconds for inserts"},{"displayName":"Query Timeout","name":"timeout_query","type":"number","default":30,"validateType":"number","description":"Number of timeout seconds for queries"},{"displayName":"GRPC Proxy","name":"proxy_grpc","type":"string","default":"","validateType":"string","description":"Proxy to use for GRPC"},{"displayName":"Clear Data","name":"clearStore","type":"boolean","default":false,"description":"Whether to clear the Collection/Tenant before inserting new data"}],"displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Search Filters","name":"searchFilterJson","type":"json","typeOptions":{"rows":5},"default":"{\n \"OR\": [\n {\n \"path\": [\"pdf_info_Author\"],\n \"operator\": \"Equal\",\n \"valueString\": \"Elis\"\n },\n {\n \"path\": [\"pdf_info_Author\"],\n \"operator\": \"Equal\",\n \"valueString\": \"Pinnacle\"\n } \n ]\n}","validateType":"object","description":"Filter pageContent or metadata using this <a href=\"https://weaviate.io/\" target=\"_blank\">filtering syntax</a>"},{"displayName":"Metadata Keys","name":"metadataKeys","type":"string","default":"source,page","validateType":"string","description":"Select the metadata to retrieve along the content"},{"displayName":"Hybrid: Query Text","name":"hybridQuery","type":"string","default":"","validateType":"string","description":"Provide a query text to combine vector search with a keyword/text search"},{"displayName":"Hybrid: Explain Score","name":"hybridExplainScore","type":"boolean","default":false,"validateType":"boolean","description":"Whether to show the score fused between hybrid and vector search explanation"},{"displayName":"Hybrid: Fusion Type","name":"fusionType","type":"options","options":[{"name":"Relative Score","value":"RelativeScore"},{"name":"Ranked","value":"Ranked"}],"default":"RelativeScore","description":"Select the fusion type for combining vector and keyword search results"},{"displayName":"Hybrid: Auto Cut Limit","name":"autoCutLimit","type":"number","validateType":"number","description":"Limit result groups by detecting sudden jumps in score"},{"displayName":"Hybrid: Alpha","name":"alpha","type":"number","default":0.5,"validateType":"number","description":"Change the relative weights of the keyword and vector components. 1.0 = pure vector, 0.0 = pure keyword."},{"displayName":"Hybrid: Query Properties","name":"queryProperties","type":"string","default":"","validateType":"string","description":"Comma-separated list of properties to include in the query with optionally weighted values, e.g., \"question^2,answer\""},{"displayName":"Hybrid: Max Vector Distance","name":"maxVectorDistance","type":"number","validateType":"number","description":"Set the maximum allowable distance for the vector search component"},{"displayName":"Tenant Name","name":"tenant","type":"string","default":"","validateType":"string","description":"Tenant Name. Collection must have been created with tenant support enabled."},{"displayName":"Text Key","name":"textKey","type":"string","default":"text","validateType":"string","description":"The key in the document that contains the embedded text"},{"displayName":"Skip Init Checks","name":"skip_init_checks","type":"boolean","default":false,"validateType":"boolean","description":"Whether to skip init checks while instantiating the client"},{"displayName":"Init Timeout","name":"timeout_init","type":"number","default":2,"validateType":"number","description":"Number of timeout seconds for initial checks"},{"displayName":"Insert Timeout","name":"timeout_insert","type":"number","default":90,"validateType":"number","description":"Number of timeout seconds for inserts"},{"displayName":"Query Timeout","name":"timeout_query","type":"number","default":30,"validateType":"number","description":"Number of timeout seconds for queries"},{"displayName":"GRPC Proxy","name":"proxy_grpc","type":"string","default":"","validateType":"string","description":"Proxy to use for GRPC"}],"displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Search Filters","name":"searchFilterJson","type":"json","typeOptions":{"rows":5},"default":"{\n \"OR\": [\n {\n \"path\": [\"pdf_info_Author\"],\n \"operator\": \"Equal\",\n \"valueString\": \"Elis\"\n },\n {\n \"path\": [\"pdf_info_Author\"],\n \"operator\": \"Equal\",\n \"valueString\": \"Pinnacle\"\n } \n ]\n}","validateType":"object","description":"Filter pageContent or metadata using this <a href=\"https://weaviate.io/\" target=\"_blank\">filtering syntax</a>"},{"displayName":"Metadata Keys","name":"metadataKeys","type":"string","default":"source,page","validateType":"string","description":"Select the metadata to retrieve along the content"},{"displayName":"Hybrid: Query Text","name":"hybridQuery","type":"string","default":"","validateType":"string","description":"Provide a query text to combine vector search with a keyword/text search"},{"displayName":"Hybrid: Explain Score","name":"hybridExplainScore","type":"boolean","default":false,"validateType":"boolean","description":"Whether to show the score fused between hybrid and vector search explanation"},{"displayName":"Hybrid: Fusion Type","name":"fusionType","type":"options","options":[{"name":"Relative Score","value":"RelativeScore"},{"name":"Ranked","value":"Ranked"}],"default":"RelativeScore","description":"Select the fusion type for combining vector and keyword search results"},{"displayName":"Hybrid: Auto Cut Limit","name":"autoCutLimit","type":"number","validateType":"number","description":"Limit result groups by detecting sudden jumps in score"},{"displayName":"Hybrid: Alpha","name":"alpha","type":"number","default":0.5,"validateType":"number","description":"Change the relative weights of the keyword and vector components. 1.0 = pure vector, 0.0 = pure keyword."},{"displayName":"Hybrid: Query Properties","name":"queryProperties","type":"string","default":"","validateType":"string","description":"Comma-separated list of properties to include in the query with optionally weighted values, e.g., \"question^2,answer\""},{"displayName":"Hybrid: Max Vector Distance","name":"maxVectorDistance","type":"number","validateType":"number","description":"Set the maximum allowable distance for the vector search component"},{"displayName":"Tenant Name","name":"tenant","type":"string","default":"","validateType":"string","description":"Tenant Name. Collection must have been created with tenant support enabled."},{"displayName":"Text Key","name":"textKey","type":"string","default":"text","validateType":"string","description":"The key in the document that contains the embedded text"},{"displayName":"Skip Init Checks","name":"skip_init_checks","type":"boolean","default":false,"validateType":"boolean","description":"Whether to skip init checks while instantiating the client"},{"displayName":"Init Timeout","name":"timeout_init","type":"number","default":2,"validateType":"number","description":"Number of timeout seconds for initial checks"},{"displayName":"Insert Timeout","name":"timeout_insert","type":"number","default":90,"validateType":"number","description":"Number of timeout seconds for inserts"},{"displayName":"Query Timeout","name":"timeout_query","type":"number","default":30,"validateType":"number","description":"Number of timeout seconds for queries"},{"displayName":"GRPC Proxy","name":"proxy_grpc","type":"string","default":"","validateType":"string","description":"Proxy to use for GRPC"}],"displayOptions":{"show":{"mode":["retrieve"]}}}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreWeaviate/weaviate.svg"},
|
|
120
122
|
{"displayName":"Zep Vector Store","name":"vectorStoreZep","description":"Work with your data in Zep Vector Store","group":["transform"],"version":[1,1.1,1.2,1.3],"defaults":{"name":"Zep Vector Store"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Vector Stores":["Other Vector Stores"],"Tools":["Other Tools"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstorezep/"}]}},"builderHint":{"searchHint":"Pick mode by where data flows: `insert` upserts documents into the store on the main flow; `load` runs a one-shot similarity search on the main flow; `retrieve-as-tool` is the canonical RAG mode — plug into an AI Agent's `subnodes.tools`; `retrieve` exposes the store as a subnode for another node's `subnodes.vectorStore`; `update` updates a single document by ID.","extraTypeDefContent":[{"displayOptions":{"show":{"mode":["insert"]}},"content":"Sits on the main flow — pipe the documents you want to embed into this node. Declare with `vectorStore({...})`. Required subnodes: `embedding` and `documentLoader`. If the goal is letting an LLM query the store, use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"insert mode — upsert documents (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters (e.g. pineconeIndex,\n// qdrantCollection, supabaseTableName) — see the rest of this file for the exact shape.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'insert',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi, documentLoader: defaultDataLoader }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve-as-tool"]}},"content":"Canonical RAG mode — declare with the `tool({...})` factory (NOT `vectorStore`) and plug into an AI Agent's `subnodes.tools`. Required subnodes: `embedding`. Set `toolDescription` so the agent knows when to call it.\n<patterns>\n<pattern title=\"retrieve-as-tool mode — RAG via AI Agent (generic, works for any vectorStore* node)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file\n// for the exact shape (e.g. pineconeIndex, qdrantCollection, supabaseTableName).\nconst knowledgeBase = tool({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'retrieve-as-tool',\n toolDescription: 'Search the product knowledge base',\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst agent = node({\n type: '@n8n/n8n-nodes-langchain.agent',\n config: {\n name: 'Support Agent',\n parameters: { promptType: 'define', text: expr('{{ $json.question }}') },\n subnodes: { model: openAiModel, tools: [knowledgeBase] }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["load"]}},"content":"One-shot similarity search on the main flow using the `prompt` parameter. Declare with `vectorStore({...})`. Required subnodes: `embedding`. For LLM-driven querying (RAG), use `mode: 'retrieve-as-tool'` instead.\n<patterns>\n<pattern title=\"load mode — one-shot similarity search (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst lookup = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: {\n mode: 'load',\n prompt: expr('{{ $json.query }}'),\n // ...provider-specific parameters\n },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["retrieve"]}},"content":"Exposes the store as an `ai_vectorStore` subnode for another node (e.g. `toolVectorStore`). Declare with `vectorStore({...})`. Required subnodes: `embedding`. For RAG with an AI Agent directly, prefer `mode: 'retrieve-as-tool'`.\n<patterns>\n<pattern title=\"retrieve mode — feed another node as a subnode (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'retrieve' /* + provider-specific parameters */ },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n\nconst retrieverTool = tool({\n type: '@n8n/n8n-nodes-langchain.toolVectorStore',\n config: {\n name: 'KB Retriever',\n parameters: { description: 'Search the product knowledge base' },\n subnodes: { vectorStore: store, model: openAiModel }\n }\n});\n</pattern>\n</patterns>"},{"displayOptions":{"show":{"mode":["update"]}},"content":"Updates a single document by `id`. Declare with `vectorStore({...})`. Required subnodes: `embedding`. Only available on stores whose `operationModes` enables it — most providers omit this mode.\n<patterns>\n<pattern title=\"update mode — update document by ID (generic)\">\n// Substitute the type literal and provider-specific parameters — see the rest of this file.\nconst store = vectorStore({\n type: '@n8n/n8n-nodes-langchain.vectorStoreXxx',\n config: {\n name: 'Knowledge Base',\n parameters: { mode: 'update', id: expr('{{ $json.docId }}') },\n subnodes: { embedding: embeddingsOpenAi }\n }\n});\n</pattern>\n</patterns>"}],"inputs":{"ai_embedding":{"required":true},"ai_document":{"required":true,"displayOptions":{"show":{"mode":["insert"]}}},"ai_reranker":{"required":true,"displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"],"useReranker":[true]}}}},"outputs":{"main":{"displayOptions":{"show":{"mode":["insert","load","update"]}}},"ai_vectorStore":{"required":true,"displayOptions":{"show":{"mode":["retrieve"]}}},"ai_tool":{"required":true,"displayOptions":{"show":{"mode":["retrieve-as-tool"]}}}}},"credentials":[{"name":"zepApi","required":true}],"inputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode;\n\t\t\t\tconst useReranker = parameters?.useReranker;\n\t\t\t\tconst inputs = [{ displayName: \"Embedding\", type: \"ai_embedding\", required: true, maxConnections: 1}]\n\n\t\t\t\tif (['load', 'retrieve', 'retrieve-as-tool'].includes(mode) && useReranker) {\n\t\t\t\t\tinputs.push({ displayName: \"Reranker\", type: \"ai_reranker\", required: true, maxConnections: 1})\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn inputs;\n\t\t\t\t}\n\n\t\t\t\tif (['insert', 'load', 'update'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"\", type: \"main\"})\n\t\t\t\t}\n\n\t\t\t\tif (['insert'].includes(mode)) {\n\t\t\t\t\tinputs.push({ displayName: \"Document\", type: \"ai_document\", required: true, maxConnections: 1})\n\t\t\t\t}\n\t\t\t\treturn inputs\n\t\t\t})($parameter)\n\t\t}}","outputs":"={{\n\t\t\t((parameters) => {\n\t\t\t\tconst mode = parameters?.mode ?? 'retrieve';\n\n\t\t\t\tif (mode === 'retrieve-as-tool') {\n\t\t\t\t\treturn [{ displayName: \"Tool\", type: \"ai_tool\"}]\n\t\t\t\t}\n\n\t\t\t\tif (mode === 'retrieve') {\n\t\t\t\t\treturn [{ displayName: \"Vector Store\", type: \"ai_vectorStore\"}]\n\t\t\t\t}\n\t\t\t\treturn [{ displayName: \"\", type: \"main\"}]\n\t\t\t})($parameter)\n\t\t}}","properties":[{"displayName":"Tip: Get a feel for vector stores in n8n with our","name":"ragStarterCallout","type":"callout","typeOptions":{"calloutAction":{"label":"RAG starter template","type":"openSampleWorkflowTemplate","templateId":"rag-starter-template"}},"default":""},{"displayName":"Operation Mode","name":"mode","type":"options","noDataExpression":true,"default":"retrieve","options":[{"name":"Get Many","value":"load","description":"Get many ranked documents from vector store for query","action":"Get ranked documents from vector store"},{"name":"Insert Documents","value":"insert","description":"Insert documents into vector store","action":"Add documents to vector store"},{"name":"Retrieve Documents (As Vector Store for Chain/Tool)","value":"retrieve","description":"Retrieve documents from vector store to be used as vector store with AI nodes","action":"Retrieve documents for Chain/Tool as Vector Store","outputConnectionType":"ai_vectorStore"},{"name":"Retrieve Documents (As Tool for AI Agent)","value":"retrieve-as-tool","description":"Retrieve documents from vector store to be used as tool with AI nodes","action":"Retrieve documents for AI Agent as Tool","outputConnectionType":"ai_tool"}]},{"displayName":"This node must be connected to a vector store retriever. <a data-action='openSelectiveNodeCreator' data-action-parameter-connectiontype='ai_retriever'>Insert one</a>","name":"notice","type":"notice","default":"","typeOptions":{"containerClass":"ndv-connection-hint-notice"},"displayOptions":{"show":{"mode":["retrieve"]}}},{"displayName":"Name","name":"toolName","type":"string","default":"","required":true,"description":"Name of the vector store","placeholder":"e.g. company_knowledge_base","validateType":"string-alphanumeric","displayOptions":{"show":{"@version":[{"_cnd":{"lte":1.2}}],"mode":["retrieve-as-tool"]}}},{"displayName":"Description","name":"toolDescription","type":"string","default":"","required":true,"typeOptions":{"rows":2},"description":"Explain to the LLM what this tool does, a good, specific description would allow LLMs to produce expected results much more often","placeholder":"e.g. Work with your data in Zep Vector Store","displayOptions":{"show":{"mode":["retrieve-as-tool"]}}},{"displayName":"This Zep integration is deprecated and will be removed in a future version.","name":"deprecationNotice","type":"notice","default":""},{"displayName":"Collection Name","name":"collectionName","type":"string","default":"","required":true},{"displayName":"Embedding Batch Size","name":"embeddingBatchSize","type":"number","default":200,"description":"Number of documents to embed in a single batch","displayOptions":{"show":{"mode":["insert"],"@version":[{"_cnd":{"gte":1.1}}]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Embedding Dimensions","name":"embeddingDimensions","type":"number","default":1536,"description":"Whether to allow using characters from the Unicode surrogate blocks"},{"displayName":"Is Auto Embedded","name":"isAutoEmbedded","type":"boolean","default":true,"description":"Whether to automatically embed documents when they are added"}],"displayOptions":{"show":{"mode":["insert"]}}},{"displayName":"Prompt","name":"prompt","type":"string","default":"","required":true,"description":"Search prompt to retrieve matching documents from the vector store using similarity-based ranking","displayOptions":{"show":{"mode":["load"]}}},{"displayName":"Limit","name":"topK","type":"number","default":4,"description":"Number of top results to fetch from vector store","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Include Metadata","name":"includeDocumentMetadata","type":"boolean","default":true,"description":"Whether or not to include document metadata","displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Rerank Results","name":"useReranker","type":"boolean","default":false,"description":"Whether or not to rerank results","displayOptions":{"show":{"mode":["load","retrieve","retrieve-as-tool"]}}},{"displayName":"ID","name":"id","type":"string","default":"","required":true,"description":"ID of an embedding entry","displayOptions":{"show":{"mode":["update"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Embedding Dimensions","name":"embeddingDimensions","type":"number","default":1536,"description":"Whether to allow using characters from the Unicode surrogate blocks"},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["load","retrieve-as-tool"]}}},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Embedding Dimensions","name":"embeddingDimensions","type":"number","default":1536,"description":"Whether to allow using characters from the Unicode surrogate blocks"},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}],"displayOptions":{"show":{"mode":["retrieve"]}}}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreZep/zep.png"},
|
|
121
123
|
{"displayName":"Zep Vector Store: Insert","name":"vectorStoreZepInsert","hidden":true,"group":["transform"],"version":1,"description":"Insert data into Zep Vector Store index","defaults":{"name":"Zep: Insert"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstorezep/"}]}},"credentials":[{"name":"zepApi","required":true}],"inputs":["main",{"displayName":"Document","maxConnections":1,"type":"ai_document","required":true},{"displayName":"Embedding","maxConnections":1,"type":"ai_embedding","required":true}],"outputs":["main"],"properties":[{"displayName":"This Zep integration is deprecated and will be removed in a future version.","name":"deprecationNotice","type":"notice","default":""},{"displayName":"Collection Name","name":"collectionName","type":"string","default":"","required":true},{"displayName":"Specify the document to load in the document loader sub-node","name":"notice","type":"notice","default":""},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Embedding Dimensions","name":"embeddingDimensions","type":"number","default":1536,"description":"Whether to allow using characters from the Unicode surrogate blocks"},{"displayName":"Is Auto Embedded","name":"isAutoEmbedded","type":"boolean","default":true,"description":"Whether to automatically embed documents when they are added"}]}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreZepInsert/zep.png"},
|
|
122
124
|
{"displayName":"Zep Vector Store: Load","name":"vectorStoreZepLoad","hidden":true,"group":["transform"],"version":1,"description":"Load data from Zep Vector Store index","defaults":{"name":"Zep: Load"},"codex":{"categories":["AI"],"subcategories":{"AI":["Vector Stores"]},"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstorezep/"}]}},"credentials":[{"name":"zepApi","required":true}],"inputs":[{"displayName":"Embedding","maxConnections":1,"type":"ai_embedding","required":true}],"outputs":["ai_vectorStore"],"outputNames":["Vector Store"],"properties":[{"displayName":"This Zep integration is deprecated and will be removed in a future version.","name":"deprecationNotice","type":"notice","default":""},{"displayName":"Collection Name","name":"collectionName","type":"string","default":"","required":true},{"displayName":"Options","name":"options","type":"collection","placeholder":"Add Option","default":{},"options":[{"displayName":"Embedding Dimensions","name":"embeddingDimensions","type":"number","default":1536,"description":"Whether to allow using characters from the Unicode surrogate blocks"},{"displayName":"Metadata Filter","name":"metadata","type":"fixedCollection","description":"Metadata to filter the document by","typeOptions":{"multipleValues":true},"default":{},"placeholder":"Add filter field","options":[{"name":"metadataValues","displayName":"Fields to Set","values":[{"displayName":"Name","name":"name","type":"string","default":"","required":true},{"displayName":"Value","name":"value","type":"string","default":""}]}]}]}],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreZepLoad/zep.png"},
|