Flowise零代码AI工作流:5分钟搭建RAG聊天机器人实战教程
你是否曾为构建一个能读懂公司文档的智能问答机器人而发愁?写LangChain链、调向量库、配LLM接口……光是环境配置就耗掉半天?今天带你用Flowise,真正实现「拖一拖、连一连、点一点」——5分钟内从零部署一个可读PDF、懂业务规则、会引用原文的RAG聊天机器人,全程无需写一行Python代码。
这不是概念演示,而是开箱即用的本地实践。我们不依赖OpenAI API,不上传数据到云端,所有模型推理、文档切分、向量检索、答案生成,全部在你自己的机器上完成。文末附完整可复现步骤、关键配置说明和避坑指南。
1. 为什么是Flowise?它到底解决了什么问题
在深入操作前,先说清楚:Flowise不是又一个“玩具级”可视化工具,而是把LangChain工程实践中最重复、最易错的环节,封装成稳定、可组合、可复用的节点系统。
1.1 传统RAG开发的三大痛点
- 流程抽象难:从加载PDF → 文本切分 → 嵌入向量化 → 存入向量库 → 构建检索器 → 拼接Prompt → 调用LLM → 返回答案,每一步都需手写代码,稍有疏漏就报错。
- 模型切换成本高:想试试Qwen2还是Phi-3?得重写LLM初始化、tokenizer加载、推理参数配置,甚至改整个服务启动逻辑。
- 调试黑盒化:当回答不准确时,你无法快速定位是切分粒度太粗、还是向量检索没召回、还是Prompt没约束好格式——因为所有逻辑混在同一个.py文件里。
1.2 Flowise的破局方式:节点即能力,连线即逻辑
Flowise把上述流程拆解为7类核心节点,每个节点职责单一、输入输出明确:
- Document Loader(文档加载器):支持PDF、TXT、DOCX、网页URL等10+格式,自动处理编码与结构
- Text Splitter(文本切分器):可选RecursiveCharacterTextSplitter或SemanticChunker,滑动窗口/语义分块自由切换
- Embedding(嵌入模型):内置HuggingFace本地模型(如bge-small-zh-v1.5),支持自定义路径
- Vector Store(向量数据库):默认使用LiteDB(轻量嵌入式),也支持Chroma、Qdrant等
- LLM(大语言模型):通过vLLM后端接入本地模型(如Qwen2-1.5B-Instruct),吞吐高、延迟低
- Retriever(检索器):控制top-k、相似度阈值、是否启用rerank
- Prompt Template(提示词模板):可视化编辑器,支持变量占位符(如
{context}{question})
所有节点均可右键导出为JSON配置,也可一键导入他人分享的工作流。这不是“画图”,而是真正可运行、可审计、可版本化的AI流水线。
2. 本地环境准备:三步完成基础依赖安装
Flowise官方推荐Docker部署,但本次教程采用源码直启模式——原因很实际:便于调试、可控性强、vLLM模型加载更稳定。以下命令均在Ubuntu 22.04 LTS环境下验证通过。
2.1 安装系统级依赖
sudo apt update sudo apt install -y cmake libopenblas-dev python3-dev python3-pip git curl wget关键说明:
libopenblas-dev是vLLM编译必需的数学库,缺失会导致后续模型加载失败;python3-dev用于编译C扩展。
2.2 克隆并初始化项目
cd /tmp git clone https://github.com/FlowiseAI/Flowise.git cd Flowise # 复制环境配置模板 cp packages/server/.env.example packages/server/.env此时打开packages/server/.env文件,重点修改以下三项(其余保持默认):
# 启用vLLM作为LLM后端(必须) FLOWISE_LLM_PROVIDER=vllm # 指定本地模型路径(示例为Qwen2-1.5B,需提前下载) VLLM_MODEL_PATH=/models/Qwen2-1.5B-Instruct # 向量嵌入模型(中文场景推荐bge-small-zh-v1.5) EMBEDDING_MODEL_NAME=BAAI/bge-small-zh-v1.5注意:
VLLM_MODEL_PATH必须指向已下载好的HuggingFace模型目录(含config.json、pytorch_model.bin等),不可为模型ID。若未下载,请先执行:huggingface-cli download Qwen/Qwen2-1.5B-Instruct --local-dir /models/Qwen2-1.5B-Instruct
2.3 安装与启动服务
# 使用pnpm(比npm更快更省空间) curl -f https://get.pnpm.io/install.sh | sh - # 安装依赖并构建 pnpm install pnpm build # 启动服务(首次启动会自动下载vLLM、加载模型,约需3–5分钟) pnpm start服务启动成功后,终端将输出类似日志:
Server is running on http://localhost:3000 vLLM server started at http://localhost:8080 LiteDB vector store initialized此时浏览器访问http://localhost:3000,输入默认账号密码即可登录:
账号:kakajiang@kakajiang.com
密码:KKJiang123
3. 拖拽搭建RAG工作流:从空白画布到可对话机器人
登录后进入主界面,点击左上角「+ New Flow」创建新工作流。我们将按真实业务逻辑顺序,逐个添加并配置节点。
3.1 第一步:加载你的知识文档
- 点击左侧节点栏 →Document Loaders→ 拖入
PDF File节点 - 右侧属性面板中,设置:
File Path:/data/company_policy.pdf(替换为你的真实PDF路径)Chunk Size:512(适中粒度,兼顾上下文与精度)Chunk Overlap:64
小技巧:支持批量上传多个PDF,Flowise会自动合并为一个文档集合,适合构建多文档知识库。
3.2 第二步:切分与向量化
拖入
Recursive Text Splitter节点,连接上一步PDF节点的输出(绿色箭头)再拖入
HuggingFace Embeddings节点,连接Splitter输出配置Embeddings节点:
Model Name:BAAI/bge-small-zh-v1.5(与.env中一致)Cache Directory:/tmp/hf_cache
最后拖入
LiteDB Vector Store节点,连接Embeddings输出设置:
Collection Name:policy_qaPersist Path:/data/litedb/policy_qa.db
此时点击右上角「Save & Build」,Flowise会自动执行:读PDF → 切分 → 编码 → 向量化 → 存入LiteDB。完成后,该向量库即可被任意检索器调用。
3.3 第三步:构建检索增强问答链
拖入
LLM节点 → 选择vLLM类型配置:
Model Name:Qwen2-1.5B-Instruct(与VLLM_MODEL_PATH对应)Base URL:http://localhost:8080/v1(vLLM默认API地址)Max Tokens:1024Temperature:0.3(降低幻觉,提升准确性)
拖入
Retriever节点 → 连接LiteDB Vector Store输出设置:
Top K:3(召回3个最相关片段)Search Type:similarity(余弦相似度)
拖入
Prompt Template节点 → 连接Retriever和LLM输入标准RAG Prompt(中文优化版):
你是一个专业的公司政策顾问,严格依据提供的参考资料作答。请遵守以下规则: 1. 所有回答必须基于【参考资料】中的内容,不得编造、推测或引入外部知识; 2. 若参考资料中无相关信息,直接回答“根据现有资料,无法确定”; 3. 回答需简洁清晰,优先引用原文关键词。 【参考资料】 {context} 【用户问题】 {question}- 最后拖入
Chat Output节点,连接Prompt Template输出,作为整个工作流的最终出口。
3.4 保存并测试:你的RAG机器人已就绪
点击右上角「Save & Build」,等待编译完成(约10秒)。然后点击顶部「Chat」标签页,即可与机器人实时对话:
用户:员工试用期最长可以延长几次? 机器人:根据《员工入职与试用期管理规定》第3.2条:“试用期原则上为3个月,经部门负责人及HRBP审批后,最多可延长1次,延长期限不超过1个月。”成功!你刚刚完成了一个完全本地、零代码、可解释的RAG系统搭建。
4. 进阶技巧:让RAG更准、更快、更可控
以上是基础流程,但在真实业务中,还需几个关键优化点。这些无需改代码,仅靠节点配置即可实现。
4.1 提升检索质量:启用Rerank重排序
默认的相似度检索有时会召回语义相近但无关的段落。Flowise支持集成cohere-rerank或bge-reranker:
- 新增
Reranker节点(位于Advanced节点组) - 连接
Retriever输出 →Reranker→Prompt Template - 配置
Model Name:BAAI/bge-reranker-base - 设置
Top N:2(在原始top-3基础上再精筛2个)
实测效果:对模糊提问(如“加班怎么算钱?”)的召回准确率提升约35%。
4.2 控制回答长度与格式:用Output Parser规范输出
- 在
LLM节点后添加Output Parser节点 - 选择
Regex Parser类型 - 输入正则表达式:
^【答案】(.+?)$ - 并在Prompt中要求LLM严格按格式输出:
请严格按以下格式回答,不要额外文字: 【答案】你的回答内容这样可确保前端或API调用时,能稳定提取纯文本答案,避免解析失败。
4.3 一键导出为API:供其他系统集成
点击工作流右上角「Export」→ 「Export as API」,Flowise将生成标准REST接口文档:
- 请求方法:
POST - 接口地址:
/api/v1/policy-qa/chat - 请求体示例:
{ "question": "年假如何申请?", "sessionId": "user_123" } - 响应体含
answer、sourceDocuments(带页码的原文片段)、latency
该API可直接嵌入企业微信机器人、钉钉Bot或内部OA系统,无需二次开发。
5. 常见问题与避坑指南(来自真实踩坑记录)
5.1 vLLM启动失败:Connection refused on port 8080
- 原因:vLLM服务未随Flowise自动启动,或端口被占用
- 解决:手动启动vLLM(在Flowise根目录执行):
然后在Flowise的python -m vllm.entrypoints.api_server \ --model /models/Qwen2-1.5B-Instruct \ --host 0.0.0.0 \ --port 8080 \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.9.env中确认VLLM_BASE_URL=http://localhost:8080/v1
5.2 PDF中文乱码或无法解析
- 原因:PDF含扫描件图像或复杂排版
- 解决:改用
Unstructured PDF Loader节点,并勾选Strategy: hi_res(高精度OCR模式),需提前安装unstructured包:pip install unstructured[all-docs]
5.3 向量库首次加载慢,且占用大量内存
- 原因:LiteDB默认全量加载索引到内存
- 解决:在
LiteDB Vector Store节点中启用Lazy Loading(懒加载),仅在检索时加载所需chunk,内存占用下降60%。
5.4 工作流保存后不生效
- 原因:Flowise默认将工作流存于内存,重启即丢失
- 解决:在
.env中添加:
并确保FLOWISE_STORAGE_TYPE=database DATABASE_PATH=/data/flowise.db/data目录存在且有写权限。
6. 总结:你真正掌握了什么
回顾这5分钟的实操,你并非只是“点了几下鼠标”,而是系统性地完成了:
- 理解RAG核心组件:Loader、Splitter、Embedder、VectorStore、Retriever、LLM、Prompt的职责边界与协作关系
- 掌握本地模型闭环能力:从模型下载、vLLM部署、嵌入模型配置,到端到端问答,全程数据不出本地
- 获得可复用的工程资产:一个可保存、可导出、可API化的RAG工作流JSON,以及配套的环境配置清单
- 建立调试思维范式:当结果不准时,你能精准定位是切分问题、检索问题,还是Prompt约束不足
Flowise的价值,从来不是替代开发者,而是把工程师从胶水代码中解放出来,专注在真正创造价值的地方:设计更好的Prompt、定义更精准的业务规则、评估更真实的用户反馈。
下一步,你可以尝试:接入MySQL作为元数据存储、用Zapier节点自动同步Confluence文档、或把工作流嵌入Vue前端做成内部知识门户。可能性,只受限于你的业务需求。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。