Qwen3 + n8n 打造知识库

Ollama 创建嵌入模型

模型下载

  1. 创建最简 Modelfile
echo FROM Qwen3-Embedding-4B-Q4_K_M.gguf > Modelfile
  1. 创建模型
ollama create qwen3_embedding -f Modelfile
  1. 使用Ollama原生API测试embedding 在 Windows 命令行(CMD)中,使用单引号/‘包裏JSON 数据会导致语法错误。
curl http://localhost:11434/api/embed -d "{\"model\":\"qwen3_embedding\", \"input\":\"Hello Qwen\"}"

输出结果为浮点数构成的向量

n8n 工作流

第一阶段:把本地文件转为向量知识库
第二阶段:基于向量知识库的智能问答系统

阶段一

🧩 总体流程概述:

该工作流会在点击执行后,读取本地文件、对文件内容进行拆分与向量化,然后存储到一个向量数据库中,为后续的问答等任务做准备。

🔄 流程节点解析:

  1. When clicking ‘Execute workflow’
    • 作用:触发整个工作流的开始。
    • 说明:用户手动点击 n8n 中的执行按钮以启动流程。
  2. Read/Write Files from Disk
    • 作用:从本地磁盘读取文件。
    • 说明:获取要处理的文档,如 .txt、.pdf、.docx 等。
  3. Loop Over Items
    • 作用:对读取到的每一个文件进行循环处理。
    • 说明:可以支持批量文件,逐个送入后续流程。
  4. Simple Vector Store
    • 作用:将每个文件处理后得到的向量嵌入保存到一个简单的向量数据库中。
    • 输入:
      • EmbedDocument:来自于下方的文档分词+嵌入模型。
    • 说明:这个是你的向量知识库的核心模块。
  5. Replace Me
    • 作用:占位模块,实际使用中你可以替换为其他操作,比如 QA 模块、搜索模块、通知等。
    • 说明:当前没有具体功能,提示你后续可以添加更多逻辑。

📦 嵌入生成子流程(Embedding 子流程):

这部分流程是用来将文档转为向量嵌入的。

  1. Default Data Loader
    • 作用:将文件内容读取为纯文本,作为文档对象传递下去。
    • 输入:从 Loop Over Items 中获取的文件。
    • 输出:文本文档。
  2. Recursive Character Text Splitter
    • 作用:将文档内容拆分成小块,便于嵌入。
    • 说明:例如把一篇文章切分成每段几百字的小文本块。
  3. Embeddings Ollama
    • 作用:对拆分后的文本块进行向量化(embedding)。
    • 说明:这里调用的是本地部署的 Ollama 模型 Qwen3-Embedding。

阶段二

🧩 整体流程概述

当收到用户的聊天消息时,系统会:

  1. 使用本地向量数据库检索相关知识;
  2. 结合大语言模型(DeepSeek Chat)回答问题。

这个流程可以实现类似 “问我上传的文档内容” 的功能。

🔄 节点详解

  1. When chat message received

    • 触发器:当收到用户消息时,自动触发整个聊天流程。
  2. AI Agent

    • 核心控制器:这是一个智能代理(AI Agent),它会:
      • 调用 LLM(这里是 DeepSeek)
      • 接收外部工具(如向量数据库问答)
      • 管理记忆、上下文等
  3. Chat Model:DeepSeek Chat Model

    • 作用:为 AI Agent 提供基础的 LLM 能力。
    • 模型:使用 DeepSeek Chat 模型来生成最终回答。
  4. Tool:Answer questions with a vector store

    • 作用:这个是 AI Agent 的一个“工具”,让它可以基于向量数据库来回答问题。
    • 输入:
      • Vector Store: 来自 Simple Vector Store
      • Model: 使用 DeepSeek Chat(和主模型一致)
    • 核心功能:这是实现基于知识库问答(RAG)的模块。
  5. Simple Vector Store

    • 作用:这是你的文档知识库,存放已经 embedding 的文档向量。
    • 来源:这个库是之前你上传文档并生成 embedding 后构建的(你前一张图的流程)。
    • 支持:
      • 用于相似度检索
      • 提供给问答模块使用
  6. Embeddings Ollama

    • 作用:用于将文档转为向量(embedding),供向量数据库使用。
    • 说明:和前一个工作流保持一致,说明你整个系统是统一的。
  7. DeepSeek Chat Model1

    • 作用:为“向量问答工具”单独配置的 LLM。
    • 说明:这个模型和上面主模型可以是同一个,也可以是不同的。如果你希望查询阶段和回答阶段分开使用不同模型,可以在这里配置。

后期优化方向

  • 把 Replace Me 替换为:

    • 一个 保存嵌入成功状态的记录模块
    • 或者把向量传送到外部的数据库/API
  • 设置 memory tool 用于多轮对话

  • 如果知识库较大,加一个文档源过滤逻辑,提升检索精度

References

[1] 亿点点参数,零代码打造知识库,检索准确率提高至95%


Qwen3 + n8n 打造知识库
http://guoguo.host/blog/p/21880965.html
作者
Guoguo
发布于
2025年7月8日
许可协议