컨텍스트 흡수 파이프라인
중급
이것은Engineering, Multimodal AI분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Set, Webhook, ConvertToFile, Agent, EmbeddingsOpenAi 등의 노드를 사용하며. OpenRouter AI와 Milvus를 사용하여 RAG 시스템에서 음성 메모에서 상황을 추출
사전 요구사항
- •HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
- •OpenAI API Key
사용된 노드 (15)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "workflow-id-placeholder",
"meta": {
"instanceId": "instance-id-placeholder",
"templateCredsSetupCompleted": true
},
"name": "Context Ingestion Pipeline",
"tags": [],
"nodes": [
{
"id": "cee1c3f4-a0d3-4e4c-8563-70814b37d99d",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-384,
-80
],
"webhookId": "webhook-uuid-placeholder",
"parameters": {
"path": "webhook-uuid-placeholder",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "4cf76388-5dbf-46a3-8750-1bbda180949d",
"name": "필드 편집",
"type": "n8n-nodes-base.set",
"position": [
-176,
-80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d1c59fe6-0834-45bd-8cc2-1c399773d7ee",
"name": "title",
"type": "string",
"value": "={{ $json.body.data.title }}"
},
{
"id": "bde4d7fb-c21b-4a5e-bfbf-96aaf0ad7b6b",
"name": "transcript",
"type": "string",
"value": "={{ $json.body.data.transcript }}"
},
{
"id": "a79b01b6-e602-43b4-a3c2-7efca1cedf3a",
"name": "timestamp",
"type": "string",
"value": "={{ $json.body.timestamp }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5ffd63b4-fd8a-4be3-ae07-6fa1861579b8",
"name": "AI 에이전트",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-16,
-112
],
"parameters": {
"text": "={{ $json.transcript }}",
"options": {
"systemMessage": "=You are a **Context Extraction Agent**.\nYour role is to ingest text from the user, which will have been captured using **speech-to-text** and may therefore contain transcription errors, missing words, or imprecise phrasing.\n\n**Your tasks are:**\n\n1. **Infer intended meaning:**\n\n * If any words appear to be obvious mistranscriptions, you may replace them with the most likely intended words based on the context.\n\n2. **Reformulate into third person:**\n\n * Change all first-person references (\"I\", \"me\", \"my\") into \"User\" or \"their\" where appropriate.\n * Example: `\"I really enjoy spicy food\"` → `\"User enjoys spicy food\"`.\n\n3. **Extract context data only:**\n\n * Identify and isolate **significant, specific facts** about the user that could be useful for grounding AI inference in a Retrieval-Augmented Generation (RAG) pipeline.\n * Omit casual musings, filler thoughts, and irrelevant narrative.\n\n4. **Format the output in plain text:**\n\n * Keep each fact as a separate line.\n * Optionally group facts under **all-caps headers** with one blank line before and after.\n * Avoid any other formatting, markup, or commentary.\n\n5. **Output rules:**\n\n * No introductory or concluding remarks.\n * The result is a single continuous plain text document containing only the extracted facts.\n * Keep the facts **short, precise, and formulaic**.\n\n---\n\n**Example Input:**\n\n```\nI just moved to a new city last month, and I'm still figuring out the best pizza places. \nI think my favorite so far is Margarita pizza, though I really miss the one I used to get back home. \nOh, and my new apartment has a great view of the downtown area. \n```\n\n**Example Output:**\n\n```\nLOCATION \nUser moved to a new city recently. \n\nFOOD PREFERENCES \nUser likes pizza. \nUser's favorite type of pizza is Margarita. \n\nOTHER \nUser's apartment has a view of the downtown area. \n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "8b98eb0a-258c-4e43-bc74-8a007ae95668",
"name": "구조화된 출력 파서",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
208,
128
],
"parameters": {
"jsonSchemaExample": " {\n \"output\": \"User moved to a new city recently.\\nUser likes pizza.\\nUser's favorite type of pizza is Margarita.\\nUser's apartment has a view of the downtown area.\"\n}"
},
"typeVersion": 1.3
},
{
"id": "b2eb0913-9dd9-4533-82a0-e09d61724b64",
"name": "OpenRouter 채팅 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
-160,
96
],
"parameters": {
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "credential-id-placeholder",
"name": "OpenRouter account"
}
},
"typeVersion": 1
},
{
"id": "298d1326-fa5d-4bd6-9a5a-4d0a07f078b8",
"name": "필드 편집1",
"type": "n8n-nodes-base.set",
"position": [
336,
-112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "5676fee9-3080-4b08-be04-b6203d2b132b",
"name": "tite.",
"type": "string",
"value": "={{ $('Edit Fields').item.json.title }}"
},
{
"id": "a46332e5-ba8c-4094-87ed-e04ab8462367",
"name": "output",
"type": "string",
"value": "=Context data created: {{ $('Webhook').item.json.body.timestamp }}\n\nCONTEXT:\n\n{{ $json.output }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f5875c16-9c32-468f-89fa-cec55a21c236",
"name": "파일로 변환",
"type": "n8n-nodes-base.convertToFile",
"position": [
544,
-144
],
"parameters": {
"options": {
"fileName": "={{ $json.tite[\"\"] }}"
},
"operation": "toText",
"sourceProperty": "output"
},
"typeVersion": 1.1
},
{
"id": "874e9798-782a-4ce5-bbab-3203576b53d6",
"name": "Milvus 벡터 저장소",
"type": "@n8n/n8n-nodes-langchain.vectorStoreMilvus",
"position": [
752,
-128
],
"parameters": {
"mode": "insert",
"options": {
"clearCollection": false
},
"milvusCollection": {
"__rl": true,
"mode": "list",
"value": "user-context-collection",
"cachedResultName": "user-context-collection"
}
},
"credentials": {
"milvusApi": {
"id": "credential-id-placeholder",
"name": "Milvus account"
}
},
"typeVersion": 1.3
},
{
"id": "7d82b497-4349-4039-9fcd-62776317a14a",
"name": "기본 데이터 로더",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
896,
96
],
"parameters": {
"options": {},
"dataType": "binary"
},
"typeVersion": 1.1
},
{
"id": "44abc538-09d8-4359-9911-f66016b5aa28",
"name": "임베딩 OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
624,
96
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "credential-id-placeholder",
"name": "OpenAI API"
}
},
"typeVersion": 1.2
},
{
"id": "752244c4-196f-44a0-99cf-eb1fde3b0407",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-496,
-288
],
"parameters": {
"width": 208,
"height": 144,
"content": "## Context data\n\nVoicenotes.com tag trigger for 'conext data'"
},
"typeVersion": 1
},
{
"id": "fa03fa89-8cd7-4774-8c52-7a2bee25c02d",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
-272
],
"parameters": {
"width": 160,
"height": 80,
"content": "## Narrow fields"
},
"typeVersion": 1
},
{
"id": "5e9a54f2-dbaa-48f7-bd10-2e0095304aed",
"name": "스티커 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
-288
],
"parameters": {
"width": 272,
"height": 144,
"content": "## Context data extraction agent\n\nParses transcript and isolates context rich text"
},
"typeVersion": 1
},
{
"id": "bbdb9d7a-ff61-484b-be60-53a684c3dcb1",
"name": "스티커 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
-320
],
"parameters": {
"width": 352,
"height": 144,
"content": "## Context data prepared for embedding\n\nTimestamp injected into agent output"
},
"typeVersion": 1
},
{
"id": "6071a74f-3bf3-4f7f-b574-0e279bddaecd",
"name": "스티커 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
736,
-304
],
"parameters": {
"width": 352,
"height": 144,
"content": "## Embedding\n\nContext dasta embedded into Milvus\nvector database (hosted)"
},
"typeVersion": 1
}
],
"active": true,
"pinData": {
"Webhook": [
{
"json": {
"body": {
"data": {
"id": "sample-note-id",
"title": "Sample Voice Note Title",
"transcript": "This is a sample transcript from a voice note. The user discusses their preferences and provides context that will be extracted and stored in the vector database for future reference."
},
"event": "tag.attached.299437",
"timestamp": "2025-08-15T11:28:21+00:00"
},
"query": {},
"params": {},
"headers": {
"host": "your-n8n-instance.com",
"cf-ray": "ray-id-placeholder",
"cdn-loop": "cloudflare; loops=1",
"cf-visitor": "{\"scheme\":\"https\"}",
"connection": "keep-alive",
"user-agent": "GuzzleHttp/7",
"cf-ipcountry": "US",
"content-type": "application/json",
"authorization": "Bearer",
"cf-warp-tag-id": "warp-tag-placeholder",
"content-length": "1481",
"accept-encoding": "gzip, br",
"x-forwarded-for": "xxx.xxx.xxx.xxx",
"cf-connecting-ip": "xxx.xxx.xxx.xxx",
"x-forwarded-proto": "https"
},
"webhookUrl": "https://your-n8n-instance.com/webhook-test/webhook-uuid-placeholder",
"executionMode": "test"
}
}
],
"Edit Fields": [
{
"json": {
"title": "Sample Voice Note Title",
"timestamp": "2025-08-15T11:28:21+00:00",
"transcript": "This is a sample transcript from a voice note. The user discusses their preferences and provides context that will be extracted and stored in the vector database for future reference."
}
}
]
},
"settings": {
"executionOrder": "v1"
},
"versionId": "version-id-placeholder",
"connections": {
"cee1c3f4-a0d3-4e4c-8563-70814b37d99d": {
"main": [
[
{
"node": "4cf76388-5dbf-46a3-8750-1bbda180949d",
"type": "main",
"index": 0
}
]
]
},
"5ffd63b4-fd8a-4be3-ae07-6fa1861579b8": {
"main": [
[
{
"node": "298d1326-fa5d-4bd6-9a5a-4d0a07f078b8",
"type": "main",
"index": 0
}
]
]
},
"4cf76388-5dbf-46a3-8750-1bbda180949d": {
"main": [
[
{
"node": "5ffd63b4-fd8a-4be3-ae07-6fa1861579b8",
"type": "main",
"index": 0
}
]
]
},
"298d1326-fa5d-4bd6-9a5a-4d0a07f078b8": {
"main": [
[
{
"node": "f5875c16-9c32-468f-89fa-cec55a21c236",
"type": "main",
"index": 0
}
]
]
},
"f5875c16-9c32-468f-89fa-cec55a21c236": {
"main": [
[
{
"node": "874e9798-782a-4ce5-bbab-3203576b53d6",
"type": "main",
"index": 0
}
]
]
},
"44abc538-09d8-4359-9911-f66016b5aa28": {
"ai_embedding": [
[
{
"node": "874e9798-782a-4ce5-bbab-3203576b53d6",
"type": "ai_embedding",
"index": 0
}
]
]
},
"7d82b497-4349-4039-9fcd-62776317a14a": {
"ai_document": [
[
{
"node": "874e9798-782a-4ce5-bbab-3203576b53d6",
"type": "ai_document",
"index": 0
}
]
]
},
"b2eb0913-9dd9-4533-82a0-e09d61724b64": {
"ai_languageModel": [
[
{
"node": "5ffd63b4-fd8a-4be3-ae07-6fa1861579b8",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"8b98eb0a-258c-4e43-bc74-8a007ae95668": {
"ai_outputParser": [
[
{
"node": "5ffd63b4-fd8a-4be3-ae07-6fa1861579b8",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 엔지니어링, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
AI驱动의이메일分诊与자동回复系统,통합OpenAI에이전트및Gmail
AI驱动의이메일分诊与자동回复系统,통합OpenAI에이전트및Gmail
If
Set
Gmail
+
If
Set
Gmail
68 노드Abdullahi Ahmed
콘텐츠 제작
기억, Google 스위트, 다양한 AI 연구 이미징을 통합한 WhatsApp 어시스턴트
기억, Google 패키지 및 다양한 AI 연구 이미징을 포함한 WhatsApp 어시스턴트 구축
If
Set
Code
+
If
Set
Code
71 노드Iniyavan JC
AI 챗봇
매일 WhatsApp 그룹 지능형 분석: GPT-4.1 분석 및 음성 메시지 변환
매일 WhatsApp 그룹 지능 분석: GPT-4.1 분석 및 음성 메시지 트랜스크립션
If
Set
Code
+
If
Set
Code
52 노드Daniel Lianes
기타
벡터 저장소
OpenAI와 Gemini AI를 사용하여 Google Sheets에서 개인 데이터 벡터 스토리지 생성
Google Sheets
Convert To File
Agent
+
Google Sheets
Convert To File
Agent
13 노드Mustafa Polat
엔지니어링
시각화 참조 라이브러리에서 n8n 노드를 탐색
可视化 참조 라이브러리에서 n8n 노드를 탐색
If
Ftp
Set
+
If
Ftp
Set
113 노드I versus AI
기타
반려동물 가게 4
🐶 펫 샵 예약 AI 대리자
If
Set
Code
+
If
Set
Code
187 노드Bruno Dias
인공지능
워크플로우 정보
난이도
중급
노드 수15
카테고리2
노드 유형10
저자
Daniel Rosehill
@danielrosehillFascinations and passions: open source, AI, automation and workflow building, MCP.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유