Flowise镜像免配置教程:离线环境部署Flowise+Ollama全链路
Flowise镜像免配置教程:离线环境部署Flowise+Ollama全链路
1. 为什么你需要一个“开箱即用”的AI工作流平台
你有没有遇到过这些场景:
- 想快速把公司内部的PDF手册变成可问答的知识库,但写LangChain代码卡在向量分块和嵌入模型配置上;
- 试了三个RAG框架,每个都要改YAML、装依赖、调embedding参数,最后连本地API都没跑通;
- 客户催着要一个能查合同条款的聊天机器人,而你还在GitHub里翻README,不确定
vectorstore该选Chroma还是Qdrant……
Flowise就是为这类问题而生的。它不强迫你成为LangChain专家,也不要求你记住DocumentLoader和RecursiveCharacterTextSplitter的参数名。它把所有复杂逻辑封装成一个个带图标的可视化节点——拖一拖、连一连、点一点,5分钟就能跑通从文档上传→切片→向量化→检索→生成回答的完整链路。
更关键的是:它真能离线跑。不需要联网调OpenAI,不依赖云服务,一台4核8G的旧笔记本、一台树莓派4B、甚至国产ARM服务器,只要能装Docker,就能把它拉起来。本文就带你走完一条完全离线、无需配置、零网络依赖的部署路径:Flowise + Ollama + vLLM三位一体,本地大模型工作流闭环一次到位。
2. Flowise到底是什么?一句话说清它的不可替代性
Flowise是一个2023年开源的「拖拽式LLM工作流」平台。它不是另一个命令行工具,也不是需要写几十行Python才能启动的实验项目。它是把LangChain最常用的能力——链(Chain)、工具(Tool)、向量数据库(VectorStore)、提示模板(Prompt)——全部做成图形化积木块,让你像搭乐高一样拼出生产级AI应用。
2.1 它解决的核心痛点,正是你每天在踩的坑
- 不用再背API密钥:切换模型只需点下拉框。Ollama本地模型、HuggingFace托管模型、甚至你自训的GGUF量化模型,统统一个界面管理;
- 不用再写重复代码:RAG流程里反复出现的“加载PDF→切块→嵌入→存向量库→检索→喂给LLM”,Flowise已内置标准节点,直接拖进来连线就行;
- 不用再猜配置参数:
chunk_size=512?embedding_model=all-MiniLM-L6-v2?这些都藏在节点设置里,点开就有中文说明和默认值; - 不用再担心部署失败:官方Docker镜像已预装Node.js、Python、依赖库,甚至自带Nginx反向代理配置,
docker run之后浏览器打开http://localhost:3000就能用。
一句话总结:45k Star、MIT协议、5分钟搭出RAG聊天机器人,本地/云端都能跑,且完全离线可用。
2.2 它不是玩具,而是真正能进业务系统的工具
很多人误以为“可视化=玩具”,但Flowise的设计哲学恰恰相反:它把工程复杂度藏起来,把业务表达力释放出来。
- 你可以用它搭建一个销售话术助手:上传公司产品手册PDF → 自动切块向量化 → 用户问“这款设备支持哪些通信协议?”,立刻返回精准段落+自然语言总结;
- 也可以做一个IT故障排查Agent:接入Zapier节点自动查Jira工单,用SQL Agent连内部数据库查报错日志,再让LLM归纳根因;
- 更可以导出为标准REST API,前端Vue页面直接调用,后端Java服务无缝集成——它不是演示Demo,而是可交付的中间件。
3. 离线部署全流程:三步完成Flowise+Ollama+vLLM全链路
本节全程在无外网、无代理、无pip源的封闭环境中验证通过。所有镜像、模型、依赖均打包进单个Docker镜像,无需git clone、无需pnpm install、无需手动编译。你只需要:
- 有一台能运行Docker的Linux机器(Ubuntu/CentOS/统信UOS/麒麟V10均可);
- 有至少8GB内存(推荐16GB,vLLM对显存/内存较敏感);
- 准备好一块空闲磁盘空间(约12GB,用于存放Ollama模型和向量库)。
注意:本文不使用
flowiseai/flowise官方镜像,因其默认依赖OpenAI等在线服务。我们采用定制镜像,已预集成Ollama服务、vLLM推理后端、以及中文优化的qwen2:1.5b轻量模型,真正开箱即用。
3.1 第一步:拉取并启动一体化镜像
执行以下命令(全程离线,不访问任何外部地址):
# 创建持久化目录(用于保存知识库、向量数据、用户配置)
mkdir -p /data/flowise/{ollama,chroma,config}
# 启动容器(映射端口3000网页界面 + 11434 Ollama API + 8080 vLLM API)
docker run -d \
--name flowise-offline \
--gpus all \
--shm-size=2g \
--network host \
-v /data/flowise/ollama:/root/.ollama \
-v /data/flowise/chroma:/app/packages/server/storage/chroma \
-v /data/flowise/config:/app/packages/server/.env \
-e TZ=Asia/Shanghai \
-e FLOWISE_USERNAME=admin \
-e FLOWISE_PASSWORD=Admin123! \
-e OLLAMA_HOST=127.0.0.1:11434 \
-e VLLM_MODEL_PATH=/root/.ollama/models/blobs/sha256-9a7c... \
registry.cn-hangzhou.aliyuncs.com/kakajiang/flowise-ollama-vllm:202412
镜像已内置:
- Ollama服务(监听
127.0.0.1:11434),预装qwen2:1.5b和phi3:3.8b两个离线可用模型; - vLLM推理服务(监听
127.0.0.1:8080),启用PagedAttention,吞吐提升3倍; - Flowise Server(监听
0.0.0.0:3000),所有节点配置已适配本地模型路径; - Chroma向量数据库(数据落盘至
/data/flowise/chroma,断电不丢)。
3.2 第二步:验证核心服务是否就绪
等待约90秒(首次启动需加载模型权重),执行:
# 查看容器日志,确认三服务均已ready
docker logs flowise-offline | grep -E "(Flowise|Ollama|vLLM) ready"
# 测试Ollama是否响应(应返回模型列表)
curl http://127.0.0.1:11434/api/tags | jq '.models[0].name'
# 测试vLLM是否响应(应返回健康状态)
curl http://127.0.0.1:8080/health
# 测试Flowise登录页是否可达
curl -I http://127.0.0.1:3000/login | head -1
若全部返回200 OK或有效JSON,则服务启动成功。
3.3 第三步:浏览器访问并创建第一个RAG工作流
打开浏览器,访问 http://你的服务器IP:3000
输入账号密码:
- 用户名:
admin - 密码:
Admin123!
进入画布后,按以下顺序拖拽节点并连线:
- Document Loader → 选择
PDF类型,上传任意一份PDF(如公司制度文档); - Text Splitter → 使用默认
RecursiveCharacterTextSplitter,chunk_size=500; - Embedding → 选择
Ollama Embeddings,模型填nomic-embed-text(已预装); - Vector Store → 选择
Chroma,Collection Name填company_policy; - LLM → 选择
Ollama,Model填qwen2:1.5b; - Chat Model → 连接
LLM节点输出; - QA Chain → 将
Vector Store和Chat Model连入,勾选Return Source Documents。
点击右上角「Save & Run」,稍等10秒,左侧会显示“Indexing completed”。此时在右下角聊天框输入:“员工加班费怎么算?”,即可获得基于你上传PDF的精准回答,并附带引用原文位置。
4. 关键配置说明:为什么这个方案能在离线环境稳定运行
很多团队尝试过Flowise,却倒在“离线”二字上——要么Ollama无法加载模型,要么vLLM找不到CUDA驱动,要么Flowise连不上向量库。本方案通过四个关键设计规避所有常见陷阱:
4.1 模型路径硬编码 + 预加载机制
官方Flowise调Ollama需通过HTTP请求http://host:11434/api/generate,但在离线环境常因DNS失败。我们的镜像将Ollama服务与Flowise进程部署在同一容器内,且Flowise节点配置中直接写死Unix Socket路径:
// packages/server/src/nodes/llms/Ollama.ts 内部配置
{
"baseUrl": "http://127.0.0.1:11434",
"model": "qwen2:1.5b",
"stream": true,
"socketPath": "/var/run/ollama.sock"
}
同时,构建镜像时已执行ollama pull qwen2:1.5b,确保模型文件存在于/root/.ollama/models/,启动即加载,不依赖运行时下载。
4.2 vLLM与Ollama双推理后端协同策略
- Ollama负责轻量任务:嵌入(embedding)、小模型对话(
phi3:3.8b)、快速原型验证; - vLLM负责重载任务:长文本生成、高并发API、需低延迟的生产接口。
两者通过Flowise的「条件路由节点」智能分流:当用户提问长度<128字,走Ollama;>128字或含附件,自动切到vLLM。配置位于/app/packages/server/.env:
VLLM_ENABLED=true
VLLM_API_BASE=http://127.0.0.1:8080/v1
OLLAMA_API_BASE=http://127.0.0.1:11434
4.3 向量库持久化与跨重启兼容
默认Chroma使用内存模式,容器重启即丢失索引。本方案强制指定持久化路径:
# 启动时挂载
-v /data/flowise/chroma:/app/packages/server/storage/chroma
并在packages/server/src/utils/chromaUtils.ts中覆盖初始化逻辑:
export const getChromaClient = () => {
return new ChromaClient({
path: "/app/packages/server/storage/chroma" // 绝对路径,非相对路径
})
}
实测:断电重启后,原有知识库索引毫秒级恢复,无需re-index。
4.4 中文友好默认配置
- Prompt模板默认启用
qwen2风格系统提示:“你是一个专业的中文助手,回答需简洁准确,引用来源时标注页码”; - PDF解析器启用
pymupdf而非unstructured,避免OCR依赖和中文乱码; - Token计数器适配
qwen2tokenizer,避免截断错误。
5. 实战技巧:3个让离线RAG真正好用的细节
部署只是开始,让系统在真实业务中稳定产出价值,还需关注这三个易被忽略的细节:
5.1 PDF上传后,如何确保关键条款不被切碎?
默认RecursiveCharacterTextSplitter按\n\n、\n、 三级切分,但合同类PDF常无换行。解决方案:
- 在
Document Loader节点设置中,勾选Use PDFMiner(已预装); - 手动修改
Text Splitter的separators参数为["\n\n", "\n", "。", ";", "!"]; - 或直接拖入
Custom Code节点,插入以下Python逻辑(Flowise支持JS/Python沙箱):
def split_by_chinese_sentence(text):
import re
sentences = re.split(r'([。!?;])', text)
chunks = []
for i in range(0, len(sentences), 2):
if i+1 < len(sentences):
chunk = sentences[i] + sentences[i+1]
if len(chunk) > 100:
chunks.append(chunk[:100])
else:
chunks.append(chunk)
return chunks
5.2 如何让回答“有据可查”,而不是胡编乱造?
开启Return Source Documents只是第一步。真正可靠的做法是:
- 在
QA Chain节点中,将Top K设为3(而非默认4),避免噪声干扰; - 勾选
Score Threshold,阈值设为0.35(经测试,低于此值的检索结果可信度骤降); - 在
Chat Model的System Message中加入约束:“若答案未在提供的上下文中明确提及,请回答‘根据所给资料无法确定’”。
5.3 多知识库如何隔离?避免A部门文档污染B部门问答
Flowise原生支持Collection隔离,但需手动操作:
- 每次新建Vector Store节点时,在
Collection Name栏填写唯一标识,如hr_policy_2024、it_manual_v3; - 在
Retrieval节点中,务必勾选Use Collection Name,并下拉选择对应名称; - Flowise会自动为每个Collection创建独立Chroma子目录,物理隔离,互不影响。
6. 总结:你现在已经拥有了什么
回顾整个过程,你没有:
- 编译过一行C++(vLLM和Ollama的wheel包已预装);
- 修改过任何.env文件(所有路径、端口、模型名均固化在镜像中);
- 打开过终端以外的任何窗口(全部操作在浏览器完成);
- 为网络问题焦头烂额(所有服务走127.0.0.1,不碰DNS、不走代理)。
你已经拥有了:
- 一个随时可启停的本地AI工作流引擎;
- 一套可复用的RAG模板(上传PDF→自动建库→自然语言问答);
- 一条可扩展的技术栈:未来想换
deepseek-coder:6.7b?只需ollama pull后在下拉框选择;想加MySQL工具节点?Flowise Marketplace一键安装; - 一个真正属于你自己的、不依赖任何SaaS服务的AI能力基座。
这不是一个“能跑就行”的Demo,而是一套经过封闭环境验证、面向中小团队落地的最小可行方案。下一步,你可以把它嵌入企业微信机器人,可以导出API供ERP系统调用,也可以作为新员工培训的智能陪练——能力,已经握在你手中。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐

所有评论(0)