上下文摄取管道
中级
这是一个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": "上下文摄取管道",
"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 Agent",
"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": "## 上下文数据"
},
"typeVersion": 1
},
{
"id": "fa03fa89-8cd7-4774-8c52-7a2bee25c02d",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
-272
],
"parameters": {
"width": 160,
"height": 80,
"content": "## 精简字段"
},
"typeVersion": 1
},
{
"id": "5e9a54f2-dbaa-48f7-bd10-2e0095304aed",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
-288
],
"parameters": {
"width": 272,
"height": 144,
"content": "## 上下文数据提取代理"
},
"typeVersion": 1
},
{
"id": "bbdb9d7a-ff61-484b-be60-53a684c3dcb1",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
-320
],
"parameters": {
"width": 352,
"height": 144,
"content": "## 上下文数据准备嵌入"
},
"typeVersion": 1
},
{
"id": "6071a74f-3bf3-4f7f-b574-0e279bddaecd",
"name": "便签说明4",
"type": "n8n-nodes-base.stickyNote",
"position": [
736,
-304
],
"parameters": {
"width": 352,
"height": 144,
"content": "## 嵌入"
},
"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": {
"Webhook": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields1": {
"main": [
[
{
"node": "Convert to File",
"type": "main",
"index": 0
}
]
]
},
"Convert to File": {
"main": [
[
{
"node": "Milvus Vector Store",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Milvus Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Milvus Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"OpenRouter Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 工程, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
语音笔记到Slack和Nuclino
使用Claude Sonnet将语音笔记处理为AI回复,发送至Nuclino和Slack
Set
Merge
Slack
+6
16 节点Daniel Rosehill
内部知识库
Voicenotes - 发送提示
基于Voicenotes、Claude Sonnet和邮件发送的语音转文本AI助手
Set
Gmail
Noco Db
+5
15 节点Daniel Rosehill
个人效率
AI驱动的邮件分诊与自动回复系统,集成OpenAI代理和Gmail
AI驱动的邮件分诊与自动回复系统,集成OpenAI代理和Gmail
If
Set
Gmail
+20
68 节点Abdullahi Ahmed
内容创作
构建带记忆、Google套件和多AI研究成像的WhatsApp助手
构建带记忆、Google套件和多AI研究成像的WhatsApp助手
If
Set
Code
+27
71 节点Iniyavan JC
AI 聊天机器人
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
If
Set
Code
+20
52 节点Daniel Lianes
杂项
向量存储
使用OpenAI和Gemini AI从Google Sheets创建个人数据向量存储
Google Sheets
Convert To File
Agent
+7
13 节点Mustafa Polat
工程
工作流信息
难度等级
中级
节点数量15
分类2
节点类型10
作者
Daniel Rosehill
@danielrosehillFascinations and passions: open source, AI, automation and workflow building, MCP.
外部链接
在 n8n.io 查看 →
分享此工作流