This workflow follows the Agent → OpenAI Embeddings 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": "dssat-rag-webhook",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "chat",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-736,
-432
],
"id": "b7086b85-efde-4f87-9138-1096c4cc3f47",
"name": "Webhook"
},
{
"parameters": {
"model": "sfr-embedding-mistral",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.2,
"position": [
0,
208
],
"id": "ef34ddcb-d0e7-43ba-ba88-6faec5032e7d",
"name": "Embeddings OpenAI1",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.body.userQuery }}",
"options": {
"systemMessage": "You are a DSSAT expert. answer the question, based on the tool, very concisely in upto 2 sentence. do not provide clutter or explanations, just the curated answer.\n\ndo NOT provide answers outside the available data, answer only from the provided data. for some queries you would need to relate different runs to drive insights and key points.\n\nIf the query involves crop that is not available, ask user to run dssat for new crop and provide overview file to process then only you can answer for that.\n\nif the query involves question with varying parameter values, if exact parameter value is not available, try to get answer from available data with nearest available parameter value and in your response, inform user to run dssat if exact parameter value to be used in calculation.\nif the parameter value is present already, then answer as usual.",
"maxIterations": 5
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3.1,
"position": [
-480,
-176
],
"id": "d9a42455-8daf-4dfc-9c1e-305c1dfb4340",
"name": "AI Agent2"
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-oss-120b",
"mode": "list",
"cachedResultName": "gpt-oss-120b"
},
"builtInTools": {},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.3,
"position": [
-800,
48
],
"id": "d3682c09-5257-489f-be51-363b76733400",
"name": "OpenAI Chat Model2",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={\n \"output\": {{ JSON.stringify($json.output) }}\n}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
-112,
-416
],
"id": "197220d0-3cbc-46b5-aed8-13a6d0f16e4a",
"name": "Respond to Webhook"
},
{
"parameters": {
"mode": "retrieve-as-tool",
"toolDescription": "work with your data in qdrant tool",
"qdrantCollection": {
"__rl": true,
"value": "dssat-rag",
"mode": "list",
"cachedResultName": "dssat-rag"
},
"topK": 6,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"typeVersion": 1.3,
"position": [
-176,
0
],
"id": "117547d7-daa5-4f32-b953-0ac03a65a1d5",
"name": "Qdrant Vector Store",
"credentials": {
"qdrantApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "AI Agent2",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI1": {
"ai_embedding": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"OpenAI Chat Model2": {
"ai_languageModel": [
[
{
"node": "AI Agent2",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Agent2": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Qdrant Vector Store": {
"ai_tool": [
[
{
"node": "AI Agent2",
"type": "ai_tool",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false
},
"versionId": "b4c2e612-1c63-4839-9fc6-3cd0bbc070f5",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "sJtChoCAqFKYMlqs",
"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.
openAiApiqdrantApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
dssat-rag-webhook. Uses embeddingsOpenAi, agent, lmChatOpenAi, vectorStoreQdrant. Webhook trigger; 6 nodes.
Source: https://github.com/itswael/DSSAT-RAG/blob/main/n8n/dssat-rag-webhook.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.
HeyDinastia. Uses executeCommand, httpRequest, youTube, postgres. Webhook trigger; 66 nodes.
This Workflow simulates an AI-powered phone agent with RetellAI with two main functions: 📅 Appointment Booking – It can schedule appointments directly into Google Calendar. 🧠 RAG-based Information Ret
AI Phone Agent with RetellAI. Uses lmChatOpenAi, outputParserStructured, vectorStoreQdrant, embeddingsOpenAi. Webhook trigger; 36 nodes.
Build a Chatbot, Voice Agent and Phone Agent with Voiceflow, Google Calendar and RAG. Uses googleCalendar, lmChatOpenAi, chainLlm, vectorStoreQdrant. Webhook trigger; 34 nodes.
Voiceflow is a no-code platform that allows you to design, prototype, and deploy conversational assistants across multiple channels—such as chat, voice, and phone—with advanced logic and natural langu