Qdrant RAGとOllamaを使用してオンデマンドAIのKaggleコンペティションアシスタントを構築

上級

これはEngineering, AI分野の自動化ワークフローで、23個のノードを含みます。主にSet, Merge, Switch, Markdown, ReadWriteFileなどのノードを使用、AI技術を活用したスマート自動化を実現。 Qdrant RAGとOllamaを使ってローカルのAI Kaggle競技用アシスタントを構築

前提条件
  • Qdrantサーバー接続情報
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "13a0050774c7f2acc1474b06f046215039c01087a78215e5a78461e6efc6cb1a",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "70b42807-a6c6-4159-b278-e77311727798",
      "name": "ローカルファイルトリガー",
      "type": "n8n-nodes-base.localFileTrigger",
      "position": [
        -3060,
        -40
      ],
      "parameters": {
        "path": "C:\\\\ipynb\\\\loadme",
        "events": [
          "add"
        ],
        "options": {
          "usePolling": true,
          "followSymlinks": true,
          "awaitWriteFinish": true
        },
        "triggerOn": "folder"
      },
      "typeVersion": 1
    },
    {
      "id": "893f1157-6c00-4b8e-b726-462ab371fadf",
      "name": "デフォルトデータローダー",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        -1500,
        300
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "9a9bfcee-1966-415c-a59f-552e1f35aae9",
      "name": "再帰的文字テキスト分割器",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "position": [
        -1360,
        440
      ],
      "parameters": {
        "options": {},
        "chunkSize": 40,
        "chunkOverlap": 10
      },
      "typeVersion": 1
    },
    {
      "id": "a7c971a5-39ac-4715-9e1b-a56af9713b06",
      "name": "設定",
      "type": "n8n-nodes-base.set",
      "position": [
        -3040,
        180
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "6b7d26f9-3a38-417e-85d0-4e9d42476465",
              "name": "path",
              "type": "string",
              "value": "=C:\\\\ipynb\\\\loadme\\\\"
            },
            {
              "id": "bb4471c7-d894-4739-99a6-4be247794ffa",
              "name": "filename",
              "type": "string",
              "value": "={{ $json.path.split('\\\\').last() }}"
            }
          ]
        }
      },
      "typeVersion": 3.3
    },
    {
      "id": "6384792b-de76-4e43-b26e-12c2d15c2dd2",
      "name": "マージ",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1740,
        260
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "db4de019-755e-4b91-ac70-f30825f14033",
      "name": "ファイルタイプ取得",
      "type": "n8n-nodes-base.switch",
      "position": [
        -2620,
        80
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "html",
              "conditions": {
                "options": {
                  "version": 1,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "75188d2f-4bea-44ea-a579-9b9a1bd1ea93",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.fileType }}",
                    "rightValue": "html"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "4c56a14c-6c56-4cc1-b7fb-a09caa3d646d",
      "name": "ファイルインポート",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        -2840,
        80
      ],
      "parameters": {
        "options": {},
        "fileSelector": "={{ $json.path }}{{ $json.filename }}"
      },
      "typeVersion": 1
    },
    {
      "id": "c14a711f-29ab-475f-aeff-3a070c797537",
      "name": "TEXTから抽出",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -2440,
        80
      ],
      "parameters": {
        "options": {},
        "operation": "text"
      },
      "typeVersion": 1
    },
    {
      "id": "22ff782e-c612-4928-9033-111cf516d07e",
      "name": "要約チェーン",
      "type": "@n8n/n8n-nodes-langchain.chainSummarization",
      "position": [
        -2040,
        -20
      ],
      "parameters": {
        "options": {
          "summarizationMethodAndPrompts": {
            "values": {
              "summarizationMethod": "refine"
            }
          }
        },
        "chunkSize": 4000
      },
      "typeVersion": 2
    },
    {
      "id": "70fa17a5-3ec9-4a81-86bc-503581505ea1",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3100,
        -180
      ],
      "parameters": {
        "color": 7,
        "width": 995,
        "height": 554,
        "content": "## Step 1. Watch Folder and Import New Documents\n[Read more about Local File Trigger](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.localfiletrigger)\n\nWith n8n's local file trigger, we're able to trigger the workflow when files are created in our target folder. We still have to import them however as the trigger will only give the file's path. The \"Extract From\" node is used to get at the file's contents."
      },
      "typeVersion": 1
    },
    {
      "id": "a51cc8ac-e310-4825-adc6-fc57c68c09aa",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2060,
        -200
      ],
      "parameters": {
        "color": 7,
        "width": 824,
        "height": 770,
        "content": "## Step 2. Summarise and Vectorise Document Contents\n[Learn more about using the Qdrant VectorStore](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreqdrant)\n\nCapturing the document into our vector store is intended for a technique we'll use later known as Retrieval Augumented Generation or \"RAG\" for short. For our scenario, this allows our LLM to retrieve context more efficiently which produces better respsonses."
      },
      "typeVersion": 1
    },
    {
      "id": "6d59dc6a-692a-4752-a811-8b3033898fa4",
      "name": "Qdrantベクトルストア",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
      "position": [
        -1600,
        60
      ],
      "parameters": {
        "mode": "insert",
        "options": {},
        "qdrantCollection": {
          "__rl": true,
          "mode": "id",
          "value": "test_rag"
        }
      },
      "credentials": {
        "qdrantApi": {
          "id": "wqHGuxoW5RJJYSIl",
          "name": "QdrantApi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f75f45cd-4aed-48a2-bb09-5db20b00a029",
      "name": "Markdown",
      "type": "n8n-nodes-base.markdown",
      "position": [
        -2260,
        80
      ],
      "parameters": {
        "html": "={{ $json.data }}",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "34fdd670-f568-4351-81c7-79fde68b8192",
      "name": "Embeddings Ollama",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
      "position": [
        -1560,
        420
      ],
      "parameters": {
        "model": "mxbai-embed-large:latest"
      },
      "credentials": {
        "ollamaApi": {
          "id": "jBqODDnXWJw9rGcS",
          "name": "Ollama account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4c4f71db-e496-4528-b0e5-dc5ffb27a2e8",
      "name": "Ollama 要約器",
      "type": "@n8n/n8n-nodes-langchain.lmOllama",
      "position": [
        -1900,
        140
      ],
      "parameters": {
        "model": "ALIENTELLIGENCE/contentsummarizer:latest",
        "options": {}
      },
      "credentials": {
        "ollamaApi": {
          "id": "jBqODDnXWJw9rGcS",
          "name": "Ollama account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0a2954cc-bec6-4750-ae75-6362761e41b6",
      "name": "チャットメッセージ受信時",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -3020,
        540
      ],
      "webhookId": "9dd3e051-58a3-4c46-bd41-58c001f009f9",
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "1ebe053c-0e26-44c6-b543-756ad551b99d",
      "name": "AIエージェント",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -2840,
        540
      ],
      "parameters": {
        "options": {
          "systemMessage": "This is a helpful and exacting data science LLM model and master Kaggle python programmer.\n\nIf Kaggle contest requirements are given from the chat input; first deeply research the problem.\n\nAccess the tool: \"previous_entry\" when preparing your background research.\n\nThen Ask any needed questions to clarify and understand the requirements necessary to build a program to address the challenge.\n\nReview your proposed program for errors and bugs.\n\nThen present the program.\n\nIf errors are returned; then iteratively debug with the chat user."
        }
      },
      "typeVersion": 1.7
    },
    {
      "id": "e042ec84-3bb6-466f-9957-0509a181d61b",
      "name": "ベクトルストアツール",
      "type": "@n8n/n8n-nodes-langchain.toolVectorStore",
      "position": [
        -2580,
        740
      ],
      "parameters": {
        "name": "previous_entry",
        "description": "={{ $('When chat message received').item.json.chatInput }}"
      },
      "typeVersion": 1
    },
    {
      "id": "fbae9bc0-6ea4-4a26-ad76-eb84bc5d06c2",
      "name": "ウィンドウバッファメモリ",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -2760,
        780
      ],
      "parameters": {
        "contextWindowLength": 15
      },
      "typeVersion": 1.3
    },
    {
      "id": "2f567628-fd1d-406b-aec7-46684bd6f5e6",
      "name": "Qdrantベクトルストア2",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
      "position": [
        -2680,
        920
      ],
      "parameters": {
        "options": {},
        "qdrantCollection": {
          "__rl": true,
          "mode": "list",
          "value": "test_rag",
          "cachedResultName": "test_rag"
        }
      },
      "credentials": {
        "qdrantApi": {
          "id": "wqHGuxoW5RJJYSIl",
          "name": "QdrantApi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3aea837f-7676-45da-b6b1-fb2f6c5f8cd9",
      "name": "Ollama チャットモデル3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOllama",
      "position": [
        -2900,
        760
      ],
      "parameters": {
        "model": "qwen3:8b",
        "options": {}
      },
      "credentials": {
        "ollamaApi": {
          "id": "jBqODDnXWJw9rGcS",
          "name": "Ollama account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a9298132-e5b9-44a2-9928-a1adf7cf9fc4",
      "name": "Embeddings Ollama2",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
      "position": [
        -2660,
        1080
      ],
      "parameters": {
        "model": "mxbai-embed-large:latest"
      },
      "credentials": {
        "ollamaApi": {
          "id": "jBqODDnXWJw9rGcS",
          "name": "Ollama account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a1c71691-8e41-4633-a1ab-4991833fb7c6",
      "name": "Ollama チャットモデル4",
      "type": "@n8n/n8n-nodes-langchain.lmChatOllama",
      "position": [
        -2360,
        900
      ],
      "parameters": {
        "model": "qwen3:8b",
        "options": {}
      },
      "credentials": {
        "ollamaApi": {
          "id": "jBqODDnXWJw9rGcS",
          "name": "Ollama account"
        }
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "6384792b-de76-4e43-b26e-12c2d15c2dd2": {
      "main": [
        [
          {
            "node": "6d59dc6a-692a-4752-a811-8b3033898fa4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f75f45cd-4aed-48a2-bb09-5db20b00a029": {
      "main": [
        [
          {
            "node": "22ff782e-c612-4928-9033-111cf516d07e",
            "type": "main",
            "index": 0
          },
          {
            "node": "6384792b-de76-4e43-b26e-12c2d15c2dd2",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "a7c971a5-39ac-4715-9e1b-a56af9713b06": {
      "main": [
        [
          {
            "node": "4c56a14c-6c56-4cc1-b7fb-a09caa3d646d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4c56a14c-6c56-4cc1-b7fb-a09caa3d646d": {
      "main": [
        [
          {
            "node": "db4de019-755e-4b91-ac70-f30825f14033",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "db4de019-755e-4b91-ac70-f30825f14033": {
      "main": [
        [
          {
            "node": "c14a711f-29ab-475f-aeff-3a070c797537",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "34fdd670-f568-4351-81c7-79fde68b8192": {
      "ai_embedding": [
        [
          {
            "node": "6d59dc6a-692a-4752-a811-8b3033898fa4",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "c14a711f-29ab-475f-aeff-3a070c797537": {
      "main": [
        [
          {
            "node": "f75f45cd-4aed-48a2-bb09-5db20b00a029",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4c4f71db-e496-4528-b0e5-dc5ffb27a2e8": {
      "ai_languageModel": [
        [
          {
            "node": "22ff782e-c612-4928-9033-111cf516d07e",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "e042ec84-3bb6-466f-9957-0509a181d61b": {
      "ai_tool": [
        [
          {
            "node": "1ebe053c-0e26-44c6-b543-756ad551b99d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "a9298132-e5b9-44a2-9928-a1adf7cf9fc4": {
      "ai_embedding": [
        [
          {
            "node": "2f567628-fd1d-406b-aec7-46684bd6f5e6",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "70b42807-a6c6-4159-b278-e77311727798": {
      "main": [
        [
          {
            "node": "a7c971a5-39ac-4715-9e1b-a56af9713b06",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3aea837f-7676-45da-b6b1-fb2f6c5f8cd9": {
      "ai_languageModel": [
        [
          {
            "node": "1ebe053c-0e26-44c6-b543-756ad551b99d",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "a1c71691-8e41-4633-a1ab-4991833fb7c6": {
      "ai_languageModel": [
        [
          {
            "node": "e042ec84-3bb6-466f-9957-0509a181d61b",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "893f1157-6c00-4b8e-b726-462ab371fadf": {
      "ai_document": [
        [
          {
            "node": "6d59dc6a-692a-4752-a811-8b3033898fa4",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "6d59dc6a-692a-4752-a811-8b3033898fa4": {
      "main": [
        []
      ]
    },
    "22ff782e-c612-4928-9033-111cf516d07e": {
      "main": [
        [
          {
            "node": "6384792b-de76-4e43-b26e-12c2d15c2dd2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2f567628-fd1d-406b-aec7-46684bd6f5e6": {
      "ai_vectorStore": [
        [
          {
            "node": "e042ec84-3bb6-466f-9957-0509a181d61b",
            "type": "ai_vectorStore",
            "index": 0
          }
        ]
      ]
    },
    "fbae9bc0-6ea4-4a26-ad76-eb84bc5d06c2": {
      "ai_memory": [
        [
          {
            "node": "1ebe053c-0e26-44c6-b543-756ad551b99d",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "0a2954cc-bec6-4750-ae75-6362761e41b6": {
      "main": [
        [
          {
            "node": "1ebe053c-0e26-44c6-b543-756ad551b99d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9a9bfcee-1966-415c-a59f-552e1f35aae9": {
      "ai_textSplitter": [
        [
          {
            "node": "893f1157-6c00-4b8e-b726-462ab371fadf",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - エンジニアリング, 人工知能

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数23
カテゴリー2
ノードタイプ19
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34