RAG sur l'historique des courriels
Ceci est unInternal Wiki, AI RAGworkflow d'automatisation du domainecontenant 23 nœuds.Utilise principalement des nœuds comme Code, Gmail, GmailTrigger, ManualTrigger, SplitInBatches. Créer une base de connaissances d'e-mails avec Gmail, OpenAI et la base de données vectorielle Qdrant
- •Compte Google et informations d'identification Gmail API
- •Clé API OpenAI
- •Informations de connexion au serveur Qdrant
Nœuds utilisés (23)
Catégorie
{
"id": "7QhxjMbqHv5tk9wM",
"meta": {
"instanceId": "b50483b2122f6dc268662b45507d575d939570ea8e1e086601ebb3b6273c1cfd",
"templateCredsSetupCompleted": true
},
"name": "Email History RAG",
"tags": [
{
"id": "PNmVCFjr9sq0xind",
"name": "RAG",
"createdAt": "2025-07-12T09:30:51.202Z",
"updatedAt": "2025-07-12T09:30:51.202Z"
}
],
"nodes": [
{
"id": "dec780ab-9e05-4305-ba52-8a92dfc266e7",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-7040,
800
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "K8T7HIhpd7gMJG20",
"name": "OpenAi account - Remap"
}
},
"typeVersion": 1
},
{
"id": "13f21017-5470-4e0e-8d13-aea6d98c4918",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-7440,
448
],
"parameters": {
"width": 1162,
"height": 796,
"content": "# RAG AI Agent\n"
},
"typeVersion": 1
},
{
"id": "b6615316-94c0-4091-b6e3-8cdf64cb0902",
"name": "Lors du clic sur 'Tester le workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-6048,
1472
],
"parameters": {},
"typeVersion": 1
},
{
"id": "349336cd-9373-4553-aa13-9cf6a427a0c6",
"name": "Agent RAG",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-6944,
576
],
"parameters": {
"options": {
"systemMessage": "=You are a helpful assistant that will get data from RAG and send a good response to user.\n\nToday date is this if user ask for dated or latest data: {{ $now }}\n\nSo add date when send query to vector database because I am already setting the date field in embedding."
}
},
"typeVersion": 1.7
},
{
"id": "82da160a-a572-4cdf-a260-f7a0c51a30fa",
"name": "Gmail Trigger1",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-6064,
672
],
"parameters": {
"filters": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "ufYEel3Kf0MiIlZB",
"name": "Gmail account - chzainali6363@gmail.com"
}
},
"typeVersion": 1.2
},
{
"id": "954a8ea4-9e00-43b9-9fe2-6d717b6dccd7",
"name": "Obtenir les données d'email1",
"type": "n8n-nodes-base.gmail",
"position": [
-5840,
672
],
"webhookId": "[REDACTED_WEBHOOK_ID]",
"parameters": {
"simple": false,
"options": {},
"messageId": "={{ $json.id }}",
"operation": "get"
},
"credentials": {
"gmailOAuth2": {
"id": "ufYEel3Kf0MiIlZB",
"name": "Gmail account - chzainali6363@gmail.com"
}
},
"typeVersion": 2.1
},
{
"id": "16acb16b-8d56-425a-b484-fa4ffc3f5616",
"name": "Embeddings OpenAI5",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
-5680,
912
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "K8T7HIhpd7gMJG20",
"name": "OpenAi account - Remap"
}
},
"typeVersion": 1.1
},
{
"id": "73a26bce-0df2-4755-8175-8a0e367f7418",
"name": "Enhanced Default Data Loader3",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
-5424,
880
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "=data_source",
"value": "=gmail"
},
{
"name": "=created_at",
"value": "={{ $json.date }}"
}
]
}
},
"jsonData": "=Email details:\nDate: {{ $json.headers.date }}\n\nFrom Email: {{ $json.from.value[0].address }}\nFrom Name: {{ $json.from.value[0].name }}\n\nTo Email: {{ $json.to.value[0].address }}\n\nEmail Subject:\n{{ $json.subject }}\n\nEmail body:\n{{ $json.text }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "262344fa-8b26-4665-b0ff-e1354e6d84eb",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-6128,
448
],
"parameters": {
"color": 4,
"width": 1200,
"height": 788,
"content": "# Watch Trigger (Email) - New Email\n## Get new Email -> Extract the text -> Add to Vector Store"
},
"typeVersion": 1
},
{
"id": "c70f74e1-75ab-4ce3-9c84-f92ff1d7a762",
"name": "Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterCharacterTextSplitter",
"position": [
-5344,
1056
],
"parameters": {
"separator": "Email details:"
},
"typeVersion": 1
},
{
"id": "f01ccf0e-caf4-44f1-a385-a6eb2b063551",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
-5616,
1472
],
"parameters": {
"jsCode": "const emails = $input.all().map((item) => item.json);\n\nconst extractedData = emails.map((email) => {\n // Remove line breaks and excessive spaces from body\n const cleanBody = email.text\n ?.replace(/(\\r\\n|\\n|\\r)/gm, ' ') // Replace newlines with space\n ?.replace(/\\s+/g, ' ') // Collapse multiple spaces\n ?.trim(); // Remove leading/trailing space\n\n return {\n to: email.to?.value?.[0]?.address || '',\n from: email.from?.value?.[0]?.address || '',\n fromName: email.from?.value?.[0]?.name || '',\n date: email.date || '',\n subject: email.subject || '',\n body: cleanBody || '',\n emailId: email.id || '',\n };\n});\n\nreturn extractedData;\n"
},
"typeVersion": 2
},
{
"id": "69d042bf-b75a-414e-a2e2-a62632e6aef2",
"name": "Embeddings OpenAI11",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
-5280,
1712
],
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "5200b258-2c96-4d38-9c92-b5353ada6957",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
-5104,
1696
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "created_at",
"value": "={{ $json.date }}"
},
{
"name": "data_source",
"value": "gmail"
}
]
}
},
"jsonData": "=Email details:\nDate: {{ $json.date }}\n\nFrom Email: {{ $json.from }}\nFrom Name: {{ $json.fromName }}\n\nTo Email: {{ $json.to }}\n\nEmail Subject:\n{{ $json.subject }}\n\nEmail body:\n{{ $json.body }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "cd126bb7-60a6-450b-b31c-cfd9517e9441",
"name": "Note adhésive11",
"type": "n8n-nodes-base.stickyNote",
"position": [
-6128,
1328
],
"parameters": {
"width": 1596,
"height": 740,
"content": "# Get All Emails -> Store embedding in vector db\n"
},
"typeVersion": 1
},
{
"id": "19fe59c6-6576-453a-8098-97e47c72c033",
"name": "Emails par lot",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-5424,
1472
],
"parameters": {
"options": {},
"batchSize": 50
},
"typeVersion": 3
},
{
"id": "512bb68a-94d7-4e0f-ab51-265f19d670bd",
"name": "Character Text Splitter1",
"type": "@n8n/n8n-nodes-langchain.textSplitterCharacterTextSplitter",
"position": [
-5024,
1888
],
"parameters": {
"separator": "Email details:"
},
"typeVersion": 1
},
{
"id": "051c026e-0fd7-4182-a388-0ccd6e0c085e",
"name": "Embeddings OpenAI3",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
-6784,
1072
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "K8T7HIhpd7gMJG20",
"name": "OpenAi account - Remap"
}
},
"typeVersion": 1.1
},
{
"id": "d7481948-2972-42e9-b2ef-900c55bc6465",
"name": "Qdrant Email Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
-6736,
896
],
"parameters": {
"mode": "retrieve-as-tool",
"options": {},
"toolName": "emails_vector_search",
"toolDescription": "=Call this tool to perform a vector embeddings search in my e-mail database. For time-specific queries:\n1. ALWAYS include the time frame in your query (e.g., \"interviews scheduled after April 27, 2025\" or \"interviews for next week April 28-May 4, 2025\")\n2. For future events, explicitly mention \"future\" or \"upcoming\" in your query",
"qdrantCollection": {
"__rl": true,
"mode": "list",
"value": "emails_history",
"cachedResultName": "emails_history"
}
},
"typeVersion": 1.1
},
{
"id": "7cecd74a-bde6-4fcf-8622-81620c63b20f",
"name": "Qdrant Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
-5568,
672
],
"parameters": {
"mode": "insert",
"options": {},
"qdrantCollection": {
"__rl": true,
"mode": "list",
"value": "emails_history",
"cachedResultName": "emails_history"
}
},
"typeVersion": 1.1
},
{
"id": "1e6d26d8-60e3-4128-82b4-a5e61d83cff1",
"name": "Qdrant Vector Store1",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
-5104,
1456
],
"parameters": {
"mode": "insert",
"options": {},
"qdrantCollection": {
"__rl": true,
"mode": "list",
"value": "emails_history",
"cachedResultName": "emails_history"
}
},
"typeVersion": 1.1
},
{
"id": "8b9845c3-a9e6-47a1-ae0e-8e66a15b5812",
"name": "Lors de la réception d'un message chat",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-7248,
576
],
"webhookId": "61ffbc2d-0469-49ab-8541-694f021112e6",
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "2c320869-b169-4961-a8fd-5403c7a1366e",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-6864,
800
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "6735edda-91ff-4872-8c13-bec68a8af925",
"name": "Obtenir plusieurs messages",
"type": "n8n-nodes-base.gmail",
"position": [
-5824,
1472
],
"webhookId": "778c704a-a717-45e1-adc7-f15a6426c415",
"parameters": {
"simple": false,
"filters": {},
"options": {},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"gmailOAuth2": {
"id": "ufYEel3Kf0MiIlZB",
"name": "Gmail account - chzainali6363@gmail.com"
}
},
"typeVersion": 2.1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "a81f41c7-8a71-483c-82bb-ff45081649cf",
"connections": {
"f01ccf0e-caf4-44f1-a385-a6eb2b063551": {
"main": [
[
{
"node": "19fe59c6-6576-453a-8098-97e47c72c033",
"type": "main",
"index": 0
}
]
]
},
"349336cd-9373-4553-aa13-9cf6a427a0c6": {
"main": [
[]
]
},
"19fe59c6-6576-453a-8098-97e47c72c033": {
"main": [
[],
[
{
"node": "1e6d26d8-60e3-4128-82b4-a5e61d83cff1",
"type": "main",
"index": 0
}
]
]
},
"2c320869-b169-4961-a8fd-5403c7a1366e": {
"ai_memory": [
[
{
"node": "349336cd-9373-4553-aa13-9cf6a427a0c6",
"type": "ai_memory",
"index": 0
}
]
]
},
"954a8ea4-9e00-43b9-9fe2-6d717b6dccd7": {
"main": [
[
{
"node": "7cecd74a-bde6-4fcf-8622-81620c63b20f",
"type": "main",
"index": 0
}
]
]
},
"82da160a-a572-4cdf-a260-f7a0c51a30fa": {
"main": [
[
{
"node": "954a8ea4-9e00-43b9-9fe2-6d717b6dccd7",
"type": "main",
"index": 0
}
]
]
},
"6735edda-91ff-4872-8c13-bec68a8af925": {
"main": [
[
{
"node": "f01ccf0e-caf4-44f1-a385-a6eb2b063551",
"type": "main",
"index": 0
}
]
]
},
"dec780ab-9e05-4305-ba52-8a92dfc266e7": {
"ai_languageModel": [
[
{
"node": "349336cd-9373-4553-aa13-9cf6a427a0c6",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"051c026e-0fd7-4182-a388-0ccd6e0c085e": {
"ai_embedding": [
[
{
"node": "d7481948-2972-42e9-b2ef-900c55bc6465",
"type": "ai_embedding",
"index": 0
}
]
]
},
"16acb16b-8d56-425a-b484-fa4ffc3f5616": {
"ai_embedding": [
[
{
"node": "7cecd74a-bde6-4fcf-8622-81620c63b20f",
"type": "ai_embedding",
"index": 0
}
]
]
},
"5200b258-2c96-4d38-9c92-b5353ada6957": {
"ai_document": [
[
{
"node": "1e6d26d8-60e3-4128-82b4-a5e61d83cff1",
"type": "ai_document",
"index": 0
}
]
]
},
"69d042bf-b75a-414e-a2e2-a62632e6aef2": {
"ai_embedding": [
[
{
"node": "1e6d26d8-60e3-4128-82b4-a5e61d83cff1",
"type": "ai_embedding",
"index": 0
}
]
]
},
"1e6d26d8-60e3-4128-82b4-a5e61d83cff1": {
"main": [
[
{
"node": "19fe59c6-6576-453a-8098-97e47c72c033",
"type": "main",
"index": 0
}
]
]
},
"c70f74e1-75ab-4ce3-9c84-f92ff1d7a762": {
"ai_textSplitter": [
[
{
"node": "73a26bce-0df2-4755-8175-8a0e367f7418",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"512bb68a-94d7-4e0f-ab51-265f19d670bd": {
"ai_textSplitter": [
[
{
"node": "5200b258-2c96-4d38-9c92-b5353ada6957",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"d7481948-2972-42e9-b2ef-900c55bc6465": {
"ai_tool": [
[
{
"node": "349336cd-9373-4553-aa13-9cf6a427a0c6",
"type": "ai_tool",
"index": 0
}
]
]
},
"8b9845c3-a9e6-47a1-ae0e-8e66a15b5812": {
"main": [
[
{
"node": "349336cd-9373-4553-aa13-9cf6a427a0c6",
"type": "main",
"index": 0
}
]
]
},
"73a26bce-0df2-4755-8175-8a0e367f7418": {
"ai_document": [
[
{
"node": "7cecd74a-bde6-4fcf-8622-81620c63b20f",
"type": "ai_document",
"index": 0
}
]
]
},
"b6615316-94c0-4091-b6e3-8cdf64cb0902": {
"main": [
[
{
"node": "6735edda-91ff-4872-8c13-bec68a8af925",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Wiki interne, RAG IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Partager ce workflow