Qdrant RAGとOllamaを使用してオンデマンドAIのKaggleコンペティションアシスタントを構築
上級
これはEngineering, AI分野の自動化ワークフローで、23個のノードを含みます。主にSet, Merge, Switch, Markdown, ReadWriteFileなどのノードを使用、AI技術を活用したスマート自動化を実現。 Qdrant RAGとOllamaを使ってローカルのAI Kaggle競技用アシスタントを構築
前提条件
- •Qdrantサーバー接続情報
使用ノード (23)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下の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など)は別途料金が発生する場合があります。
関連ワークフロー
⚡AI驱动のYouTube播放列表と视频摘要与分析v2
AI YouTube播放列表与视频分析チャットボット
If
Set
Code
+
If
Set
Code
72 ノードdmr
その他
ドキュメントを学習ノートに分解
テンプレート化されたMistralAIとQdrantを使用してドキュメントを学習ノートに分解
Set
Wait
Merge
+
Set
Wait
Merge
42 ノードJimleuk
その他
AI スマートアシスタント: Supabase ストレージと Google Drive ファイルとの対話
AIワンチャットボット:SupabaseストレージとGoogle Driveのファイルと対話
If
Set
Wait
+
If
Set
Wait
62 ノードMark Shcherbakov
エンジニアリング
Supabase ストレージ内のファイルと対話する AI エージェント
Supabaseストレージ内のファイルと対話するAIエージェント
If
Merge
Switch
+
If
Merge
Switch
33 ノードMark Shcherbakov
エンジニアリング
n8nローカルテスト
Llama3、Postgres、Qdrant、Google Driveを使ったプライベートドキュメントQAシステムの構築
Set
Google Drive
Agent
+
Set
Google Drive
Agent
20 ノードDavid Olusola
内部Wiki
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他