Dify 本地部署 + Ollama 大模型配置全攻略:手把手教你搭建私有 AI 助手

为什么你需要自己搭一套 Dify + Ollama?

最近很多朋友问我:“想用 AI 但又不想把数据传到云端,有没有既免费又安全的方案?”答案就是 Dify + Ollama 这个黄金组合。

Dify 是一个开源的 LLM 应用开发平台,你可以把它理解成“AI 应用的可视化搭积木工具”。而 Ollama 则是一个能在本地轻松运行大模型的工具,支持 Llama、Mistral、Qwen 等主流模型。把两者结合起来,你就能在本地拥有一套完全可控的 AI 助手系统——聊天、写文档、做翻译、分析数据,甚至搭建复杂的 AI 工作流,都不在话下。

今天我们就从零开始,把 Dify 和 Ollama 完整配置起来。这篇文章会尽量避开那些“你肯定懂”的假设,每一步都讲清楚为什么这么做。

第一步:准备工作(硬件和软件环境)

硬件要求

跑大模型对硬件有一定要求,但比你想象的要低:

  • 最低配置:8GB 内存 + 4核 CPU(可以跑 7B 以下的小模型,速度尚可)
  • 推荐配置:16GB 以上内存 + NVIDIA 显卡(4GB 显存起步,用 Llama 3 8B 或 Qwen 7B 体验流畅)
  • 纯 CPU 也能跑:Ollama 支持 CPU 推理,只是速度会慢一些,日常对话完全可用

软件准备

我们需要安装以下工具,笔者建议全部使用 Docker 部署,省去很多环境依赖的麻烦:

  • Docker & Docker Compose(Dify 官方推荐方式)
  • Ollama(直接安装在宿主机上,或者也用 Docker 部署)
  • 一台能联网的电脑(Linux / macOS / Windows 都可以)

如果你还没有 Docker,可以先去官网下载安装。Windows 用户建议安装 WSL2 后再装 Docker Desktop,体验最稳定。

第二步:安装并启动 Ollama

Ollama 的安装极其简单,我们直接按官方方式操作:

# Linux / macOS
curl -fsSL https://ollama.com/install.sh | sh

# Windows 用户直接去 ollama.com 下载安装包双击安装

安装完成后,拉取一个模型试试。笔者推荐先用 Qwen2.5:7b(通义千问 7B 版本),它在中文场景下表现非常出色:

ollama pull qwen2.5:7b

看到 success 提示后,可以测试一下模型是否正常工作:

ollama run qwen2.5:7b "你好,请介绍一下你自己"

模型能正常回复,说明 Ollama 已经就绪。此时 Ollama 默认监听在 localhost:11434 端口。

💡 重要提示:如果你想让其他机器(比如 Docker 容器)也能访问 Ollama,需要修改环境变量。编辑 Ollama 的 systemd 服务文件或直接设置:

export OLLAMA_HOST=0.0.0.0:11434

然后重启 Ollama 服务。这样 Dify 的容器才能通过网络访问到本地的 Ollama。

第三步:使用 Docker Compose 部署 Dify

Dify 官方提供了完整的 Docker Compose 配置,我们直接拉取最新版本:

# 克隆 Dify 仓库
git clone https://github.com/langgenius/dify.git

# 进入 Docker 配置目录
cd dify/docker

# 复制环境变量配置文件
cp .env.example .env

# 启动所有服务(后台运行)
docker compose up -d

第一次启动会下载多个镜像(包括 PostgreSQL、Redis、Weaviate 等),根据网速需要几分钟到十几分钟。启动完成后,浏览器访问 http://localhost:3000,你应该能看到 Dify 的初始化页面。

初始化管理员账号

首次访问会要求设置管理员邮箱和密码,按提示完成即可。这一步很简单,跟着界面走就行。

第四步:在 Dify 中配置 Ollama 模型

这是整个流程中最关键的一步,很多朋友在这里卡住。请按照以下步骤操作:

4.1 进入模型供应商设置

登录 Dify 后台后,点击右上角的头像 → 设置模型供应商。在列表中找到 Ollama,点击“添加模型”。

4.2 填写配置参数

你会看到这样一个配置表单,请按以下内容填写:

参数 填写内容 说明
模型名称 qwen2.5:7b 必须和 ollama list 中显示的名称完全一致
基础 URL http://host.docker.internal:11434 关键!Docker 容器内访问宿主机要用这个地址(Windows/macOS 适用)
模型类型 LLM 通用对话模型选这个
上下文长度 8192 根据模型实际支持的最大上下文设置
⚠️ 常见错误:很多人在“基础 URL”填写 http://localhost:11434,这是错误的!因为 Dify 运行在 Docker 容器里,容器内的 localhost 指向的是容器自己,不是你的宿主机。正确做法:

  • Windows/macOS:使用 http://host.docker.internal:11434
  • Linux:使用 http://172.17.0.1:11434(Docker 默认网关 IP)

4.3 测试连接

填写完毕后,点击“保存”按钮。如果配置正确,Dify 会立刻显示“连接成功”。然后你就能在 Dify 的聊天应用、工作流等模块中选择 qwen2.5:7b 作为默认模型了。

第五步:创建你的第一个 AI 应用

配置好模型后,我们来创建一个简单的对话应用测试一下:

  1. 在 Dify 左侧菜单点击 工作室创建应用
  2. 选择 对话型应用,输入应用名称(比如“本地助手”)
  3. 在编排页面,将“模型”选择为刚才配置的 qwen2.5:7b
  4. 可以设置一个系统提示词,比如:“你是一个智能助手,请用中文回答用户的问题。”
  5. 点击右上角 发布,然后点 运行 测试对话

输入“你好,请介绍一下你自己”,看到模型给出正常回复,说明整个链路已经成功打通!

进阶技巧:让组合更好用

多模型切换

你可以在 Ollama 中拉取多个模型(比如 llama3.1mistralcodellama),然后在 Dify 中分别添加为不同的模型供应商实例。这样在创建应用时,可以根据任务类型灵活切换模型:写代码用 CodeLlama,日常聊天用 Qwen,需要英文能力时用 Llama 3。

使用 Embedding 模型做知识库

Dify 支持知识库功能,需要 Embedding 模型来向量化文档。Ollama 也支持 Embedding 模型:

ollama pull nomic-embed-text

然后在 Dify 的模型供应商中再添加一个 Ollama 实例,模型类型选择 Embedding,模型名称填 nomic-embed-text。这样你就可以上传文档,让 Dify 自动创建基于本地大模型的知识库问答系统了。

部署到公网:让你的 AI 服务可访问

如果你想让团队或朋友也能使用这个 AI 助手,需要把 Dify 部署到公网服务器上。这里笔者强烈建议:购买一台靠谱的云服务器,而不是用内网穿透方案。云服务器不仅稳定,还能保证数据安全。

选择服务器时注意:

  • 内存至少 16GB(推荐 32GB)
  • 如果使用 GPU 加速,选择带 NVIDIA 显卡的实例(如 A10、V100 等)
  • 硬盘建议 100GB 以上(模型文件较大)

部署步骤和本地完全一样,只需把 Docker Compose 文件和 Ollama 安装在云服务器上即可。别忘了配置防火墙,开放 3000 端口(Dify Web 界面)和 11434 端口(Ollama API)。

关于域名:如果你打算长期使用,建议注册一个正式域名并配置 SSL 证书。正规域名不仅看起来专业,还能避免被浏览器拦截。各大云服务商都有首年优惠的域名,几十块钱就能搞定。

常见问题排查

Q:Dify 提示“模型连接失败”

检查以下几点:

  • Ollama 是否在运行?执行 ollama list 确认
  • Ollama 是否监听在 0.0.0.0?执行 netstat -an | grep 11434 查看
  • Dify 容器能否访问宿主机?在 Dify 容器内执行 curl http://host.docker.internal:11434 测试

Q:模型回复很慢

可能是模型参数过大,或者没用到 GPU。检查 Ollama 日志:ollama logs,看看是否识别到了 GPU。如果没有,检查驱动安装和 nvidia-smi 输出。

Q:中文回复质量差

建议使用专门针对中文优化的模型,如 Qwen 系列、Yi 系列。Llama 3 虽然支持中文,但效果不如原生中文模型。

写在最后

Dify + Ollama 的组合,让你真正拥有了一个私有、免费、可定制的 AI 助手。无论是个人学习、团队协作还是企业内部使用,这套方案都能满足需求。从今天开始,你的数据安全由你自己掌控。

希望这篇教程能帮你顺利搭建起来。如果在配置过程中遇到任何问题,欢迎在评论区留言交流,我们会尽力协助解决。动手试试吧,你会发现本地 AI 远比想象中强大。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部