使用Paul Essays、Milvus和OpenAI构建带引用的RAG问答系统
高级
这是一个AI领域的自动化工作流,包含 25 个节点。主要使用 Set, Code, Html, Limit, SplitOut 等节点,结合人工智能技术实现智能自动化。 使用Paul Essays、Milvus和OpenAI构建带引用的RAG问答系统
前置要求
- •可能需要目标 API 的认证凭证
- •OpenAI API Key
使用的节点 (25)
分类
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "Hjyv9FkH5Oh6Yxw4",
"meta": {
"instanceId": "2c4c1e23e7b067270c08aab616bada21d0c384d16f212b23cf1143c6baa09219"
},
"name": "插入和检索文档",
"tags": [
{
"id": "msnDWKHQmwMDxWQH",
"name": "Milvus",
"createdAt": "2025-04-16T12:48:14.539Z",
"updatedAt": "2025-04-16T12:48:14.539Z"
},
{
"id": "tnCpo8hq8uKrdASK",
"name": "AI",
"createdAt": "2025-04-16T12:47:57.976Z",
"updatedAt": "2025-04-16T12:47:57.976Z"
}
],
"nodes": [
{
"id": "52044ccd-4e0d-4353-b612-cf8db1b55331",
"name": "当点击\"执行工作流\"时",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-500,
-100
],
"parameters": {},
"typeVersion": 1
},
{
"id": "b6993775-d21b-4ae8-a59c-43aef2b7002b",
"name": "获取文章列表",
"type": "n8n-nodes-base.httpRequest",
"position": [
-220,
-100
],
"parameters": {
"url": "http://www.paulgraham.com/articles.html",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "cbaeb236-5c93-4b34-a06b-ff0e5de8525f",
"name": "提取文章名称",
"type": "n8n-nodes-base.html",
"position": [
-20,
-100
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "essay",
"attribute": "href",
"cssSelector": "table table a",
"returnArray": true,
"returnValue": "attribute"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "d92b6692-4a02-4519-b113-8a9172c71de9",
"name": "拆分为项目",
"type": "n8n-nodes-base.splitOut",
"position": [
180,
-100
],
"parameters": {
"options": {},
"fieldToSplitOut": "essay"
},
"typeVersion": 1
},
{
"id": "d16ba71b-10fc-454f-8bfc-a6826280a4e7",
"name": "获取文章文本",
"type": "n8n-nodes-base.httpRequest",
"position": [
580,
-100
],
"parameters": {
"url": "=http://www.paulgraham.com/{{ $json.essay }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "c4fa74ea-6af5-410c-bf5c-9d8d3decf31b",
"name": "限制为前 3 个",
"type": "n8n-nodes-base.limit",
"position": [
380,
-100
],
"parameters": {
"maxItems": 3
},
"typeVersion": 1
},
{
"id": "3da8495b-62df-475d-b99d-e0f3c64266e3",
"name": "仅提取文本",
"type": "n8n-nodes-base.html",
"position": [
900,
-100
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "data",
"cssSelector": "body",
"skipSelectors": "img,nav"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "4a9b5d5d-fc94-40b7-af0c-13d992bc1eb9",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-300,
-220
],
"parameters": {
"width": 1071.752021563343,
"height": 285.66037735849045,
"content": "## 抓取最新的 Paul Graham 文章"
},
"typeVersion": 1
},
{
"id": "b8a7a288-186f-4444-b0de-33ed90009c0a",
"name": "便签5",
"type": "n8n-nodes-base.stickyNote",
"position": [
820,
-220
],
"parameters": {
"width": 625,
"height": 607,
"content": "## 加载到 Milvus 向量存储"
},
"typeVersion": 1
},
{
"id": "c9e7b166-cc65-47e2-a437-9c00017b492a",
"name": "递归字符文本分割器1",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
1240,
240
],
"parameters": {
"options": {},
"chunkSize": 6000
},
"typeVersion": 1
},
{
"id": "e1a75f27-7c8c-4d0d-9b0f-33fe9ec96fc6",
"name": "生成响应",
"type": "n8n-nodes-base.set",
"position": [
1240,
560
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "11396286-0378-4c3a-86e1-c9ef51afbfc7",
"name": "text",
"type": "string",
"value": "={{ $json.answer }} {{ $if(!$json.citations.isEmpty(), \"\\n\" + $json.citations.join(\"\"), '') }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8b3497ad-5bc8-44b3-bdf4-3a028fe265ce",
"name": "组合引用",
"type": "n8n-nodes-base.set",
"position": [
1040,
560
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ace6185e-8b3d-4f89-ae36-dfe0c391a0a9",
"name": "citations",
"type": "array",
"value": "={{ $json.citations.map(i => '[' + $('Get top chunks matching query').all()[$json.citations].json.document.metadata.file_name + ', lines ' + $('Get top chunks matching query').all()[$json.citations].json.document.metadata['loc.lines.from'] + '-' + $('Get top chunks matching query').all()[$json.citations].json.document.metadata['loc.lines.to'] + ']') }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0452cf15-145c-49dd-8803-4c8b8a7adbea",
"name": "基于块回答查询",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
680,
560
],
"parameters": {
"text": "={{ $json.context }}\n\nQuestion: {{ $('When chat message received').first().json.chatInput }}\nHelpful Answer:",
"options": {
"systemPromptTemplate": "=Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer. Important: In your response, also include the the indexes of the chunks you used to generate the answer."
},
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"required\": [\"answer\", \"citations\"],\n \"properties\": {\n \"answer\": {\n \"type\": \"string\"\n },\n \"citations\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"number\"\n }\n }\n }\n}"
},
"typeVersion": 1
},
{
"id": "d385ac35-6f94-4101-99de-5ce1991f40c4",
"name": "准备块",
"type": "n8n-nodes-base.code",
"position": [
480,
560
],
"parameters": {
"jsCode": "let out = \"\"\nfor (const i in $input.all()) {\n let itemText = \"--- CHUNK \" + i + \" ---\\n\"\n itemText += $input.all()[i].json.document.pageContent + \"\\n\"\n itemText += \"\\n\"\n out += itemText\n}\n\nreturn {\n 'context': out\n};"
},
"typeVersion": 2
},
{
"id": "379837f2-4f96-43ff-8e87-722cbe6d652f",
"name": "设置发送到模型的最大块数",
"type": "n8n-nodes-base.set",
"position": [
-300,
560
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "33f4addf-72f3-4618-a6ba-5b762257d723",
"name": "chunks",
"type": "number",
"value": 4
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "9bc391bb-df47-41df-b170-9df47a6b5e87",
"name": "嵌入 OpenAI2",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
-100,
780
],
"parameters": {
"model": "text-embedding-ada-002",
"options": {}
},
"credentials": {
"openAiApi": {
"id": "hH2PTDH4fbS7fdPv",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "efb030f4-445b-4ba0-b5c9-95e4e5893664",
"name": "当收到聊天消息时",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-540,
560
],
"webhookId": "cd2703a7-f912-46fe-8787-3fb83ea116ab",
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "c74943be-0008-4d4c-9dea-598a648a97a2",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-380,
440
],
"parameters": {
"color": 7,
"width": 1594,
"height": 529,
"content": "确保您的表名与实际知识库结构匹配"
},
"typeVersion": 1
},
{
"id": "2e27f3d8-e8a2-4647-80dd-f2643b224cb5",
"name": "检索中的 Milvus 向量存储",
"type": "@n8n/n8n-nodes-langchain.vectorStoreMilvus",
"position": [
0,
560
],
"parameters": {
"mode": "load",
"topK": 2,
"prompt": "answer the question",
"milvusCollection": {
"__rl": true,
"mode": "list",
"value": "my_collection",
"cachedResultName": "my_collection"
}
},
"credentials": {
"milvusApi": {
"id": "8tMHHoLiWXIAXa7S",
"name": "Milvus account"
}
},
"typeVersion": 1.1
},
{
"id": "a3cf7e0e-f681-4880-9ccf-5c42d5457c0f",
"name": "Milvus 向量存储",
"type": "@n8n/n8n-nodes-langchain.vectorStoreMilvus",
"position": [
1120,
-100
],
"parameters": {
"mode": "insert",
"options": {
"clearCollection": true
},
"milvusCollection": {
"__rl": true,
"mode": "list",
"value": "my_collection",
"cachedResultName": "my_collection"
}
},
"credentials": {
"milvusApi": {
"id": "8tMHHoLiWXIAXa7S",
"name": "Milvus account"
}
},
"typeVersion": 1.1
},
{
"id": "4c4cc5a5-e880-466f-a298-4af53a2acbec",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-700,
-260
],
"parameters": {
"width": 280,
"height": 180,
"content": "## 步骤 1"
},
"typeVersion": 1
},
{
"id": "18f42da4-42ea-4eb0-9c43-ef8bd31ab7ff",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-680,
460
],
"parameters": {
"height": 120,
"content": "## Step 2\nChat and get citations in response"
},
"typeVersion": 1
},
{
"id": "0af427ed-d901-4192-9fdc-986a63fd585b",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
1020,
140
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "hH2PTDH4fbS7fdPv",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "3603852a-bf12-4289-9733-dcd29d12a4f6",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
1160,
120
],
"parameters": {
"options": {},
"jsonData": "={{ $('Extract Text Only').item.json.data }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "b49eb3ae-82cb-4d87-8f22-0789b3a14d83",
"name": "OpenAI 聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
680,
780
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "hH2PTDH4fbS7fdPv",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "5dc48a1d-aaf0-4052-9666-28f9e76d198c",
"connections": {
"d385ac35-6f94-4101-99de-5ce1991f40c4": {
"main": [
[
{
"node": "0452cf15-145c-49dd-8803-4c8b8a7adbea",
"type": "main",
"index": 0
}
]
]
},
"b6993775-d21b-4ae8-a59c-43aef2b7002b": {
"main": [
[
{
"node": "cbaeb236-5c93-4b34-a06b-ff0e5de8525f",
"type": "main",
"index": 0
}
]
]
},
"c4fa74ea-6af5-410c-bf5c-9d8d3decf31b": {
"main": [
[
{
"node": "d16ba71b-10fc-454f-8bfc-a6826280a4e7",
"type": "main",
"index": 0
}
]
]
},
"8b3497ad-5bc8-44b3-bdf4-3a028fe265ce": {
"main": [
[
{
"node": "e1a75f27-7c8c-4d0d-9b0f-33fe9ec96fc6",
"type": "main",
"index": 0
}
]
]
},
"0af427ed-d901-4192-9fdc-986a63fd585b": {
"ai_embedding": [
[
{
"node": "a3cf7e0e-f681-4880-9ccf-5c42d5457c0f",
"type": "ai_embedding",
"index": 0
}
]
]
},
"3da8495b-62df-475d-b99d-e0f3c64266e3": {
"main": [
[
{
"node": "a3cf7e0e-f681-4880-9ccf-5c42d5457c0f",
"type": "main",
"index": 0
}
]
]
},
"d16ba71b-10fc-454f-8bfc-a6826280a4e7": {
"main": [
[
{
"node": "3da8495b-62df-475d-b99d-e0f3c64266e3",
"type": "main",
"index": 0
}
]
]
},
"b49eb3ae-82cb-4d87-8f22-0789b3a14d83": {
"ai_languageModel": [
[
{
"node": "0452cf15-145c-49dd-8803-4c8b8a7adbea",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"9bc391bb-df47-41df-b170-9df47a6b5e87": {
"ai_embedding": [
[
{
"node": "2e27f3d8-e8a2-4647-80dd-f2643b224cb5",
"type": "ai_embedding",
"index": 0
}
]
]
},
"3603852a-bf12-4289-9733-dcd29d12a4f6": {
"ai_document": [
[
{
"node": "a3cf7e0e-f681-4880-9ccf-5c42d5457c0f",
"type": "ai_document",
"index": 0
}
]
]
},
"cbaeb236-5c93-4b34-a06b-ff0e5de8525f": {
"main": [
[
{
"node": "d92b6692-4a02-4519-b113-8a9172c71de9",
"type": "main",
"index": 0
}
]
]
},
"d92b6692-4a02-4519-b113-8a9172c71de9": {
"main": [
[
{
"node": "c4fa74ea-6af5-410c-bf5c-9d8d3decf31b",
"type": "main",
"index": 0
}
]
]
},
"379837f2-4f96-43ff-8e87-722cbe6d652f": {
"main": [
[
{
"node": "2e27f3d8-e8a2-4647-80dd-f2643b224cb5",
"type": "main",
"index": 0
}
]
]
},
"0452cf15-145c-49dd-8803-4c8b8a7adbea": {
"main": [
[
{
"node": "8b3497ad-5bc8-44b3-bdf4-3a028fe265ce",
"type": "main",
"index": 0
}
]
]
},
"2e27f3d8-e8a2-4647-80dd-f2643b224cb5": {
"main": [
[
{
"node": "d385ac35-6f94-4101-99de-5ce1991f40c4",
"type": "main",
"index": 0
}
]
]
},
"52044ccd-4e0d-4353-b612-cf8db1b55331": {
"main": [
[
{
"node": "b6993775-d21b-4ae8-a59c-43aef2b7002b",
"type": "main",
"index": 0
}
]
]
},
"c9e7b166-cc65-47e2-a437-9c00017b492a": {
"ai_textSplitter": [
[
{
"node": "3603852a-bf12-4289-9733-dcd29d12a4f6",
"type": "ai_textSplitter",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 人工智能
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用OpenAI和Milvus向量数据库创建Paul Graham文章问答系统
使用OpenAI和Milvus向量数据库创建Paul Graham文章问答系统
Html
Limit
Split Out
+
Html
Limit
Split Out
22 节点Cheney Zhang
人工智能
在可视化参考库中探索n8n节点
在可视化参考库中探索n8n节点
If
Ftp
Set
+
If
Ftp
Set
113 节点I versus AI
其他
BambooHR AI 驱动的公司政策和福利聊天机器人
BambooHR AI 驱动的公司政策和福利聊天机器人
Set
Filter
Bamboo Hr
+
Set
Filter
Bamboo Hr
50 节点Ludwig
人力资源
[模板] AI宠物店 v8
🐶 AI宠物店助手 - 集成GPT-4o、Google日历和WhatsApp/Instagram/Facebook
If
N8n
Set
+
If
N8n
Set
244 节点Amanda Benks
销售
AI 代理餐厅 [模板]
🤖 WhatsApp、Instagram 和 Messenger 的 AI 餐厅助手
If
N8n
Set
+
If
N8n
Set
239 节点Amanda Benks
其他
AI驱动博客自动化
AI驱动博客自动化:使用GPT-4生成并发布SEO文章至WordPress和Twitter
If
Set
Code
+
If
Set
Code
144 节点Jay Emp0
内容创作
工作流信息
难度等级
高级
节点数量25
分类1
节点类型15
作者
Cheney Zhang
@zc277584121Algorithm engineer at Zilliz, dedicating to the application of vector databases in the AI ecosystem.
外部链接
在 n8n.io 查看 →
分享此工作流