Remove legacy test workflows and simplify docs.
Keep only the unified n8n flow in the repository structure and clean up obsolete JSON workflow files used during testing. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,155 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "TG Fixed Native",
|
|
||||||
"nodes": [
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"mode": "insert",
|
|
||||||
"qdrantCollection": {
|
|
||||||
"__rl": true,
|
|
||||||
"value": "telegram_kb",
|
|
||||||
"mode": "list",
|
|
||||||
"cachedResultName": "telegram_kb"
|
|
||||||
},
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
|
|
||||||
"typeVersion": 1.3,
|
|
||||||
"position": [
|
|
||||||
512,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"id": "e02cd3a1-a2b7-4177-b76a-87656ab74cac",
|
|
||||||
"name": "Qdrant Vector Store",
|
|
||||||
"credentials": {
|
|
||||||
"qdrantApi": {
|
|
||||||
"id": "gS1LJOMgnR7VJFRO",
|
|
||||||
"name": "QdrantApi account 2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"jsonMode": "expressionData",
|
|
||||||
"jsonData": "={{ $json.text }}",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
|
|
||||||
"typeVersion": 1.1,
|
|
||||||
"position": [
|
|
||||||
480,
|
|
||||||
208
|
|
||||||
],
|
|
||||||
"id": "a09381bd-04dc-4273-8d6f-35c23b9177c5",
|
|
||||||
"name": "Default Data Loader"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"jsCode": "const body = $input.item.json.body || {};\nconst meta = body.metadata || {};\nconst rawText = body.text || \"\";\n\nreturn {\n json: {\n text: `Пользователь ${meta.sender_name || 'Unknown'} (ID: ${meta.sender_id || '0'}) написал: ${rawText}`,\n metadata: {\n ...meta,\n processed_at: new Date().toISOString()\n }\n }\n};"
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.code",
|
|
||||||
"typeVersion": 2,
|
|
||||||
"position": [
|
|
||||||
240,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"id": "539d5c4b-067b-4491-b62c-ea3d555707d0",
|
|
||||||
"name": "Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"model": "qwen3-embedding:8b"
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
256,
|
|
||||||
208
|
|
||||||
],
|
|
||||||
"id": "eab97058-b3f4-48d3-8da8-a0e6dd9359d5",
|
|
||||||
"name": "Embeddings Ollama",
|
|
||||||
"credentials": {
|
|
||||||
"ollamaApi": {
|
|
||||||
"id": "Uis7Bsdb0l1qDDL7",
|
|
||||||
"name": "Ollama account 2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"httpMethod": "POST",
|
|
||||||
"path": "tg-inbox",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.webhook",
|
|
||||||
"typeVersion": 2.1,
|
|
||||||
"position": [
|
|
||||||
-16,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"id": "316ab407-1f95-44dc-bc3c-fff1185ce301",
|
|
||||||
"name": "Webhook",
|
|
||||||
"webhookId": "d857e864-ed25-447f-84ef-27c63190fb93",
|
|
||||||
"notesInFlow": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"pinData": {},
|
|
||||||
"connections": {
|
|
||||||
"Code": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Embeddings Ollama": {
|
|
||||||
"ai_embedding": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "ai_embedding",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Default Data Loader": {
|
|
||||||
"ai_document": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "ai_document",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Webhook": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Code",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"active": true,
|
|
||||||
"settings": {
|
|
||||||
"executionOrder": "v1",
|
|
||||||
"binaryMode": "separate",
|
|
||||||
"availableInMCP": false
|
|
||||||
},
|
|
||||||
"versionId": "2e4668e1-305c-4de7-8537-11cfe20a8020",
|
|
||||||
"meta": {
|
|
||||||
"templateCredsSetupCompleted": true,
|
|
||||||
"instanceId": "96706479c2e398d2a4e75bb05002310bb6030e8268be45294cab77c6640a0fe6"
|
|
||||||
},
|
|
||||||
"id": "ILJJXfEmFW6KG6YZDjQWX",
|
|
||||||
"tags": []
|
|
||||||
}
|
|
||||||
4
redme.md
4
redme.md
@@ -24,11 +24,11 @@ dbbot/
|
|||||||
├── script.py # Telethon userbot sender -> n8n webhook
|
├── script.py # Telethon userbot sender -> n8n webhook
|
||||||
├── requirements.txt # зависимости python
|
├── requirements.txt # зависимости python
|
||||||
├── Dockerfile # контейнер для script.py
|
├── Dockerfile # контейнер для script.py
|
||||||
|
├── .gitignore # исключения (секреты, кеш, сессия)
|
||||||
├── .env.example # пример переменных для контейнера
|
├── .env.example # пример переменных для контейнера
|
||||||
├── session_data/
|
├── session_data/
|
||||||
│ └── session.session # StringSession (создаешь сам)
|
│ └── session.session # StringSession (создаешь сам)
|
||||||
├── DBBot Unified n8n Qdrant.json # единый workflow (ingest + rag)
|
└── DBBot Unified n8n Qdrant.json # единый workflow (ingest + rag)
|
||||||
└── Работа с базой (3).json # старый/альтернативный workflow
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Что подготовить перед первым запуском
|
## Что подготовить перед первым запуском
|
||||||
|
|||||||
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Работа с базой",
|
|
||||||
"nodes": [
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"promptType": "define",
|
|
||||||
"text": "=Используй Qdrant Vector Store для ответа на вопрос {{ $json.message.text }}",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.agent",
|
|
||||||
"typeVersion": 3.1,
|
|
||||||
"position": [
|
|
||||||
544,
|
|
||||||
-48
|
|
||||||
],
|
|
||||||
"id": "e1231327-544c-416d-b1fa-95915d68f524",
|
|
||||||
"name": "AI Agent"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"updates": [
|
|
||||||
"message"
|
|
||||||
],
|
|
||||||
"additionalFields": {}
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.telegramTrigger",
|
|
||||||
"typeVersion": 1.2,
|
|
||||||
"position": [
|
|
||||||
288,
|
|
||||||
-48
|
|
||||||
],
|
|
||||||
"id": "80e4a41a-387c-4ac4-b798-41bdbbb25eaa",
|
|
||||||
"name": "Telegram Trigger",
|
|
||||||
"webhookId": "875f9245-fe51-4c55-ae42-afe3d20f6ff6",
|
|
||||||
"credentials": {
|
|
||||||
"telegramApi": {
|
|
||||||
"id": "dSTpf5HKyoPp6X8N",
|
|
||||||
"name": "Telegram account"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"model": "qwen3:30b-a3b",
|
|
||||||
"options": {
|
|
||||||
"temperature": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.lmChatOllama",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
496,
|
|
||||||
176
|
|
||||||
],
|
|
||||||
"id": "45cc634d-5eea-4c8e-83f2-f34c463db00e",
|
|
||||||
"name": "Ollama Chat Model",
|
|
||||||
"credentials": {
|
|
||||||
"ollamaApi": {
|
|
||||||
"id": "Uis7Bsdb0l1qDDL7",
|
|
||||||
"name": "Ollama account 2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"mode": "retrieve-as-tool",
|
|
||||||
"toolDescription": " ALWAYS use this tool to answer ANY user question. The answer is contained within this tool.",
|
|
||||||
"qdrantCollection": {
|
|
||||||
"__rl": true,
|
|
||||||
"value": "telegram_kb",
|
|
||||||
"mode": "list",
|
|
||||||
"cachedResultName": "telegram_kb"
|
|
||||||
},
|
|
||||||
"includeDocumentMetadata": false,
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
|
|
||||||
"typeVersion": 1.3,
|
|
||||||
"position": [
|
|
||||||
672,
|
|
||||||
256
|
|
||||||
],
|
|
||||||
"id": "bbc61a50-f5a8-443e-8022-c9ead1df63a7",
|
|
||||||
"name": "Qdrant Vector Store",
|
|
||||||
"credentials": {
|
|
||||||
"qdrantApi": {
|
|
||||||
"id": "gS1LJOMgnR7VJFRO",
|
|
||||||
"name": "QdrantApi account 2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"model": "qwen3-embedding:8b"
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
672,
|
|
||||||
416
|
|
||||||
],
|
|
||||||
"id": "7e1c6b2a-092b-43eb-8efe-9b19088ed3b2",
|
|
||||||
"name": "Embeddings Ollama",
|
|
||||||
"credentials": {
|
|
||||||
"ollamaApi": {
|
|
||||||
"id": "Uis7Bsdb0l1qDDL7",
|
|
||||||
"name": "Ollama account 2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
|
|
||||||
"text": "={{ $node[\"Code in JavaScript\"].json.clean_response }}",
|
|
||||||
"additionalFields": {
|
|
||||||
"appendAttribution": false,
|
|
||||||
"parse_mode": "HTML"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.telegram",
|
|
||||||
"typeVersion": 1.2,
|
|
||||||
"position": [
|
|
||||||
1040,
|
|
||||||
-48
|
|
||||||
],
|
|
||||||
"id": "9b3713cb-d699-45a2-8c4a-21c0065df53f",
|
|
||||||
"name": "Send a text message",
|
|
||||||
"webhookId": "038aa575-d7da-4413-805f-6773aa670295",
|
|
||||||
"retryOnFail": true,
|
|
||||||
"credentials": {
|
|
||||||
"telegramApi": {
|
|
||||||
"id": "dSTpf5HKyoPp6X8N",
|
|
||||||
"name": "Telegram account"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"chatId": "-4804863247",
|
|
||||||
"text": "=📥 **Входящее от {{ $node[\"Telegram Trigger\"].json[\"message\"][\"from\"][\"first_name\"] }}:**\n{{ $node[\"Telegram Trigger\"].json[\"message\"][\"text\"] }}\n\n🤖 **Ответ бота:**\n{{ $node[\"Code in JavaScript\"].json.clean_response }}",
|
|
||||||
"additionalFields": {
|
|
||||||
"parse_mode": "HTML"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"id": "e8ac46da-bf4a-4fd0-8f1d-cf7664eb86f8",
|
|
||||||
"name": "Log_to_Group1",
|
|
||||||
"type": "n8n-nodes-base.telegram",
|
|
||||||
"typeVersion": 1.2,
|
|
||||||
"position": [
|
|
||||||
1232,
|
|
||||||
-48
|
|
||||||
],
|
|
||||||
"webhookId": "d23840f7-3652-4aca-935f-ab5331d01d27",
|
|
||||||
"retryOnFail": true,
|
|
||||||
"credentials": {
|
|
||||||
"telegramApi": {
|
|
||||||
"id": "dSTpf5HKyoPp6X8N",
|
|
||||||
"name": "Telegram account"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"jsCode": "// 1. Пытаемся найти текст в самых частых полях n8n\nlet rawText = $input.item.json.text || $input.item.json.response || $input.item.json.output || \"\";\n\n// 2. Очищаем от <think>...</think>\nlet cleanText = rawText.replace(/<think>[\\s\\S]*?<\\/think>/g, '').trim();\n\n// 3. Если после очистки пусто, выводим заглушку, чтобы не было ошибки\nif (!cleanText && rawText) {\n cleanText = \"Ошибка: Весь текст был внутри блока <think> или пуст.\";\n}\n\nreturn {\n json: {\n clean_response: cleanText\n }\n};"
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.code",
|
|
||||||
"typeVersion": 2,
|
|
||||||
"position": [
|
|
||||||
848,
|
|
||||||
-48
|
|
||||||
],
|
|
||||||
"id": "18e6aa52-73d2-439a-9ce9-abc2390bac05",
|
|
||||||
"name": "Code in JavaScript"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"pinData": {},
|
|
||||||
"connections": {
|
|
||||||
"Telegram Trigger": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "AI Agent",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Ollama Chat Model": {
|
|
||||||
"ai_languageModel": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "AI Agent",
|
|
||||||
"type": "ai_languageModel",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Qdrant Vector Store": {
|
|
||||||
"ai_tool": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "AI Agent",
|
|
||||||
"type": "ai_tool",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Embeddings Ollama": {
|
|
||||||
"ai_embedding": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "ai_embedding",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"AI Agent": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Code in JavaScript",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Send a text message": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Log_to_Group1",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Code in JavaScript": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Send a text message",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"active": true,
|
|
||||||
"settings": {
|
|
||||||
"executionOrder": "v1",
|
|
||||||
"availableInMCP": false
|
|
||||||
},
|
|
||||||
"versionId": "f8ca7ca6-eb4f-4823-bdb7-d523e51c8924",
|
|
||||||
"meta": {
|
|
||||||
"templateCredsSetupCompleted": true,
|
|
||||||
"instanceId": "96706479c2e398d2a4e75bb05002310bb6030e8268be45294cab77c6640a0fe6"
|
|
||||||
},
|
|
||||||
"id": "2R3-4Yl4wuemCpJ0FVOi3",
|
|
||||||
"tags": []
|
|
||||||
}
|
|
||||||
@@ -1,183 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Создание базы",
|
|
||||||
"nodes": [
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"mode": "insert",
|
|
||||||
"qdrantCollection": {
|
|
||||||
"__rl": true,
|
|
||||||
"mode": "list",
|
|
||||||
"value": "111"
|
|
||||||
},
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
|
|
||||||
"typeVersion": 1.3,
|
|
||||||
"position": [
|
|
||||||
928,
|
|
||||||
-144
|
|
||||||
],
|
|
||||||
"id": "acfdb2b7-e113-42a6-8793-566f5da7d0e2",
|
|
||||||
"name": "Qdrant Vector Store",
|
|
||||||
"credentials": {
|
|
||||||
"qdrantApi": {
|
|
||||||
"id": "gS1LJOMgnR7VJFRO",
|
|
||||||
"name": "QdrantApi account 2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"model": "qwen3-embedding:8b"
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
880,
|
|
||||||
48
|
|
||||||
],
|
|
||||||
"id": "67815ae1-6b99-4e41-94e6-9b7986d12738",
|
|
||||||
"name": "Embeddings Ollama",
|
|
||||||
"credentials": {
|
|
||||||
"ollamaApi": {
|
|
||||||
"id": "Uis7Bsdb0l1qDDL7",
|
|
||||||
"name": "Ollama account 2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"dataType": "binary",
|
|
||||||
"loader": "docxLoader",
|
|
||||||
"textSplittingMode": "custom",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
|
|
||||||
"typeVersion": 1.1,
|
|
||||||
"position": [
|
|
||||||
1040,
|
|
||||||
64
|
|
||||||
],
|
|
||||||
"id": "291df053-ad1c-4041-964d-0a427e547fca",
|
|
||||||
"name": "Default Data Loader"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"chunkSize": 500,
|
|
||||||
"chunkOverlap": 50
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.textSplitterCharacterTextSplitter",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
1136,
|
|
||||||
272
|
|
||||||
],
|
|
||||||
"id": "703047dd-e772-4d36-aed8-f6ba091bce5c",
|
|
||||||
"name": "Character Text Splitter"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"fileSelector": "={{ $json.path }}",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.readWriteFile",
|
|
||||||
"typeVersion": 1.1,
|
|
||||||
"position": [
|
|
||||||
592,
|
|
||||||
-144
|
|
||||||
],
|
|
||||||
"id": "d1e6082c-71f2-440c-9b34-011ae652fa5b",
|
|
||||||
"name": "Read/Write Files from Disk"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"triggerOn": "folder",
|
|
||||||
"path": "/data/vid",
|
|
||||||
"events": [
|
|
||||||
"add"
|
|
||||||
],
|
|
||||||
"options": {
|
|
||||||
"usePolling": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.localFileTrigger",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
320,
|
|
||||||
-144
|
|
||||||
],
|
|
||||||
"id": "4bd85a42-f9d0-436f-9617-0ebf42db1a7f",
|
|
||||||
"name": "Local File Trigger"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"pinData": {},
|
|
||||||
"connections": {
|
|
||||||
"Embeddings Ollama": {
|
|
||||||
"ai_embedding": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "ai_embedding",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Default Data Loader": {
|
|
||||||
"ai_document": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "ai_document",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Character Text Splitter": {
|
|
||||||
"ai_textSplitter": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Default Data Loader",
|
|
||||||
"type": "ai_textSplitter",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Read/Write Files from Disk": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Local File Trigger": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Read/Write Files from Disk",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"active": false,
|
|
||||||
"settings": {
|
|
||||||
"executionOrder": "v1",
|
|
||||||
"availableInMCP": false
|
|
||||||
},
|
|
||||||
"versionId": "d1e2bb08-fb79-49f3-85d4-c6f491447f11",
|
|
||||||
"meta": {
|
|
||||||
"templateCredsSetupCompleted": true,
|
|
||||||
"instanceId": "96706479c2e398d2a4e75bb05002310bb6030e8268be45294cab77c6640a0fe6"
|
|
||||||
},
|
|
||||||
"id": "lK4wQ7btZPq3elWleb7ry",
|
|
||||||
"tags": []
|
|
||||||
}
|
|
||||||
@@ -1,178 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Создание базы (TG Text)",
|
|
||||||
"nodes": [
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"mode": "insert",
|
|
||||||
"qdrantCollection": {
|
|
||||||
"__rl": true,
|
|
||||||
"value": "=11111",
|
|
||||||
"mode": "id"
|
|
||||||
},
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
|
|
||||||
"typeVersion": 1.3,
|
|
||||||
"position": [
|
|
||||||
112,
|
|
||||||
-208
|
|
||||||
],
|
|
||||||
"id": "44a1fb40-5b1f-401a-9fea-ca61f111d2ca",
|
|
||||||
"name": "Qdrant Vector Store",
|
|
||||||
"credentials": {
|
|
||||||
"qdrantApi": {
|
|
||||||
"id": "gS1LJOMgnR7VJFRO",
|
|
||||||
"name": "QdrantApi account 2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"model": "qwen3-embedding:8b"
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
32,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"id": "7448ed28-7971-4d95-b073-1251dfff242e",
|
|
||||||
"name": "Embeddings Ollama",
|
|
||||||
"credentials": {
|
|
||||||
"ollamaApi": {
|
|
||||||
"id": "XVSCsyxx8Z57lSRa",
|
|
||||||
"name": "Ollama account 3"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"chunkSize": 500,
|
|
||||||
"chunkOverlap": 50
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.textSplitterCharacterTextSplitter",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
272,
|
|
||||||
192
|
|
||||||
],
|
|
||||||
"id": "aed6ea3c-ad56-432b-8ef5-823a7778da27",
|
|
||||||
"name": "Character Text Splitter"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"httpMethod": "POST",
|
|
||||||
"path": "tg-inbox",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.webhook",
|
|
||||||
"typeVersion": 2.1,
|
|
||||||
"position": [
|
|
||||||
-448,
|
|
||||||
-208
|
|
||||||
],
|
|
||||||
"id": "1770ab28-9cfa-4bc8-864a-fe793f1b95db",
|
|
||||||
"name": "Webhook",
|
|
||||||
"webhookId": "d857e864-ed25-447f-84ef-27c63190fb93",
|
|
||||||
"notesInFlow": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"textSplittingMode": "custom",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
|
|
||||||
"typeVersion": 1.1,
|
|
||||||
"position": [
|
|
||||||
272,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"id": "6c98f0d9-97c1-4d94-bdea-a1941fd7d3f8",
|
|
||||||
"name": "Default Data Loader"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"jsCode": "// В n8n данные из POST запроса всегда лежат в объекте body\nconst msg = $input.item.json.body;\n\n// 1. Берем текст\nconst rawText = msg.text || \"\"; \n\n// 2. Достаем метаданные из объекта metadata, который прислал Python\nconst meta = msg.metadata || {};\n\n// 3. Извлекаем имя и ID из объекта metadata\nconst senderName = meta.sender_name || \"Unknown\";\nconst senderId = meta.sender_id || \"0\";\n\n// 4. Формируем результат для Qdrant\nreturn {\n json: {\n content: `Пользователь ${senderName} (ID: ${senderId}) написал: ${rawText}`,\n metadata: {\n ...meta, // Копируем всю метадату (date, message_id, group_id и т.д.)\n sender_name: senderName,\n sender_id: senderId,\n original_text: rawText\n }\n }\n};\n"
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.code",
|
|
||||||
"typeVersion": 2,
|
|
||||||
"position": [
|
|
||||||
-192,
|
|
||||||
-208
|
|
||||||
],
|
|
||||||
"id": "0ff56c0f-9208-4ae9-920c-4332c09f6df4",
|
|
||||||
"name": "Code in JavaScript"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"pinData": {},
|
|
||||||
"connections": {
|
|
||||||
"Webhook": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Code in JavaScript",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Embeddings Ollama": {
|
|
||||||
"ai_embedding": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "ai_embedding",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Default Data Loader": {
|
|
||||||
"ai_document": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "ai_document",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Code in JavaScript": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Character Text Splitter": {
|
|
||||||
"ai_textSplitter": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Default Data Loader",
|
|
||||||
"type": "ai_textSplitter",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"active": false,
|
|
||||||
"settings": {
|
|
||||||
"executionOrder": "v1",
|
|
||||||
"binaryMode": "separate",
|
|
||||||
"availableInMCP": false
|
|
||||||
},
|
|
||||||
"versionId": "f5079d8e-590c-4db5-988a-3fe709346a4a",
|
|
||||||
"meta": {
|
|
||||||
"templateCredsSetupCompleted": true,
|
|
||||||
"instanceId": "96706479c2e398d2a4e75bb05002310bb6030e8268be45294cab77c6640a0fe6"
|
|
||||||
},
|
|
||||||
"id": "QpXms3TNMSqlQD2ULX3WO",
|
|
||||||
"tags": []
|
|
||||||
}
|
|
||||||
@@ -1,150 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Создание базы (TG Text) - Fixed",
|
|
||||||
"nodes": [
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"mode": "insert",
|
|
||||||
"qdrantCollection": {
|
|
||||||
"__rl": true,
|
|
||||||
"value": "11111",
|
|
||||||
"mode": "id"
|
|
||||||
},
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
|
|
||||||
"typeVersion": 1.3,
|
|
||||||
"position": [
|
|
||||||
608,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"id": "7f206108-8187-4ca9-a734-704eae814643",
|
|
||||||
"name": "Qdrant Vector Store",
|
|
||||||
"credentials": {
|
|
||||||
"qdrantApi": {
|
|
||||||
"id": "gS1LJOMgnR7VJFRO",
|
|
||||||
"name": "QdrantApi account 2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"model": "qwen3-embedding:8b"
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
464,
|
|
||||||
208
|
|
||||||
],
|
|
||||||
"id": "9c1f5512-f2f7-4469-bcc3-e8a6824aae51",
|
|
||||||
"name": "Embeddings Ollama",
|
|
||||||
"credentials": {
|
|
||||||
"ollamaApi": {
|
|
||||||
"id": "XVSCsyxx8Z57lSRa",
|
|
||||||
"name": "Ollama account 3"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"httpMethod": "POST",
|
|
||||||
"path": "tg-inbox",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.webhook",
|
|
||||||
"typeVersion": 2.1,
|
|
||||||
"position": [
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"id": "f784ec7d-bbc5-4ed4-af89-ec894d99d053",
|
|
||||||
"name": "Webhook",
|
|
||||||
"webhookId": "d857e864-ed25-447f-84ef-27c63190fb93"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"jsCode": "const msg = $input.item.json.body || {};\nconst rawText = msg.text || \"\"; \nconst meta = msg.metadata || {};\n\nconst senderName = meta.sender_name || \"Unknown\";\nconst senderId = meta.sender_id || \"0\";\n\n// Формируем ОДНУ строку, которая станет ОДНИМ вектором\nreturn {\n json: {\n text: `Пользователь ${senderName} (ID: ${senderId}) написал: ${rawText}`,\n metadata: {\n ...meta,\n sender_name: senderName,\n sender_id: senderId\n }\n }\n};\n"
|
|
||||||
},
|
|
||||||
"type": "n8n-nodes-base.code",
|
|
||||||
"typeVersion": 2,
|
|
||||||
"position": [
|
|
||||||
272,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"id": "6bb63840-979a-4453-8284-a52df680a972",
|
|
||||||
"name": "Format Data"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
|
|
||||||
"typeVersion": 1.1,
|
|
||||||
"position": [
|
|
||||||
752,
|
|
||||||
208
|
|
||||||
],
|
|
||||||
"id": "5260623b-ec01-4fa6-baed-c340d74d1eab",
|
|
||||||
"name": "Default Data Loader"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"pinData": {},
|
|
||||||
"connections": {
|
|
||||||
"Webhook": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Format Data",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Format Data": {
|
|
||||||
"main": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "main",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Embeddings Ollama": {
|
|
||||||
"ai_embedding": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "ai_embedding",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Default Data Loader": {
|
|
||||||
"ai_document": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "Qdrant Vector Store",
|
|
||||||
"type": "ai_document",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"active": false,
|
|
||||||
"settings": {
|
|
||||||
"executionOrder": "v1",
|
|
||||||
"binaryMode": "separate",
|
|
||||||
"availableInMCP": false
|
|
||||||
},
|
|
||||||
"versionId": "483acdf0-ad7b-4ade-ab5a-61f6e3a73f5a",
|
|
||||||
"meta": {
|
|
||||||
"instanceId": "96706479c2e398d2a4e75bb05002310bb6030e8268be45294cab77c6640a0fe6"
|
|
||||||
},
|
|
||||||
"id": "R9JVik9-vpScLvVK-27nM",
|
|
||||||
"tags": []
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user