{"workflow":{"id":12400,"name":"Handle customer support queries with cache-first RAG using Redis, LangCache and OpenAI","views":82,"recentViews":0,"totalViews":82,"createdAt":"2026-01-02T15:09:23.547Z","description":"\nAn end-to-end **Retrieval-Augmented Generation (RAG)** customer support workflow for **n8n**, using a **cache-first strategy (LangCache)** combined with a **Redis vector store** powered by **OpenAI embeddings**.  \nThis template is designed for fast, accurate, and cost-efficient customer support chatbots, internal help desks, and knowledge-base assistants.\n\n---\n\n## Overview\n\nThis workflow implements a **production-ready RAG architecture** optimized for customer support use cases. Incoming chat messages are processed through a structured pipeline that prioritizes cached answers, falls back to semantic vector search when needed, and validates response quality before returning a final answer.\n\nThe workflow supports:\n- Multi-question user inputs\n- Intelligent query decomposition\n- Cache reuse to reduce latency and cost\n- High-precision retrieval from a Redis vector database\n- Quality evaluation and controlled retries\n- Final answer synthesis into a single, coherent response\n\n---\n\n## Key Features\n\n- **Chat-based RAG pipeline** using n8n’s Chat Trigger\n- **Query decomposition** for multi-topic questions\n- **LangCache integration** (search + save)\n- **Redis Vector Store** for semantic retrieval\n- **OpenAI embeddings and chat models**\n- **Quality scoring** with retry logic\n- **Session memory buffers** for contextual continuity\n- **Fallback-safe behavior** (no hallucinations)\n\n---\n\n## How the Workflow Works\n\n### 1. Chat Trigger\nThe workflow starts when a new chat message is received.\n\n### 2. Configuration Setup\nA centralized configuration node defines:\n- LangCache base URL\n- Cache ID\n- Similarity threshold (default: `0.75`)\n- Maximum retrieval iterations (default: `2`)\n\n### 3. Query Decomposition\nThe user message is analyzed and decomposed into:\n- A single focused question, or\n- Multiple independent sub-questions\n\nThis improves retrieval accuracy and cache reuse.\n\n### 4. Cache-First Retrieval\nEach sub-question is processed independently:\n- The workflow first searches **LangCache**\n- If a high-similarity cached answer is found, it is reused immediately\n\n### 5. Vector Retrieval (Cache Miss)\nIf no cache hit exists:\n- The query is embedded using OpenAI embeddings\n- A semantic search is executed against the **Redis vector index**\n- Retrieved knowledge-base documents are passed to a research-only agent\n\n### 6. Knowledge-Only Answering\nThe research agent:\n- Answers **strictly from the retrieved knowledge**\n- Returns `\"no info found\"` if no relevant data exists\n\n### 7. Quality Evaluation\nEach generated answer is evaluated by a dedicated quality-check node:\n- Outputs a numerical `SCORE` (0.0 – 1.0)\n- Provides textual feedback\n- Low scores can trigger limited retries\n\n### 8. Cache Update\nHigh-quality answers are saved back to **LangCache** for future reuse.\n\n### 9. Aggregation & Synthesis\nAll sub-answers are aggregated and synthesized into:\n- One final, user-facing response, or\n- A polite fallback message if information is insufficient\n\n---\n\n## Main Nodes & Responsibilities\n\n- **When Chat Message Received** — Entry point for user messages\n- **LangCache Config** — Centralized configuration values\n- **Decompose Query (LangChain Agent)** — Splits complex queries\n- **Structured Output Parser** — Ensures valid JSON output\n- **Search LangCache** — Cache lookup via HTTP\n- **Redis Vector Store** — Semantic retrieval from Redis\n- **Embeddings OpenAI** — Vector generation\n- **Research Agent** — KB-only answering (no hallucinations)\n- **Quality Evaluator** — Scores answer relevance\n- **Save to LangCache** — Stores validated answers\n- **Memory Buffers** — Session context handling\n- **Response Synthesizer** — Final message generation\n\n---\n\n## Setup Instructions\n\n### 1. Configure Credentials\nCreate the following credentials in n8n:\n- **OpenAI API**\n- **Redis**\n- **HTTP Bearer Auth** (for LangCache)\n\n### 2. Prepare the Knowledge Base\n- Embed your documents using OpenAI embeddings\n- Insert them into the configured Redis vector index\n- Ensure documents are concise and well-structured\n\n### 3. Configure LangCache\nUpdate the configuration node with:\n- `langcacheBaseUrl`\n- `langcacheCacheId`\n- Optional tuning for similarity threshold and iterations\n\n### 4. Test the Workflow\n- Use the example data loader or schedule trigger\n- Send test chat messages\n- Validate cache hits, vector retrieval, and final responses\n\n---\n\n## Recommended Tuning\n\n- **Similarity Threshold:** `0.7 – 0.85`\n- **Max Iterations:** `1 – 3`\n- **Quality Score Cutoff:** `0.7`\n- **Model Choice:** Use faster models for low latency, stronger models for accuracy\n- **Cache Policy:** Cache only high-confidence answers\n\n---\n\n## Security & Compliance Notes\n\n- Store API keys securely using n8n credentials\n- Avoid caching sensitive or personally identifiable information\n- Apply least-privilege access to Redis and LangCache\n- Consider logging cache writes for audit purposes\n\n---\n\n## Common Use Cases\n\n- Customer support chatbots\n- Internal help desks\n- Knowledge-base assistants\n- Self-service support portals\n- AI-powered FAQ systems\n\n---\n\n## Template Metadata (Recommended)\n\n- **Template Name:** AI Customer Support — Redis RAG (LangCache + OpenAI)\n- **Category:** Customer Support / AI / RAG\n- **Tags:**  \n  `customer-support`, `RAG`, `knowledge-base`, `redis`, `openai`, `langcache`, `chatbot`, `n8n-template`\n- **Difficulty Level:** Intermediate\n- **Required Integrations:** OpenAI, Redis, LangCache\n","workflow":{"meta":{"instanceId":"5bfd12a6bf15fc795141ec4724c268daca25991a2b24ea82c616ff4a791c7666","templateCredsSetupCompleted":true},"nodes":[{"id":"af6e85ef-2255-454f-8281-517b17a112c0","name":"When chat message received","type":"@n8n/n8n-nodes-langchain.chatTrigger","position":[-80,736],"webhookId":"29621de8-bddd-4314-80fd-4716072e4342","parameters":{"options":{}},"typeVersion":1.4},{"id":"f5884164-83b2-48d0-806d-381c1ba9b802","name":"decompose_query","type":"@n8n/n8n-nodes-langchain.agent","position":[496,736],"parameters":{"text":"={{ $('When chat message received').item.json.chatInput }}","options":{"systemMessage":"=Analyze this customer support query and determine if it needs to be broken down into sub-questions.\n        \n        Original query: {{ $('When chat message received').item.json.chatInput }}\n        \n        Rules:\n        - If the query is simple and focused on ONE topic, respond with: SINGLE_QUESTION\n        - If the query has multiple distinct aspects that would benefit from separate research, break it into 2-4 specific sub-questions\n        - Each sub-question should be self-contained and cacheable\n        \n        If breaking down, provide ONLY the sub-questions, one per line, no numbering.\n        If keeping as single question, respond with exactly: SINGLE_QUESTION\n---\noutput should be json object with the follwoing structure:\n{\n\"questions\": [\"Q1\", \"Q2\", \"Q3\",\"Q4\"]\n}"},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"2c48cfdb-bba2-4d9e-88c5-72176c0d9595","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[704,1040],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"questions\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"description\": \"List of generated questions.\"\n    }\n  },\n  \"required\": [\"questions\"]\n}\n"},"typeVersion":1.3},{"id":"0c52729a-53e9-4f18-a4b4-845cc2384bec","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[800,736],"parameters":{"options":{"disableDotNotation":false,"destinationFieldName":"question"},"fieldToSplitOut":"output.questions"},"typeVersion":1},{"id":"6410933e-dde4-4de5-9f72-5444f0f51891","name":"Search LangCache","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[1248,528],"parameters":{"url":"={{ $('LangCache Config').item.json.langcacheBaseUrl }}/v1/caches/{{ $('LangCache Config').item.json.langcacheCacheId }}/entries/search","method":"POST","options":{},"sendBody":true,"sendHeaders":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"prompt","value":"={{ $('Loop Over Items').item.json.question }}"},{"name":"similarityThreshold","value":"={{ $('LangCache Config').item.json.similarityThreshold }}"}]},"genericAuthType":"httpBearerAuth","headerParameters":{"parameters":[{"name":"accept","value":"application/json"}]}},"credentials":{"httpBearerAuth":{"id":"T6ZNH7eIULGzsb4u","name":"Bearer Auth account"}},"typeVersion":4.3},{"id":"65f6963c-6faf-46a4-971d-bf162a2cf49d","name":"Is Cache Hit?","type":"n8n-nodes-base.if","position":[1488,448],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"a84a9a1c-f13b-465c-abc2-f27b9e24f605","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.data?.[0]?.similarity >= $('LangCache Config').item.json.similarityThreshold }}","rightValue":""}]}},"typeVersion":2.3},{"id":"0f16f03d-6fe1-4da8-9cc5-1fbba5012f30","name":"LangCache Config","type":"n8n-nodes-base.set","position":[224,736],"parameters":{"options":{},"assignments":{"assignments":[{"id":"79a40928-d50d-4998-90d8-cea319e9a1b7","name":"langcacheBaseUrl","type":"string","value":"https://aws-us-east-1.langcache.redis.io"},{"id":"b9f02205-4a11-4814-9971-ee840b32537f","name":"langcacheCacheId","type":"string","value":"b83aa61d58be484ebc37c64f1f30c2fa"},{"id":"cdc69c29-a34f-40e1-a9dd-193aacae9c69","name":"similarityThreshold","type":"number","value":0.75},{"id":"2bebfa5b-9f31-4a60-8121-422ce9a5b846","name":"max_iterations","type":"string","value":"2"}]}},"typeVersion":3.4},{"id":"b142939c-814c-4b36-87bd-45a955f3c564","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[1024,880],"parameters":{"options":{}},"typeVersion":3},{"id":"ea1352da-745e-4a86-8365-5ddfe8ed93ab","name":"synthesize_response_node","type":"@n8n/n8n-nodes-langchain.agent","position":[1408,864],"parameters":{"text":"=- Original query: \n        {{ $('When chat message received').item.json.chatInput }}\n- Information gathered:\n{{ $json.data.toJsonString() }}","options":{"systemMessage":"= You are a helpful customer support assistant. Combine the following question-answer pairs \ninto a single, coherent, and comprehensive response to the user's original query.\n        \n1- If information gathered is enough to answer the question, Provide a natural, conversational response that:\n  - Directly addresses the user's question\n  - Integrates all relevant information smoothly\n  - Is helpful and actionable\n  - Maintains a professional, friendly tone.\n\n2- If information gathered is not enough or accurate to answer the question reply with: \n\"I apologize, but I couldn't find answers to your question. Please try rephrasing or contact support directly.\""},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"7548562c-2a2a-4c4b-8aae-5ed08d5dfb25","name":"Aggregate","type":"n8n-nodes-base.aggregate","position":[1248,864],"parameters":{"options":{},"aggregate":"aggregateAllItemData"},"typeVersion":1},{"id":"aecc43ec-bb69-4d13-a7a4-00bb91453172","name":"Redis Vector Store","type":"@n8n/n8n-nodes-langchain.vectorStoreRedis","position":[1440,-112],"parameters":{"mode":"insert","options":{},"redisIndex":{"__rl":true,"mode":"list","value":"kb-3accd7ed","cachedResultName":"kb-3accd7ed"}},"credentials":{"redis":{"id":"SjtIYT12MzDqYkT5","name":"Redis account"}},"typeVersion":1.3},{"id":"2344ea11-5412-4d6d-9d59-005d5748a475","name":"Redis Vector Store2","type":"@n8n/n8n-nodes-langchain.vectorStoreRedis","position":[2128,672],"parameters":{"mode":"retrieve-as-tool","options":{},"redisIndex":{"__rl":true,"mode":"list","value":"kb-3accd7ed","cachedResultName":"kb-3accd7ed"},"toolDescription":"Using search_knowledge_base tool for query"},"credentials":{"redis":{"id":"SjtIYT12MzDqYkT5","name":"Redis account"}},"typeVersion":1.3},{"id":"84e92cea-0cf7-45c8-b346-d87126052efc","name":"Embeddings OpenAI","type":"@n8n/n8n-nodes-langchain.embeddingsOpenAi","position":[2112,816],"parameters":{"options":{}},"credentials":{"openAiApi":{"id":"fLyAfLmAnGMwfIoV","name":"n8n free OpenAI API credits"}},"typeVersion":1.2},{"id":"7a76f285-d661-4fd7-83cc-f20f050dbcc9","name":"Embeddings OpenAI1","type":"@n8n/n8n-nodes-langchain.embeddingsOpenAi","position":[1120,144],"parameters":{"options":{}},"credentials":{"openAiApi":{"id":"fLyAfLmAnGMwfIoV","name":"n8n free OpenAI API credits"}},"typeVersion":1.2},{"id":"bfe94569-e5c7-4282-b2f9-c710a076907d","name":"Default Data Loader","type":"@n8n/n8n-nodes-langchain.documentDefaultDataLoader","position":[1408,144],"parameters":{"options":{}},"typeVersion":1.1},{"id":"27cd82d3-d938-49bc-92f2-213d80000e43","name":"example Data","type":"n8n-nodes-base.set","position":[1216,-112],"parameters":{"options":{},"assignments":{"assignments":[{"id":"8da432e2-ebc9-454b-b9b1-0968df56a715","name":"raw_docs","type":"array","value":"=[     \"Our premium support plan includes 24/7 phone support, priority email response within 2 hours, and dedicated account management. Premium support costs $49/month.\",     \"Account upgrade process: Go to Account Settings → Plan & Billing → Select Upgrade. Available plans: Basic $9/month, Pro $29/month, Enterprise $99/month.\",     \"API rate limits by plan: Free tier 100 requests/hour, Basic 1,000 requests/hour, Pro 10,000 requests/hour, Enterprise unlimited with fair-use policy.\",     \"Data export options: CSV, JSON, XML formats supported. Large exports (>1GB) may take up to 24 hours to process.\",     \"Third-party integrations: Native support for Slack, Microsoft Teams, Zoom, Salesforce, HubSpot. 200+ additional integrations available via Zapier.\",     \"Security features: SOC2 compliance, end-to-end encryption, GDPR compliance, SSO integration, audit logs, IP whitelisting.\",     \"Billing and payments: We accept all major credit cards, PayPal, and ACH transfers. Enterprise customers can pay by invoice with NET30 terms.\",     \"Account recovery: Use forgot password link, verify email, or contact support with account verification details. Response within 4 hours.\" ]"}]}},"typeVersion":3.4},{"id":"b05e94c5-98ff-4be8-aa56-1739a99019f5","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1072,1072],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"fLyAfLmAnGMwfIoV","name":"n8n free OpenAI API credits"}},"typeVersion":1.3},{"id":"b02d24fa-1de0-4240-b7bb-02f02c2619f8","name":"Save to LangCache","type":"n8n-nodes-base.httpRequest","position":[2528,944],"parameters":{"url":"={{ $('LangCache Config').item.json.langcacheBaseUrl }}/v1/caches/{{ $('LangCache Config').item.json.langcacheCacheId }}/entries","method":"POST","options":{},"sendBody":true,"sendHeaders":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"prompt","value":"={{ $('Loop Over Items').item.json.question }}"},{"name":"response","value":"={{ $('search_node1').item.json.output }}"}]},"genericAuthType":"httpBearerAuth","headerParameters":{"parameters":[{"name":"accept","value":"application/json"}]}},"credentials":{"httpBearerAuth":{"id":"T6ZNH7eIULGzsb4u","name":"Bearer Auth account"}},"typeVersion":4.3},{"id":"a45a8b97-dd9f-4d09-989f-1a59944c493a","name":"search_node1","type":"@n8n/n8n-nodes-langchain.agent","position":[2000,480],"parameters":{"text":"={{ $('Loop Over Items').item.json.question }}","options":{"systemMessage":"=You are a research engine.\n\nYou must answer questions using ONLY the provided knowledge base.\nYou are strictly forbidden from using:\n- external knowledge\n- prior training data\n- assumptions or extrapolation\n\nIf the requested information is not explicitly present in the knowledge base,\nyou MUST respond with exactly:\n\nno info found\n\nDo not explain your reasoning.\nDo not add context, summaries, or opinions.\nDo not mention these rules.\nProduce concise, factual answers only.\n"},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"96f48cc5-8734-4c00-9977-a55a21c75ec1","name":"evaluate_quality","type":"@n8n/n8n-nodes-langchain.openAi","position":[2448,528],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4.1-mini","cachedResultName":"GPT-4.1-MINI"},"options":{"textFormat":{"textOptions":{"type":"json_object"}}},"responses":{"values":[{"content":"=Original sub-question: {{ $('Loop Over Items').item.json.question }}\nResearch result: {{ $('search_node1').item.json.output }}"},{"role":"system","content":"=Evaluate the quality and completeness of this research result for answering the user's question.\n            \n\n\nProvide:\n1. A quality score from 0.0 to 1.0 (where 1.0 is perfect, 0.7+ is adequate)\n2. Brief feedback on what's missing or could be improved (if score < 0.7)\n\nFormat your response as:\nSCORE: 0.X\nFEEDBACK: [your feedback or \"Adequate\" if score >= 0.7]"}]},"builtInTools":{}},"credentials":{"openAiApi":{"id":"fLyAfLmAnGMwfIoV","name":"n8n free OpenAI API credits"}},"typeVersion":2.1},{"id":"dad250fb-5286-4cca-9d58-99b04298fbae","name":"low quality ?","type":"n8n-nodes-base.if","position":[2944,528],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"d4904cd9-18ce-45c2-9e3b-e5bf7e339e48","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.SCORE < 0.7 && $('current_iteration').item.json.current_iterration >= $('LangCache Config').item.json.max_iterations\t}}","rightValue":0}]}},"typeVersion":2.3},{"id":"1cfea78d-da68-4c4e-af21-a3085f842a39","name":"increase iteration","type":"n8n-nodes-base.set","position":[3360,480],"parameters":{"options":{},"assignments":{"assignments":[{"id":"e5f9dc79-f8fe-4d03-a059-a1948821451c","name":"current_iteration","type":"number","value":"={{ $('current_iteration').item.json.current_iterration + 1 }}"}]}},"typeVersion":3.4},{"id":"a650cdaf-4a8e-4938-af44-182d94b34193","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[1024,-112],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.3},{"id":"e250b675-af0c-4c59-8749-d027da7b72f8","name":"Simple Memory","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[512,1056],"parameters":{"sessionKey":"={{ $('When chat message received').item.json.sessionId }}","sessionIdType":"customKey","contextWindowLength":10},"typeVersion":1.3},{"id":"726bfd01-9dac-42ff-816c-151cbe58f897","name":"Simple Memory1","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[1952,784],"parameters":{"sessionKey":"={{ $('When chat message received').item.json.sessionId }}","sessionIdType":"customKey","contextWindowLength":10},"typeVersion":1.3},{"id":"0677630f-5809-408c-8233-85d734f2a732","name":"Simple Memory2","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[1328,1056],"parameters":{"sessionKey":"={{ $('When chat message received').item.json.sessionId }}","sessionIdType":"customKey","contextWindowLength":10},"typeVersion":1.3},{"id":"5f9e7ddc-9454-451d-8f19-28a145aaa9b2","name":"current_iteration","type":"n8n-nodes-base.set","position":[1840,464],"parameters":{"options":{},"assignments":{"assignments":[{"id":"0d7da9a5-ff39-4e6a-9105-6ac8d3a06cde","name":"current_iteration","type":"number","value":"={{ $json.current_iteration ?? 1 }}"}]}},"typeVersion":3.4},{"id":"fdf91552-525c-4b3d-8e0f-de910525e648","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[48,-800],"parameters":{"width":880,"height":1120,"content":"# Customer support RAG workflow:\n## Workflow Overview\nCache-first **RAG** workflow for customer support.\n\n**Flow:**  \nChat → Decompose → Cache → Redis Search → Quality Check → Cache → Respond\n\n**Goals:** Fast, accurate, no hallucinations, cost-controlled.\n\n\nThis workflow provides an end-to-end Retrieval-Augmented Generation (RAG) solution for customer support use cases using n8n. It combines a cache-first strategy with semantic search to deliver fast, accurate answers from a structured knowledge base.\n\nIncoming chat messages are analyzed and, when needed, decomposed into smaller sub-questions. Each sub-question is first checked against LangCache to reuse previously generated answers and reduce repeated LLM calls. If no suitable cached result is found, the workflow retrieves relevant documents from a Redis vector store powered by OpenAI embeddings.\n\nTo improve answer reliability, retrieved results are evaluated for quality. If the quality score does not meet the configured threshold, the workflow can re-run retrieval with adjusted context for a limited number of iterations. Once sufficient information is gathered, all results are consolidated into a single, concise response suitable for customer-facing communication.\n\nThis template is ideal for support chatbots, internal help desks, and knowledge-base-driven assistants where performance, cost control, and answer consistency are critical.\n\n## How it works\n\nWhen a chat message is received, the workflow determines whether it contains a single question or multiple topics. If necessary, the message is split into a small number of focused sub-questions.\n\nEach sub-question is first checked against LangCache using a similarity threshold. High-confidence cache hits are reused immediately to minimize latency and API cost. If no cache hit is found, the workflow queries a Redis vector store containing embedded knowledge-base documents. Retrieved results are then evaluated for quality and relevance.\n\nIf the quality score is below the defined threshold, the workflow retries retrieval for a limited number of iterations. Once acceptable results are available, all responses are merged and synthesized into one clear final answer that is returned to the user.\n\n## Setup steps\n\n1- Create and configure credentials in n8n for OpenAI, Redis, and LangCache.\n\n2- Open the LangCache Config node and set the cache ID, base URL, similarity threshold, and maximum iterations.\n\n3- Ensure your Redis vector index is populated with knowledge-base documents (or use the provided example loader).\n\n4- Review the OpenAI model and embedding nodes and adjust them to match your performance and cost requirements.\n\n5- Test the workflow using the chat trigger and verify cache hits, vector retrieval, and final response output."},"typeVersion":1},{"id":"7994e6ea-45d6-44b6-8a1b-fc9b347f32eb","name":"getScore","type":"n8n-nodes-base.set","position":[2768,528],"parameters":{"options":{},"assignments":{"assignments":[{"id":"9da210db-b091-44b8-b936-d6263d78b512","name":"SCORE","type":"number","value":"={{ $json.output[0].content[0].text.SCORE }}"},{"id":"d6f96594-6a30-4899-8bdf-388ba695c779","name":"FEEDBACK","type":"string","value":"={{ $json.output[0].content[0].text.FEEDBACK }}"}]}},"typeVersion":3.4},{"id":"e6978f27-8803-4851-b148-fdbf9911648c","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[112,512],"parameters":{"width":320,"height":656,"content":"#### Configuration (Edit First)\nUpdate in **LangCache Config**:\n- `langcacheBaseUrl`\n- `langcacheCacheId`\n- `similarityThreshold` (default `0.75`)\n- `max_iterations` (default `2`)"},"typeVersion":1},{"id":"d44f3c0c-fb23-4bd1-97b4-96d32f446e8c","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[464,512],"parameters":{"width":464,"height":656,"content":"## Query Decomposition\nSplits complex user input into focused questions to improve retrieval and caching.\n"},"typeVersion":1},{"id":"981cbf1e-7179-4c77-8a79-b46d50dfdf90","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[992,384],"parameters":{"width":704,"height":352,"content":"#### Cache-First Strategy\nEach question is checked in **LangCache** first.\n- Hit → reuse answer  \n- Miss → search Redis\n\nReduces latency and API cost."},"typeVersion":1},{"id":"8c35a870-1f2b-4207-9827-6c8aeae2550b","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1728,384],"parameters":{"width":688,"height":784,"content":"#### Redis Vector Retrieval\nRuns only on cache miss.\nUses embeddings to retrieve relevant knowledge from Redis."},"typeVersion":1},{"id":"bb7f7b45-eee6-41ac-89d7-7b39062d04af","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[2432,384],"parameters":{"width":704,"height":384,"content":"## Quality Evaluation\nEach answer is scored (`0.0 – 1.0`).\n- ≥ `0.7` → accept  \n- < `0.7` → retry if allowed"},"typeVersion":1},{"id":"8b0d0a12-df24-4a78-a8f2-5d987c8da340","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[3168,384],"parameters":{"width":384,"height":784,"content":"## Retry Control\nRetries are limited by `max_iterations` to avoid loops and high cost."},"typeVersion":1},{"id":"f1a6f21c-fba8-42eb-b479-b6e10b2c8339","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[2432,800],"parameters":{"width":704,"height":368,"content":"## ## Save to Cache\nOnly high-quality answers are saved to **LangCache** for future reuse."},"typeVersion":1},{"id":"da62019e-6e0e-41cd-9918-fe295ddc9659","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[992,768],"parameters":{"width":704,"height":400,"content":"## Generate the respoonse"},"typeVersion":1},{"id":"70286448-0f9d-44d6-ba62-666efd454d5b","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[1024,-192],"parameters":{"width":752,"height":480,"content":"## Prepare the Knowledge Base -  Example Data"},"typeVersion":1}],"pinData":{},"connections":{"getScore":{"main":[[{"node":"low quality ?","type":"main","index":0}]]},"Aggregate":{"main":[[{"node":"synthesize_response_node","type":"main","index":0}]]},"Split Out":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"example Data":{"main":[[{"node":"Redis Vector Store","type":"main","index":0}]]},"search_node1":{"main":[[{"node":"evaluate_quality","type":"main","index":0}]]},"Is Cache Hit?":{"main":[[{"node":"Loop Over Items","type":"main","index":0}],[{"node":"current_iteration","type":"main","index":0}]]},"Simple Memory":{"ai_memory":[[{"node":"decompose_query","type":"ai_memory","index":0}]]},"low quality ?":{"main":[[{"node":"increase iteration","type":"main","index":0}],[{"node":"Save to LangCache","type":"main","index":0}]]},"Simple Memory1":{"ai_memory":[[{"node":"search_node1","type":"ai_memory","index":0}]]},"Simple Memory2":{"ai_memory":[[{"node":"synthesize_response_node","type":"ai_memory","index":0}]]},"Loop Over Items":{"main":[[{"node":"Aggregate","type":"main","index":0}],[{"node":"Search LangCache","type":"main","index":0}]]},"decompose_query":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"LangCache Config":{"main":[[{"node":"decompose_query","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"example Data","type":"main","index":0}]]},"Search LangCache":{"main":[[{"node":"Is Cache Hit?","type":"main","index":0}],[{"node":"current_iteration","type":"main","index":0}]]},"evaluate_quality":{"main":[[{"node":"getScore","type":"main","index":0}]]},"Embeddings OpenAI":{"ai_embedding":[[{"node":"Redis Vector Store2","type":"ai_embedding","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"decompose_query","type":"ai_languageModel","index":0},{"node":"synthesize_response_node","type":"ai_languageModel","index":0},{"node":"search_node1","type":"ai_languageModel","index":0}]]},"Save to LangCache":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"current_iteration":{"main":[[{"node":"search_node1","type":"main","index":0}]]},"Embeddings OpenAI1":{"ai_embedding":[[{"node":"Redis Vector Store","type":"ai_embedding","index":0}]]},"increase iteration":{"main":[[{"node":"current_iteration","type":"main","index":0}]]},"Default Data Loader":{"ai_document":[[{"node":"Redis Vector Store","type":"ai_document","index":0}]]},"Redis Vector Store2":{"ai_tool":[[{"node":"search_node1","type":"ai_tool","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"decompose_query","type":"ai_outputParser","index":0}]]},"When chat message received":{"main":[[{"node":"LangCache Config","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":38,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.set":{"count":5},"n8n-nodes-base.splitOut":{"count":1},"n8n-nodes-base.aggregate":{"count":1},"n8n-nodes-base.stickyNote":{"count":10},"n8n-nodes-base.httpRequest":{"count":2},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":3},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.openAi":{"count":1},"@n8n/n8n-nodes-langchain.chatTrigger":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1},"@n8n/n8n-nodes-langchain.embeddingsOpenAi":{"count":2},"@n8n/n8n-nodes-langchain.vectorStoreRedis":{"count":2},"@n8n/n8n-nodes-langchain.memoryBufferWindow":{"count":3},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1},"@n8n/n8n-nodes-langchain.documentDefaultDataLoader":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Mohamed Abdelwahab","username":"mohelwah","bio":"I’m an AI Automation Engineer with 5+ years of experience designing and implementing intelligent, scalable automation systems. I specialize in streamlining operations, reducing manual tasks, and building AI-powered solutions using Python, Node.js, and no-code/low-code platforms n8n.\n\nWhether you need to integrate complex APIs, build automated workflows, or deploy AI chatbots, I can deliver robust solutions tailored to your business needs.\nhttps://www.freelancer.com/u/MohmedAbdelwahab","verified":true,"links":["https://www.upwork.com/freelancers/~01bf6d0d89522ab95d"],"avatar":"https://gravatar.com/avatar/bd48d27acd715a75456eefdfb956c531bc94d929322c1610cee61f70316d7158?r=pg&d=retro&size=200"},"nodes":[{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1141,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.embeddingsOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Embeddings"]}}},"group":"[\"transform\"]","defaults":{"name":"Embeddings OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"Embeddings OpenAI","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1163,"icon":"fa:database","name":"@n8n/n8n-nodes-langchain.memoryBufferWindow","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Memory"],"Memory":["For beginners"]}}},"group":"[\"transform\"]","defaults":{"name":"Simple Memory"},"iconData":{"icon":"database","type":"icon"},"displayName":"Simple Memory","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1239,"icon":"file:splitOut.svg","name":"n8n-nodes-base.splitOut","codex":{"data":{"alias":["Split","Nested","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Split Out"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjOUI2REQ1IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4MCAxNDhjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzMjJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNDZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDMyMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE0NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMzIyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTQ2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNDM4IDc2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjU2YzAgMjYuOTc4LTEwLjI3MiA1MS41NTctMjcuMTE5IDcwLjAzOS01LjA1NSA1LjU0NS01LjA1NSAxNC4zNzcgMCAxOS45MjIgMTYuODQ3IDE4LjQ4MiAyNy4xMTkgNDMuMDYxIDI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMySDQyNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtNDQuMTgzIDAtODAtMzUuODE3LTgwLTgwdi01NmMwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZhNS43ODMgNS43ODMgMCAwIDEtNS43ODMtNS43ODN2LTM2LjQzNGE1Ljc4MyA1Ljc4MyAwIDAgMSA1Ljc4My01Ljc4M2MzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU2YzAtNDQuMTgzIDM1LjgxNy04MCA4MC04MEg0MjZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMzYgMjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik01MTIgMEgwdjUxMmg1MTJ6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"},"displayName":"Split Out","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1243,"icon":"file:binary.svg","name":"@n8n/n8n-nodes-langchain.documentDefaultDataLoader","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.documentdefaultdataloader/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Document Loaders"]}}},"group":"[\"transform\"]","defaults":{"name":"Default Data Loader"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3NjgiIGhlaWdodD0iMTAyNCI+PHBhdGggZmlsbD0iIzdEN0Q4NyIgZD0iTTAgOTYwVjY0aDU3NmwxOTIgMTkydjcwNHptNzA0LTY0MEw1MTIgMTI4SDY0djc2OGg2NDB6TTMyMCA1MTJIMTI4VjI1NmgxOTJ6bS02NC0xOTJoLTY0djEyOGg2NHptMCA0NDhoNjR2NjRIMTI4di02NGg2NFY2NDBoLTY0di02NGgxMjh6bTI1Ni0zMjBoNjR2NjRIMzg0di02NGg2NFYzMjBoLTY0di02NGgxMjh6bTY0IDM4NEgzODRWNTc2aDE5MnptLTY0LTE5MmgtNjR2MTI4aDY0eiIvPjwvc3ZnPg=="},"displayName":"Default Data Loader","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1247,"icon":"fa:comments","name":"@n8n/n8n-nodes-langchain.chatTrigger","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"}]},"categories":["Core Nodes","Langchain"]}},"group":"[\"trigger\"]","defaults":{"name":"When chat message received"},"iconData":{"icon":"comments","type":"icon"},"displayName":"Chat Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"},{"id":26,"name":"Langchain"}]},{"id":1250,"icon":"file:openAi.svg","name":"@n8n/n8n-nodes-langchain.openAi","codex":{"data":{"alias":["LangChain","ChatGPT","Sora","DallE","whisper","audio","transcribe","tts","assistant"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Miscellaneous","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg1IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NiAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MSA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K"},"displayName":"OpenAI","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1317,"icon":"file:redis.svg","name":"@n8n/n8n-nodes-langchain.vectorStoreRedis","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreredis/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Tools":["Other Tools"],"Vector Stores":["Other Vector Stores"]}}},"group":"[\"transform\"]","defaults":{"name":"Redis Vector Store"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI4LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiIFsKCTwhRU5USVRZIG5zX2V4dGVuZCAiaHR0cDovL25zLmFkb2JlLmNvbS9FeHRlbnNpYmlsaXR5LzEuMC8iPgoJPCFFTlRJVFkgbnNfYWkgImh0dHA6Ly9ucy5hZG9iZS5jb20vQWRvYmVJbGx1c3RyYXRvci8xMC4wLyI+Cgk8IUVOVElUWSBuc19ncmFwaHMgImh0dHA6Ly9ucy5hZG9iZS5jb20vR3JhcGhzLzEuMC8iPgoJPCFFTlRJVFkgbnNfdmFycyAiaHR0cDovL25zLmFkb2JlLmNvbS9WYXJpYWJsZXMvMS4wLyI+Cgk8IUVOVElUWSBuc19pbXJlcCAiaHR0cDovL25zLmFkb2JlLmNvbS9JbWFnZVJlcGxhY2VtZW50LzEuMC8iPgoJPCFFTlRJVFkgbnNfc2Z3ICJodHRwOi8vbnMuYWRvYmUuY29tL1NhdmVGb3JXZWIvMS4wLyI+Cgk8IUVOVElUWSBuc19jdXN0b20gImh0dHA6Ly9ucy5hZG9iZS5jb20vR2VuZXJpY0N1c3RvbU5hbWVzcGFjZS8xLjAvIj4KCTwhRU5USVRZIG5zX2Fkb2JlX3hwYXRoICJodHRwOi8vbnMuYWRvYmUuY29tL1hQYXRoLzEuMC8iPgoJXT4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxuczp4PSImbnNfZXh0ZW5kOyIgeG1sbnM6aT0iJm5zX2FpOyIgeG1sbnM6Z3JhcGg9IiZuc19ncmFwaHM7IgoJCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE1Ni4wNTI5OTM4IDE0NCIKCQkgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTU2LjA1Mjk5MzggMTQ0OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6I0ZGNDQzODt9Cjwvc3R5bGU+Cgk8bWV0YWRhdGE+Cgk8c2Z3ICB4bWxucz0iJm5zX3NmdzsiPgoJCTxzbGljZXM+PC9zbGljZXM+CgkJPHNsaWNlU291cmNlQm91bmRzICBib3R0b21MZWZ0T3JpZ2luPSJ0cnVlIiBoZWlnaHQ9IjE0NCIgd2lkdGg9IjE1Ni4wNTMwMjQ2IiB4PSIwIiB5PSItMTQ0Ij48L3NsaWNlU291cmNlQm91bmRzPgoJPC9zZnc+CjwvbWV0YWRhdGE+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTQ3LjY3MDE2Niw3OS40NDgyNzI3Yy0xMC43OTQ2MDE0LDEzLjYwMTIwMzktMjIuNDUyNzc0LDI5LjE0NTQzMTUtNDUuNzY5MTE5MywyOS4xNDU0MzE1CgljLTIwLjgyNjgzNTYsMC0yOC41ODU4NzY1LTE4LjM3MDAxMDQtMjkuMTMxMzAxOS0zMy4yOTMxODI0YzQuNTYzMDQxNyw5LjY0OTA0NzksMTMuNDg0NjExNSwxNy40NjI4NTI1LDI3LjQwNDE2NzIsMTcuMTAxMjgwMgoJYzI2Ljc3MDYxNDYtMC44NjM1NzEyLDQ1LjEyMTQzNzEtMjUuMDQzNDc5OSw0NS4xMjE0MzcxLTQ3LjA2NDQ3MjJDMTQ1LjI5NTM0OTEsMTguOTk4NTAwOCwxMjUuNjQ5MTc3NiwwLDkxLjUzODIzMDksMAoJQzY3LjE0MjQyNTUsMCwzNi45MTc1NDE1LDkuMjgzMzU4NiwxNy4wNTU0NzE0LDIzLjk2NDAxNzljLTAuMjE1ODkwOSwxNS4xMTI0NDM5LDguMjAzODk5NCwzNC43NTg2MjEyLDExLjIyNjM4NywzMi41OTk3MDA5CgljMTcuMjE5MDgtMTIuMzgwNDgxNywzMC44NzMxOTc2LTIwLjM1MDE0MzQsNDQuMTE2NjE1My0yNC4zNDYyNTYzQzUyLjc5NDQ2MDMsNTQuMDc4NTg2Niw1Ljc1ODg3ODIsMTA0LjgzOTEwMzcsMCwxMTMuNzc1MTE2CglDMC42NDc2NzYyLDEyMS45NzkwMTE1LDEwLjc5NDYwMjQsMTQ0LDE1Ljc2MDEyMDQsMTQ0YzEuNTExMjQzOCwwLDIuODA2NTk2OC0wLjg2MzU3MTIsNC4zMTc4NDA2LTIuMzc0ODE2OQoJYzE0LjE4MDE0NTMtMTUuOTMyNjMyNCwyNS43Mzk2NDY5LTMwLjIxNzI5MjgsMzYuMDIxNTAzNC00My45ODU3MzMKCWMxLjQ0Mzc3OSwyMC4xNzk0NzM5LDExLjM2NjgwNiw0NC44NDkzMDQyLDM5LjEwODkzMjUsNDQuODQ5MzA0MmMyNC44Mjc1ODMzLDAsNDkuNDM5Mjc3Ni0xNy45MTkwMzY5LDYwLjY2NTY3MjMtNTguMjkwODU1NAoJQzE1Ny4xNjk0MTgzLDc5LjIzMjM4MzcsMTUxLjEyNDQzNTQsNzUuMzQ2MzI4NywxNDcuNjcwMTY2LDc5LjQ0ODI3Mjd6IE0xMTkuMzg4MzA1Nyw0Ni44NDg1NzU2CgljMCwxMi43Mzc2MzI4LTEyLjUyMTczNjEsMTguOTk4NTAwOC0yMy45NjQwMTk4LDE4Ljk5ODUwMDhjLTYuMTE2MjMzOCwwLTEwLjgxNDYyODYtMS42MDYwNjM4LTE0LjUzMDMzNDUtMy42OTI5MzU5CgljNi44MzY4NjA3LTEwLjM1MjQ4NTcsMTMuNjA0NTc2MS0yMC45NjgwOTM5LDIwLjg3NTc0NzctMzIuMzMyMTUzMwoJQzExNC41OTA2MTQzLDMxLjk5MjAyOTIsMTE5LjM4ODMwNTcsMzkuMTE4NTIyNiwxMTkuMzg4MzA1Nyw0Ni44NDg1NzU2eiIvPgo8L3N2Zz4K"},"displayName":"Redis Vector Store","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":40,"name":"Support Chatbot"},{"id":48,"name":"AI RAG"}],"image":[]}}