{
  "id": "uZtDG9wLeCBZbaoK",
  "meta": {
    "templateId": "3459"
  },
  "name": "RAG 2.0 - Answer Architecture",
  "tags": [],
  "nodes": [
    {
      "id": "856bd809-8f41-41af-8f72-a3828229c2a5",
      "name": "Query Classification",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "notes": "Classify a query into one of four categories: Factual, Analytical, Opinion, or Contextual.\n        \nReturns:\nstr: Query category",
      "position": [
        420,
        340
      ],
      "parameters": {
        "text": "=Classify this query: {{ $('Combined Fields').item.json.user_query }}",
        "options": {
          "systemMessage": "You are an expert at classifying questions. \n\nClassify the given query into exactly one of these categories:\n- Factual: Queries seeking specific, verifiable information.\n- Analytical: Queries requiring comprehensive analysis or explanation.\n- Opinion: Queries about subjective matters or seeking diverse viewpoints.\n- Contextual: Queries that depend on user-specific context.\n\nReturn ONLY the category name, without any explanation or additional text."
        },
        "promptType": "define"
      },
      "typeVersion": 1.8
    },
    {
      "id": "cc2106fc-f1a8-45ef-b37b-ab981ac13466",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        780,
        380
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Factual",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "87f3b50c-9f32-4260-ac76-19c05b28d0b4",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.trim() }}",
                    "rightValue": "Factual"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Analytical",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "f8651b36-79fa-4be4-91fb-0e6d7deea18f",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.trim() }}",
                    "rightValue": "Analytical"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Opinion",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "5dde06bc-5fe1-4dca-b6e2-6857c5e96d49",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.trim() }}",
                    "rightValue": "Opinion"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Contextual",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "bf97926d-7a0b-4e2f-aac0-a820f73344d8",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.trim() }}",
                    "rightValue": "Contextual"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": 0
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "63889cad-1283-4dbf-ba16-2b6cf575f24a",
      "name": "Factual Strategy - Focus on Precision",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "notes": "Retrieval strategy for factual queries focusing on precision.",
      "position": [
        1180,
        -440
      ],
      "parameters": {
        "text": "=Enhance this factual query: {{ $('Combined Fields').item.json.user_query }}",
        "options": {
          "systemMessage": "=You are an expert at enhancing search queries.\n\nYour task is to reformulate the given factual query to make it more precise and specific for information retrieval. Focus on key entities and their relationships.\n\nProvide ONLY the enhanced query without any explanation."
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "020d2201-9590-400d-b496-48c65801271c",
      "name": "Analytical Strategy - Comprehensive Coverage",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "notes": "Retrieval strategy for analytical queries focusing on comprehensive coverage.",
      "position": [
        1180,
        140
      ],
      "parameters": {
        "text": "=Generate sub-questions for this analytical query: {{ $('Combined Fields').item.json.user_query }}",
        "options": {
          "systemMessage": "=You are an expert at breaking down complex questions.\n\nGenerate sub-questions that explore different aspects of the main analytical query.\nThese sub-questions should cover the breadth of the topic and help retrieve comprehensive information.\n\nReturn a list of exactly 3 sub-questions, one per line."
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "c35d1b95-68c8-4237-932d-4744f620760d",
      "name": "Opinion Strategy - Diverse Perspectives",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "notes": "Retrieval strategy for opinion queries focusing on diverse perspectives.",
      "position": [
        1220,
        700
      ],
      "parameters": {
        "text": "=Identify different perspectives on: {{ $('Combined Fields').item.json.user_query }}",
        "options": {
          "systemMessage": "=You are an expert at identifying different perspectives on a topic.\n\nFor the given query about opinions or viewpoints, identify different perspectives that people might have on this topic.\n\nReturn a list of exactly 3 different viewpoint angles, one per line."
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "363a3fc3-112f-40df-891e-0a5aa3669245",
      "name": "Contextual Strategy - User Context Integration",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "notes": "Retrieval strategy for contextual queries integrating user context.",
      "position": [
        1180,
        1320
      ],
      "parameters": {
        "text": "=Infer the implied context in this query: {{ $('Combined Fields').item.json.user_query }}",
        "options": {
          "systemMessage": "=You are an expert at understanding implied context in questions.\n\nFor the given query, infer what contextual information might be relevant or implied but not explicitly stated. Focus on what background would help answering this query.\n\nReturn a brief description of the implied context."
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "45887701-5ea5-48b4-9b2b-40a80238ab0c",
      "name": "Chat",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        0,
        640
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "7f7df364-4829-4e29-be3d-d13a63f65b8f",
      "name": "Factual Prompt and Output",
      "type": "n8n-nodes-base.set",
      "position": [
        1640,
        -300
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a4a28ac2-4a56-46f6-8b86-f5d1a34b2ced",
              "name": "output",
              "type": "string",
              "value": "={{ $json.output }}"
            },
            {
              "id": "7aa6ce13-afbf-4871-b81c-6e9c722a53dc",
              "name": "prompt",
              "type": "string",
              "value": "You are a helpful assistant providing factual information. Answer the question based on the provided context. Focus on accuracy and precision. If the context doesn't contain the information needed, acknowledge the limitations."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "590d8667-69eb-4db2-b5be-714c602b319a",
      "name": "Contextual Prompt and Output",
      "type": "n8n-nodes-base.set",
      "position": [
        1640,
        1400
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a4a28ac2-4a56-46f6-8b86-f5d1a34b2ced",
              "name": "output",
              "type": "string",
              "value": "={{ $json.output }}"
            },
            {
              "id": "7aa6ce13-afbf-4871-b81c-6e9c722a53dc",
              "name": "prompt",
              "type": "string",
              "value": "You are a helpful assistant providing contextually relevant information. Answer the question considering both the query and its context. Make connections between the query context and the information in the provided documents. If the context doesn't fully address the specific situation, acknowledge the limitations."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "fa3228ee-62d8-4c02-9dca-8a1ebc6afc74",
      "name": "Opinion Prompt and Output",
      "type": "n8n-nodes-base.set",
      "position": [
        1620,
        820
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a4a28ac2-4a56-46f6-8b86-f5d1a34b2ced",
              "name": "output",
              "type": "string",
              "value": "={{ $json.output }}"
            },
            {
              "id": "7aa6ce13-afbf-4871-b81c-6e9c722a53dc",
              "name": "prompt",
              "type": "string",
              "value": "You are a helpful assistant discussing topics with multiple viewpoints. Based on the provided context, present different perspectives on the topic. Ensure fair representation of diverse opinions without showing bias. Acknowledge where the context presents limited viewpoints."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "c769a76a-fb26-46a1-a00d-825b689d5f7a",
      "name": "Analytical Prompt and Output",
      "type": "n8n-nodes-base.set",
      "position": [
        1620,
        220
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a4a28ac2-4a56-46f6-8b86-f5d1a34b2ced",
              "name": "output",
              "type": "string",
              "value": "={{ $json.output }}"
            },
            {
              "id": "7aa6ce13-afbf-4871-b81c-6e9c722a53dc",
              "name": "prompt",
              "type": "string",
              "value": "You are a helpful assistant providing analytical insights. Based on the provided context, offer a comprehensive analysis of the topic. Cover different aspects and perspectives in your explanation. If the context has gaps, acknowledge them while providing the best analysis possible."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "fcd29f6b-17e8-442c-93f9-b93fbad7cd10",
      "name": "Gemini Classification",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        580,
        600
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-lite"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c0828ee3-f184-41f5-9a25-0f1059b03711",
      "name": "Gemini Factual",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1240,
        -240
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "98f9981d-ea8e-45cb-b91d-3c8d1fe33e25",
      "name": "Gemini Analytical",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1240,
        340
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c85f270d-3224-4e60-9acf-91f173dfe377",
      "name": "Chat Buffer Memory Analytical",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        1400,
        340
      ],
      "parameters": {
        "sessionKey": "={{ $('Combined Fields').item.json.chat_memory_key }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "c39ba907-7388-4152-965a-e28e626bc9b2",
      "name": "Chat Buffer Memory Factual",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        1400,
        -240
      ],
      "parameters": {
        "sessionKey": "={{ $('Combined Fields').item.json.chat_memory_key }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "52dcd9f0-e6b3-4d33-bc6f-621ef880178e",
      "name": "Gemini Opinion",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1280,
        900
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "147a709a-4b46-4835-82cf-7d6b633acd4c",
      "name": "Chat Buffer Memory Opinion",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        1440,
        900
      ],
      "parameters": {
        "sessionKey": "={{ $('Combined Fields').item.json.chat_memory_key }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "3cb6bf32-5937-49b9-acf7-d7d01dc2ddd1",
      "name": "Gemini Contextual",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1240,
        1500
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5916c4f1-4369-4d66-8553-2fff006b7e69",
      "name": "Chat Buffer Memory Contextual",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        1420,
        1500
      ],
      "parameters": {
        "sessionKey": "={{ $('Combined Fields').item.json.chat_memory_key }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "d33377c2-6b98-4e4d-968f-f3085354ae50",
      "name": "Embeddings",
      "type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
      "notes": "{ $node[\"Embeddings\"].json.response }}",
      "position": [
        2400,
        600
      ],
      "parameters": {
        "modelName": "models/text-embedding-004"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "32d9a0c0-0889-4cb2-a088-8ee9cfecacd3",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1100,
        -600
      ],
      "parameters": {
        "color": 7,
        "width": 700,
        "height": 520,
        "content": "## Factual Strategy\n**Retrieve precise facts and figures.**\n## Olgusal Strateji\n**Kesin ger\u00e7eklere ve rakamlara ula\u015f\u0131n.**"
      },
      "typeVersion": 1
    },
    {
      "id": "064a4729-717c-40c8-824a-508406610a13",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1100,
        -40
      ],
      "parameters": {
        "color": 7,
        "width": 700,
        "height": 520,
        "content": "## Analytical Strategy\n**Provide comprehensive coverage of a topics and exploring different aspects.**\n## Analitik Strateji\n**Bir konunun kapsaml\u0131 bir \u015fekilde ele al\u0131nmas\u0131n\u0131 ve farkl\u0131 y\u00f6nlerinin ke\u015ffedilmesini sa\u011flar.**"
      },
      "typeVersion": 1
    },
    {
      "id": "9fd52a28-44bc-4dfd-bdb7-90987cc2f4fb",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1100,
        520
      ],
      "parameters": {
        "color": 7,
        "width": 700,
        "height": 520,
        "content": "## Opinion Strategy\n**Gather diverse viewpoints on a subjective issue.**\n## G\u00f6r\u00fc\u015f Stratejisi\n**\u00d6znel bir konuda farkl\u0131 bak\u0131\u015f a\u00e7\u0131lar\u0131 toplay\u0131n.**"
      },
      "typeVersion": 1
    },
    {
      "id": "3797b21f-cc2a-4210-aa63-6d181d413c5e",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1100,
        1100
      ],
      "parameters": {
        "color": 7,
        "width": 700,
        "height": 540,
        "content": "## Contextual Strategy\n**Incorporate user-specific context to fine-tune the retrieval.**\n## Ba\u011flamsal Strateji\n**Getirmeye ince ayar yapmak i\u00e7in kullan\u0131c\u0131ya \u00f6zg\u00fc ba\u011flam\u0131 dahil edin.**"
      },
      "typeVersion": 1
    },
    {
      "id": "16fa1531-9fb9-4b12-961c-be12e20b2134",
      "name": "Concatenate Context",
      "type": "n8n-nodes-base.summarize",
      "position": [
        2900,
        380
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "document.pageContent",
              "separateBy": "other",
              "aggregation": "concatenate",
              "customSeparator": "={{ \"\\n\\n---\\n\\n\" }}"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "4d6147d1-7a3d-42ab-b23f-cdafe8ea30b0",
      "name": "Retrieve Documents from Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
      "position": [
        2140,
        380
      ],
      "parameters": {
        "mode": "load",
        "topK": 10,
        "prompt": "=Prompt\n{{ $json.prompt }}\n\nUser query: \n{{ $json.output }}",
        "options": {},
        "qdrantCollection": {
          "__rl": true,
          "mode": "id",
          "value": "=vector_store_id"
        }
      },
      "credentials": {
        "qdrantApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": false,
      "notesInFlow": false,
      "retryOnFail": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "7e68f9cb-0a0d-4215-8083-3b9ef92cd237",
      "name": "Set Prompt and Output",
      "type": "n8n-nodes-base.set",
      "position": [
        1900,
        460
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1d782243-0571-4845-b8fe-4c6c4b55379e",
              "name": "output",
              "type": "string",
              "value": "={{ $json.output }}"
            },
            {
              "id": "547091fb-367c-44d4-ac39-24d073da70e0",
              "name": "prompt",
              "type": "string",
              "value": "={{ $json.prompt }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0c623ca1-da85-48a3-9d8b-90d97283a015",
      "name": "Gemini Answer",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        3340,
        620
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fab91e48-1c62-46a8-b9fc-39704f225274",
      "name": "Answer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3120,
        380
      ],
      "parameters": {
        "text": "=User query: {{ $('Combined Fields').item.json.user_query }}",
        "options": {
          "systemMessage": "={{ $('Set Prompt and Output').item.json.prompt }}\n\nUse the following context (delimited by <ctx></ctx>) and the chat history to answer the user query.\n<ctx>\n{{ $json.concatenated_document_pageContent }}\n</ctx>"
        },
        "promptType": "define"
      },
      "typeVersion": 1.8
    },
    {
      "id": "d69f8d62-3064-40a8-b490-22772fbc38cd",
      "name": "Chat Buffer Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        3500,
        620
      ],
      "parameters": {
        "sessionKey": "={{ $('Combined Fields').item.json.chat_memory_key }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "a399f8e6-fafd-4f73-a2de-894f1e3c4bec",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1860,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 820,
        "height": 580,
        "content": "## Perform adaptive retrieval\n**Find document considering both query and context.**\n## Uyarlanabilir RAG ger\u00e7ekle\u015ftirin\n**Hem sorguyu hem de ba\u011flam\u0131 dikkate alarak belge bulun.**"
      },
      "typeVersion": 1
    },
    {
      "id": "7f10fe70-1af8-47ad-a9b5-2850412c43f8",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2760,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 1060,
        "height": 580,
        "content": "## Reply to the user integrating retrieval context\n## Kullan\u0131c\u0131ya RAG ba\u011flam\u0131n\u0131 entegre ederek yan\u0131t verin"
      },
      "typeVersion": 1
    },
    {
      "id": "5cd0dd02-65f4-4351-aeae-c70ecf5f1d66",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        3540,
        400
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "4c56ef8f-8fce-4525-bb87-15df37e91cc4",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 700,
        "height": 580,
        "content": "## User query classification\n**Classify the query into one of four categories: Factual, Analytical, Opinion, or Contextual.**\n## Kullan\u0131c\u0131 sorgu s\u0131n\u0131fland\u0131rmas\u0131\n**Sorguyu d\u00f6rt kategoriden birine s\u0131n\u0131fland\u0131r\u0131n: Olgusal, Analitik, G\u00f6r\u00fc\u015f veya Ba\u011flamsal.**\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3ef73405-89de-4bed-9673-90e2c1f2e74b",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        0,
        340
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "user_query"
            },
            {
              "name": "chat_memory_key"
            },
            {
              "name": "vector_store_id"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "0785714f-c45c-4eda-9937-c97e44c9a449",
      "name": "Combined Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        140,
        480
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "90ab73a2-fe01-451a-b9df-bffe950b1599",
              "name": "user_query",
              "type": "string",
              "value": "={{ $json.user_query || $json.chatInput }}"
            },
            {
              "id": "36686ff5-09fc-40a4-8335-a5dd1576e941",
              "name": "chat_memory_key",
              "type": "string",
              "value": "={{ $json.chat_memory_key || $('Chat').item.json.sessionId }}"
            },
            {
              "id": "4230c8f3-644c-4985-b710-a4099ccee77c",
              "name": "vector_store_id",
              "type": "string",
              "value": "={{ $json.vector_store_id || \"<ID HERE>\" }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "57a93b72-4233-4ba2-b8c7-99d88f0ed572",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1420,
        -560
      ],
      "parameters": {
        "color": 3,
        "width": 1280,
        "height": 1680,
        "content": "# Uyarlanabilir RAG \u0130\u015f Ak\u0131\u015f\u0131\n\nBu n8n i\u015f ak\u0131\u015f\u0131, Uyarlanabilir Geri Getirme Destekli \u00dcretim (Adaptive RAG) yakla\u015f\u0131m\u0131n\u0131n bir versiyonunu uygular. Kullan\u0131c\u0131 sorgular\u0131n\u0131 s\u0131n\u0131fland\u0131r\u0131r ve sorgu t\u00fcr\u00fcne (Olgusal, Analitik, G\u00f6r\u00fc\u015f veya Ba\u011flamsal) g\u00f6re farkl\u0131 geri getirme ve \u00fcretim stratejileri uygulayarak bir Qdrant vekt\u00f6r deposunda saklanan bilgi taban\u0131ndan daha alakal\u0131 ve \u00f6zel yan\u0131tlar sunar.\n\n## Nas\u0131l \u00c7al\u0131\u015f\u0131r?\n\n### Giri\u015f Tetikleyicisi\n\n- \u0130\u015f ak\u0131\u015f\u0131, yerle\u015fik Sohbet aray\u00fcz\u00fc arac\u0131l\u0131\u011f\u0131yla veya ba\u015fka bir n8n i\u015f ak\u0131\u015f\u0131 taraf\u0131ndan tetiklenebilir.\n- Girdiler beklenir: `user_query` (kullan\u0131c\u0131 sorgusu), `chat_memory_key` (konu\u015fma ge\u00e7mi\u015fi i\u00e7in) ve `vector_store_id` (Qdrant koleksiyonunu belirten).\n- Bir `Set` d\u00fc\u011f\u00fcm\u00fc (`Combined Fields` - Birle\u015ftirilmi\u015f Alanlar) bu girdileri standartla\u015ft\u0131r\u0131r.\n\n### Sorgu S\u0131n\u0131fland\u0131rmas\u0131\n\n- Bir Google Gemini ajan\u0131 (`Query Classification` - Sorgu S\u0131n\u0131fland\u0131rmas\u0131) `user_query`'yi analiz eder.\n- Sorguyu d\u00f6rt kategoriden birine s\u0131n\u0131fland\u0131r\u0131r:\n  - **Olgusal:** Belirli, do\u011frulanabilir bilgi arayan.\n  - **Analitik:** Kapsaml\u0131 analiz veya a\u00e7\u0131klama gerektiren.\n  - **G\u00f6r\u00fc\u015f:** \u00d6znel konular hakk\u0131nda soru soran veya farkl\u0131 bak\u0131\u015f a\u00e7\u0131lar\u0131 arayan.\n  - **Ba\u011flamsal:** Kullan\u0131c\u0131ya \u00f6zel veya \u00f6rt\u00fck ba\u011flama ba\u011fl\u0131 olan.\n\n### Uyarlanabilir Strateji Y\u00f6nlendirmesi\n\n- Bir `Switch` d\u00fc\u011f\u00fcm\u00fc (Y\u00f6nlendirme D\u00fc\u011f\u00fcm\u00fc), i\u015f ak\u0131\u015f\u0131n\u0131 bir \u00f6nceki ad\u0131mdaki s\u0131n\u0131fland\u0131rma sonucuna g\u00f6re y\u00f6nlendirir.\n\n### Strateji Uygulamas\u0131 (Sorgu Uyarlamas\u0131)\n\n- Y\u00f6nlendirmeye ba\u011fl\u0131 olarak, belirli bir Google Gemini ajan\u0131 sorguyu veya yakla\u015f\u0131m\u0131 uyarlar:\n  - **Olgusal Strateji:** Anahtar varl\u0131klara odaklanarak daha iyi kesinlik i\u00e7in sorguyu yeniden yazar (`Factual Strategy - Focus on Precision` - Olgusal Strateji - Kesinli\u011fe Odaklanma).\n  - **Analitik Strateji:** Kapsaml\u0131 bir \u015fekilde ele al\u0131nmas\u0131n\u0131 sa\u011flamak i\u00e7in ana sorguyu birden fazla alt soruya b\u00f6ler (`Analytical Strategy - Comprehensive Coverage` - Analitik Strateji - Kapsaml\u0131 Ele Alma).\n  - **G\u00f6r\u00fc\u015f Stratejisi:** Sorguyla ilgili farkl\u0131 potansiyel bak\u0131\u015f a\u00e7\u0131lar\u0131n\u0131 veya yakla\u015f\u0131mlar\u0131 tan\u0131mlar (`Opinion Strategy - Diverse Perspectives` - G\u00f6r\u00fc\u015f Stratejisi - Farkl\u0131 Bak\u0131\u015f A\u00e7\u0131lar\u0131).\n  - **Ba\u011flamsal Strateji:** Sorguyu etkili bir \u015fekilde yan\u0131tlamak i\u00e7in gereken \u00f6rt\u00fck ba\u011flam\u0131 \u00e7\u0131kar\u0131r (`Contextual Strategy - User Context Integration` - Ba\u011flamsal Strateji - Kullan\u0131c\u0131 Ba\u011flam\u0131 Entegrasyonu).\n- Her strateji yolu, uyarlama ad\u0131m\u0131 i\u00e7in kendi sohbet belle\u011fi tamponunu kullan\u0131r.\n\n### Geri Getirme \u0130stemcisi ve \u00c7\u0131kt\u0131 Kurulumu\n\n- *Orijinal* sorgu s\u0131n\u0131fland\u0131rmas\u0131na dayanarak, bir `Set` d\u00fc\u011f\u00fcm\u00fc (`Factual/Analytical/Opinion/Contextual Prompt and Output` - Olgusal/Analitik/G\u00f6r\u00fc\u015f/Ba\u011flamsal \u0130stemci ve \u00c7\u0131kt\u0131, `Set Prompt and Output` - \u0130stemci ve \u00c7\u0131kt\u0131 Ayarla d\u00fc\u011f\u00fcm\u00fcne ba\u011flant\u0131lar arac\u0131l\u0131\u011f\u0131yla birle\u015ftirilir) \u015funlar\u0131 haz\u0131rlar:\n  - Strateji ad\u0131m\u0131ndan gelen \u00e7\u0131kt\u0131 (\u00f6rne\u011fin, yeniden yaz\u0131lm\u0131\u015f sorgu, alt sorular, bak\u0131\u015f a\u00e7\u0131lar\u0131).\n  - Son yan\u0131t \u00fcretim ajan\u0131 i\u00e7in \u00f6zel olarak haz\u0131rlanm\u0131\u015f bir sistem istemcisi; sorgu t\u00fcr\u00fcne g\u00f6re nas\u0131l davranaca\u011f\u0131n\u0131 belirtir (\u00f6rne\u011fin, Olgusal i\u00e7in kesinli\u011fe odaklan, G\u00f6r\u00fc\u015f i\u00e7in farkl\u0131 g\u00f6r\u00fc\u015fler sun).\n\n### Belge Geri Getirme (RAG)\n\n- `Retrieve Documents from Vector Store` (Vekt\u00f6r Deposundan Belgeleri Geri Getir) d\u00fc\u011f\u00fcm\u00fc, belirtilen Qdrant koleksiyonunda (`vector_store_id`) arama yapmak i\u00e7in strateji ad\u0131m\u0131ndan gelen uyarlanm\u0131\u015f sorguyu/\u00e7\u0131kt\u0131y\u0131 kullan\u0131r.\n- Google Gemini g\u00f6m\u00fclerini (vekt\u00f6rlerini) kullanarak en alakal\u0131 belge par\u00e7alar\u0131n\u0131 geri getirir.\n\n### Ba\u011flam Haz\u0131rl\u0131\u011f\u0131\n\n- Geri getirilen belge par\u00e7alar\u0131ndan elde edilen i\u00e7erik, son yan\u0131t \u00fcretimi i\u00e7in tek bir ba\u011flam blo\u011fu olu\u015fturmak \u00fczere birle\u015ftirilir (`Concatenate Context` - Ba\u011flam\u0131 Birle\u015ftir).\n\n### Yan\u0131t \u00dcretimi\n\n- Son `Answer` (Yan\u0131t) ajan\u0131 (Google Gemini taraf\u0131ndan desteklenir) yan\u0131t\u0131 \u00fcretir.\n- \u015eunlar\u0131 kullan\u0131r:\n  - 5. ad\u0131mda ayarlanan \u00f6zel sistem istemcisi.\n  - Geri getirilen belgelerden birle\u015ftirilmi\u015f ba\u011flam (7. ad\u0131m).\n  - Orijinal `user_query`.\n  - Payla\u015f\u0131lan sohbet ge\u00e7mi\u015fi (`Chat Buffer Memory` - Sohbet Belle\u011fi Tamponu, `chat_memory_key` kullan\u0131larak).\n\n### Yan\u0131t\n\n- \u00dcretilen yan\u0131t, `Respond to Webhook` (Webhook'a Yan\u0131t Ver) d\u00fc\u011f\u00fcm\u00fc arac\u0131l\u0131\u011f\u0131yla kullan\u0131c\u0131ya geri g\u00f6nderilir.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "bec8070f-2ce9-4930-b71e-685a2b21d3f2",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        -20
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 820,
        "content": "## \u26a0\ufe0f  Using in Chat mode\n\nUpdate the `vector_store_id` variable to the corresponding Qdrant ID needed to perform the documents retrieval.\n\n## \u26a0\ufe0f Sohbet modunda kullan\u0131m sa\u011flay\u0131n\n\nvector_store_id` de\u011fi\u015fkenini belge al\u0131m\u0131n\u0131 ger\u00e7ekle\u015ftirmek i\u00e7in gereken ilgili Qdrant ID'sine g\u00fcncelleyin."
      },
      "typeVersion": 1
    },
    {
      "id": "dc002d7a-df79-4d61-880a-db32917d9814",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1220,
        580
      ],
      "parameters": {},
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {},
  "versionId": "fbee3fa8-a249-4841-b786-817f0992ae6b",
  "connections": {
    "Chat": {
      "main": [
        [
          {
            "node": "Combined Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Answer": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Factual Strategy - Focus on Precision",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Analytical Strategy - Comprehensive Coverage",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Opinion Strategy - Diverse Perspectives",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Contextual Strategy - User Context Integration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings": {
      "ai_embedding": [
        [
          {
            "node": "Retrieve Documents from Vector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Answer": {
      "ai_languageModel": [
        [
          {
            "node": "Answer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Factual": {
      "ai_languageModel": [
        [
          {
            "node": "Factual Strategy - Focus on Precision",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Opinion": {
      "ai_languageModel": [
        [
          {
            "node": "Opinion Strategy - Diverse Perspectives",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Combined Fields": {
      "main": [
        [
          {
            "node": "Query Classification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Analytical": {
      "ai_languageModel": [
        [
          {
            "node": "Analytical Strategy - Comprehensive Coverage",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Contextual": {
      "ai_languageModel": [
        [
          {
            "node": "Contextual Strategy - User Context Integration",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Chat Buffer Memory": {
      "ai_memory": [
        [
          {
            "node": "Answer",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Concatenate Context": {
      "main": [
        [
          {
            "node": "Answer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Query Classification": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Classification": {
      "ai_languageModel": [
        [
          {
            "node": "Query Classification",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Set Prompt and Output": {
      "main": [
        [
          {
            "node": "Retrieve Documents from Vector Store",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Factual Prompt and Output": {
      "main": [
        [
          {
            "node": "Set Prompt and Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Opinion Prompt and Output": {
      "main": [
        [
          {
            "node": "Set Prompt and Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Chat Buffer Memory Factual": {
      "ai_memory": [
        [
          {
            "node": "Factual Strategy - Focus on Precision",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Chat Buffer Memory Opinion": {
      "ai_memory": [
        [
          {
            "node": "Opinion Strategy - Diverse Perspectives",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Analytical Prompt and Output": {
      "main": [
        [
          {
            "node": "Set Prompt and Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Contextual Prompt and Output": {
      "main": [
        [
          {
            "node": "Set Prompt and Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Chat Buffer Memory Analytical": {
      "ai_memory": [
        [
          {
            "node": "Analytical Strategy - Comprehensive Coverage",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Chat Buffer Memory Contextual": {
      "ai_memory": [
        [
          {
            "node": "Contextual Strategy - User Context Integration",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Combined Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrieve Documents from Vector Store": {
      "main": [
        [
          {
            "node": "Concatenate Context",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Factual Strategy - Focus on Precision": {
      "main": [
        [
          {
            "node": "Factual Prompt and Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Opinion Strategy - Diverse Perspectives": {
      "main": [
        [
          {
            "node": "Opinion Prompt and Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analytical Strategy - Comprehensive Coverage": {
      "main": [
        [
          {
            "node": "Analytical Prompt and Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Contextual Strategy - User Context Integration": {
      "main": [
        [
          {
            "node": "Contextual Prompt and Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}