Qwen3 + n8n 打造知识库
Ollama 创建嵌入模型
- 创建最简 Modelfile
echo FROM Qwen3-Embedding-4B-Q4_K_M.gguf > Modelfile
- 创建模型
ollama create qwen3_embedding -f Modelfile
- 使用Ollama原生API测试embedding 在 Windows 命令行(CMD)中,使用单引号/‘包裏JSON 数据会导致语法错误。
curl http://localhost:11434/api/embed -d "{\"model\":\"qwen3_embedding\", \"input\":\"Hello Qwen\"}"
输出结果为浮点数构成的向量
n8n 工作流
第一阶段:把本地文件转为向量知识库
第二阶段:基于向量知识库的智能问答系统
阶段一
🧩 总体流程概述:
该工作流会在点击执行后,读取本地文件、对文件内容进行拆分与向量化,然后存储到一个向量数据库中,为后续的问答等任务做准备。
🔄 流程节点解析:
- When clicking ‘Execute workflow’
- 作用:触发整个工作流的开始。
- 说明:用户手动点击 n8n 中的执行按钮以启动流程。
- Read/Write Files from Disk
- 作用:从本地磁盘读取文件。
- 说明:获取要处理的文档,如 .txt、.pdf、.docx 等。
- Loop Over Items
- 作用:对读取到的每一个文件进行循环处理。
- 说明:可以支持批量文件,逐个送入后续流程。
- Simple Vector Store
- 作用:将每个文件处理后得到的向量嵌入保存到一个简单的向量数据库中。
- 输入:
- EmbedDocument:来自于下方的文档分词+嵌入模型。
- 说明:这个是你的向量知识库的核心模块。
- Replace Me
- 作用:占位模块,实际使用中你可以替换为其他操作,比如 QA 模块、搜索模块、通知等。
- 说明:当前没有具体功能,提示你后续可以添加更多逻辑。
📦 嵌入生成子流程(Embedding 子流程):
这部分流程是用来将文档转为向量嵌入的。
- Default Data Loader
- 作用:将文件内容读取为纯文本,作为文档对象传递下去。
- 输入:从 Loop Over Items 中获取的文件。
- 输出:文本文档。
- Recursive Character Text Splitter
- 作用:将文档内容拆分成小块,便于嵌入。
- 说明:例如把一篇文章切分成每段几百字的小文本块。
- Embeddings Ollama
- 作用:对拆分后的文本块进行向量化(embedding)。
- 说明:这里调用的是本地部署的 Ollama 模型 Qwen3-Embedding。
阶段二
🧩 整体流程概述
当收到用户的聊天消息时,系统会:
- 使用本地向量数据库检索相关知识;
- 结合大语言模型(DeepSeek Chat)回答问题。
这个流程可以实现类似 “问我上传的文档内容” 的功能。
🔄 节点详解
When chat message received
- 触发器:当收到用户消息时,自动触发整个聊天流程。
AI Agent
- 核心控制器:这是一个智能代理(AI Agent),它会:
- 调用 LLM(这里是 DeepSeek)
- 接收外部工具(如向量数据库问答)
- 管理记忆、上下文等
- 核心控制器:这是一个智能代理(AI Agent),它会:
Chat Model:DeepSeek Chat Model
- 作用:为 AI Agent 提供基础的 LLM 能力。
- 模型:使用 DeepSeek Chat 模型来生成最终回答。
Tool:Answer questions with a vector store
- 作用:这个是 AI Agent 的一个“工具”,让它可以基于向量数据库来回答问题。
- 输入:
- Vector Store: 来自 Simple Vector Store
- Model: 使用 DeepSeek Chat(和主模型一致)
- 核心功能:这是实现基于知识库问答(RAG)的模块。
Simple Vector Store
- 作用:这是你的文档知识库,存放已经 embedding 的文档向量。
- 来源:这个库是之前你上传文档并生成 embedding 后构建的(你前一张图的流程)。
- 支持:
- 用于相似度检索
- 提供给问答模块使用
Embeddings Ollama
- 作用:用于将文档转为向量(embedding),供向量数据库使用。
- 说明:和前一个工作流保持一致,说明你整个系统是统一的。
DeepSeek Chat Model1
- 作用:为“向量问答工具”单独配置的 LLM。
- 说明:这个模型和上面主模型可以是同一个,也可以是不同的。如果你希望查询阶段和回答阶段分开使用不同模型,可以在这里配置。
后期优化方向
把 Replace Me 替换为:
- 一个 保存嵌入成功状态的记录模块
- 或者把向量传送到外部的数据库/API
设置 memory tool 用于多轮对话
如果知识库较大,加一个文档源过滤逻辑,提升检索精度
References
[1] 亿点点参数,零代码打造知识库,检索准确率提高至95%
Qwen3 + n8n 打造知识库
http://guoguo.host/blog/p/21880965.html