This workflow follows the Agent → Chat Trigger recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "My workflow",
"nodes": [
{
"parameters": {},
"id": "d0bad5c3-b1d4-47cd-adb2-e5bc06a7a214",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
820,
260
],
"typeVersion": 1
},
{
"parameters": {
"url": "https://gist.githubusercontent.com/nanotaboada/6396437/raw/855dd84436be2c86e192abae2ac605743fc3a127/books.json",
"options": {}
},
"id": "6ffa48fb-c82e-4b91-a0b6-8a16d9bb19cb",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
1140,
260
],
"typeVersion": 4.2
},
{
"parameters": {
"mode": "insert",
"pineconeIndex": {
"__rl": true,
"value": "768-school",
"mode": "list",
"cachedResultName": "768-school"
},
"options": {}
},
"id": "20b729b7-c5d2-4999-8666-14c8d26bebc9",
"name": "Pinecone Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"position": [
1560,
260
],
"typeVersion": 1,
"credentials": {
"pineconeApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"id": "072b951b-56cd-4e09-b159-a7ecaef38415",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
1560,
460
],
"typeVersion": 1
},
{
"parameters": {
"options": {}
},
"id": "e31771fc-1202-4212-bbac-a19de060f61b",
"name": "Recursive Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
1640,
640
],
"typeVersion": 1
},
{
"parameters": {
"options": {}
},
"id": "ad00d254-c872-407d-b0ca-6bd3737619ac",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
800,
1020
],
"typeVersion": 1.1
},
{
"parameters": {
"options": {}
},
"id": "20fc296b-f682-4caa-bd91-2bc9dcd3d28e",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1140,
1020
],
"typeVersion": 1.7
},
{
"parameters": {},
"id": "49461bb0-f53f-4957-9c96-dde8bda23ad7",
"name": "Window Buffer Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1240,
1280
],
"typeVersion": 1.3
},
{
"parameters": {
"name": "GitHub_OpenAPI_Specification",
"description": "Use this tool to get information about the books. This database contains books information"
},
"id": "b8428bab-c17c-42a6-9861-5e816669c027",
"name": "Vector Store Tool",
"type": "@n8n/n8n-nodes-langchain.toolVectorStore",
"position": [
1420,
1220
],
"typeVersion": 1
},
{
"parameters": {
"content": "## Indexing content in the vector database\nThis part of the workflow is responsible for extracting content, generating embeddings and sending them to the Pinecone vector store.\n\nIt requests the OpenAPI specifications from GitHub using a HTTP request. Then, it splits the file in chunks, generating embeddings for each chunk using OpenAI, and saving them in Pinecone vector DB.",
"height": 200,
"width": 640
},
"id": "341b998d-0313-4756-a803-9dc9111955d3",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
780,
0
],
"typeVersion": 1
},
{
"parameters": {
"content": "## Querying and response generation \n\nThis part of the workflow is responsible for the chat interface, querying the vector store and generating relevant responses.\n\nIt uses OpenAI GPT 4o-mini to generate responses.",
"width": 580
},
"id": "2dbce76b-4478-4fb6-92ab-756962833751",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
820
],
"typeVersion": 1
},
{
"parameters": {
"options": {}
},
"id": "4909c2c7-dd6f-4c4f-8721-94fcf3ac1a9d",
"name": "Generate User Query Embedding",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
1080,
1680
],
"typeVersion": 1.2
},
{
"parameters": {
"pineconeIndex": {
"__rl": true,
"value": "768-school",
"mode": "list",
"cachedResultName": "768-school"
},
"options": {}
},
"id": "273860be-a67a-47e2-be36-f1cd82393090",
"name": "Pinecone Vector Store (Querying)",
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"position": [
1340,
1400
],
"typeVersion": 1,
"credentials": {
"pineconeApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"id": "aca0a062-66d6-4b41-97a2-8e1e9832b724",
"name": "Generate Embeddings",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
920,
520
],
"typeVersion": 1.2
},
{
"parameters": {
"content": "## RAG workflow in n8n\n\nThis is an example of how to use RAG techniques to create a chatbot with n8n. It is an API documentation chatbot that can answer questions about the GitHub API. It uses OpenAI for generating embeddings, the gpt-4o-mini LLM for generating responses and Pinecone as a vector database.\n\n### Before using this template\n* create OpenAI and Pinecone accounts\n* obtain API keys OpenAI and Pinecone \n* configure credentials in n8n for both\n* ensure you have a Pinecone index named \"n8n-demo\" or adjust the workflow accordingly.",
"height": 320,
"width": 620
},
"id": "823494c5-fed8-4d6f-9f17-b7c49c82a58e",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"typeVersion": 1
},
{
"parameters": {
"modelName": "models/text-embedding-004"
},
"type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
"typeVersion": 1,
"position": [
1420,
440
],
"id": "25587bfc-d8b2-4f04-aec9-65b3f74e465e",
"name": "Embeddings Google Gemini",
"notesInFlow": false,
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "// This runs once for every incoming item\nconst doc = JSON.parse($json.data); // turn the string into an object\nreturn { json: doc }; // forward the parsed object"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
740,
600
],
"id": "8a140515-fdfe-4280-83d3-a3c92b004808",
"name": "Code"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.outputParserItemList",
"typeVersion": 1,
"position": [
1160,
580
],
"id": "89e4dd95-95c2-444d-ac6d-3b8e499dd3f6",
"name": "Item List Output Parser"
},
{
"parameters": {
"modelName": "models/gemini-2.5-flash-preview-05-20",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
880,
1260
],
"id": "0ea300cd-6023-4c94-9199-ef4ab5b2899b",
"name": "Google Gemini Chat Model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"modelName": "models/text-embedding-004"
},
"type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
"typeVersion": 1,
"position": [
1360,
1540
],
"id": "177b1823-475e-4712-8a54-f025dc6c9525",
"name": "Embeddings Google Gemini1",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"modelName": "models/gemini-2.5-flash",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
1740,
1440
],
"id": "d52f08bd-fbba-4b82-a3fa-6c44a9ffe4df",
"name": "Google Gemini Chat Model1",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"HTTP Request": {
"main": [
[
{
"node": "Pinecone Vector Store",
"type": "main",
"index": 0
}
]
]
},
"Vector Store Tool": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Pinecone Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"Generate Embeddings": {
"ai_embedding": [
[]
]
},
"Window Buffer Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Generate User Query Embedding": {
"ai_embedding": [
[]
]
},
"Pinecone Vector Store (Querying)": {
"ai_vectorStore": [
[
{
"node": "Vector Store Tool",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"Recursive Character Text Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Embeddings Google Gemini": {
"ai_embedding": [
[
{
"node": "Pinecone Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Code": {
"main": [
[]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Embeddings Google Gemini1": {
"ai_embedding": [
[
{
"node": "Pinecone Vector Store (Querying)",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Google Gemini Chat Model1": {
"ai_languageModel": [
[
{
"node": "Vector Store Tool",
"type": "ai_languageModel",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "384b23b6-4040-4730-9cf1-5c1a2f9c3698",
"id": "3vFnQhIcjNJduazb",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googlePalmApipineconeApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Workflow-Rag. Uses httpRequest, vectorStorePinecone, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 21 nodes.
Source: https://github.com/SciWalker/edu-app/blob/c4e7d968fbed5d2f66839f77bd0120e657a73364/n8n/workflow-rag.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Alfred (funcional). Uses gmailTool, googleCalendarTool, gmail, embeddingsOpenAi. Event-driven trigger; 83 nodes.
This comprehensive workflow bundle is designed as a powerful starter kit, enabling you to build a multi-functional AI assistant on Telegram. It seamlessly integrates AI-powered voice interactions, an
This intelligent chatbot leverages cutting-edge financial APIs and AI-driven analysis to deliver comprehensive stock research reports. Get instant access to professional-grade investment analysis that
This n8n template automatically classifies incoming emails (Sales, Support, Internal, Finance, Promotions) and routes them to a dedicated OpenAI LLM Agent for processing. Depending on the category, th
Automate Outreach Prospect automates finding, enriching, and messaging potential partners (like restaurants, malls, and bars) using Apify Google Maps scraping, Perplexity enrichment, OpenAI LLMs, Goog