Dify 本地部署学习笔记:从 Docker 启动到知识库智能客服搭建

。
一、为什么要本地部署 Dify
Dify 是一个开源的 LLM 应用开发平台,可以用来快速搭建聊天助手、知识库问答、智能客服、内容生成工具和自动化工作流。
使用云端 Dify 上手最快,但本地部署有几个明显优势:
- 数据和配置都在自己电脑或服务器上,可控性更高。
- 适合学习 Dify 的真实部署结构,比如 API、Worker、Web、数据库、向量库等组件如何协作。
- 可以接入本地大模型,例如 Ollama 跑起来的模型。
- 方便后续研究企业内网知识库、私有化智能客服等场景。
不过,如果电脑配置一般,只是想先做 AI 应用原型,完全可以先用云端 Dify + 云端模型服务。Ollama 和本地模型不是必选项。
二、准备环境
本地部署 Dify 前,建议先准备好这些东西:
| 环境 | 作用 |
|---|---|
| Windows / macOS / Linux | 本地运行环境 |
| Docker Desktop | 用 Docker Compose 启动 Dify 相关服务 |
| Git 或浏览器下载 | 获取 Dify 源码包 |
| 浏览器 | 访问本地 Dify 控制台 |
| 可选:Ollama | 在本机运行本地大模型 |
课程中使用的是 Dify 1.13.0 版本,下载地址是:
https://github.com/langgenius/dify/tags
下载完成后,把压缩包解压到一个空间充足的位置。Windows 用户如果 C 盘空间紧张,建议直接放到 D 盘,例如:
D:\apps\dify-1.13.0
三、用 Docker Compose 部署 Dify
Dify 官方项目里已经准备好了 Docker Compose 配置,我们主要在 docker 目录里操作。
进入目录:
cd D:\apps\dify-1.13.0\docker
首次部署前,需要把环境变量模板复制成真实配置文件:
Copy-Item .env.example .env
然后启动服务:
docker compose up -d
启动后可以查看容器状态:
docker compose ps
如果服务正常,浏览器访问:
http://localhost
第一次打开时,Dify 会要求初始化管理员账号。完成后就可以进入控制台创建应用、配置模型供应商和知识库。
四、部署时我认为最重要的几个检查点
1. Docker Desktop 必须先启动
如果 Docker Desktop 没启动,执行 docker compose up -d 很容易失败。先确认 Docker 能正常响应:
docker version
2. C 盘空间不足会导致镜像拉取失败
Windows 上 Docker Desktop 默认会把 WSL / Docker 数据放在 C 盘。如果 C 盘只剩几百 MB,拉镜像时可能出现中断、超时或 unexpected EOF 之类的问题。
优化建议:
- Dify 项目目录放到 D 盘。
- Docker Desktop 的数据目录也尽量迁移到 D 盘。
- 清理 Windows 临时文件、Docker 缓存和下载缓存。
我自己的理解是:本地部署 AI 工具时,磁盘空间比想象中更关键。Dify 本身不只是一个网页,它会启动数据库、Redis、向量库、Worker、插件守护进程等多个容器。
3. .env 文件不要漏
很多人第一次部署失败,不是 Docker 命令错了,而是忘记创建 .env:
Copy-Item .env.example .env
.env 是 Dify 的核心配置文件,里面包含服务端口、数据库配置、密钥、插件配置等。
五、接入 Ollama 本地大模型
Ollama 的作用是让电脑本地运行大模型,然后 Dify 通过接口调用它。
典型流程是:
- 安装 Ollama。
- 下载模型。
- 确认 Ollama 服务运行在
11434端口。 - 在 Dify 里添加 Ollama 模型供应商。
- 填写 Dify 容器访问宿主机 Ollama 的地址。
在 Docker 部署的 Dify 里,访问宿主机服务通常不要写 localhost,而是写:
http://host.docker.internal:11434
原因是:Dify 运行在 Docker 容器里,容器里的 localhost 指的是容器自己,不是 Windows 宿主机。
如果电脑配置不高,我不建议一开始就折腾 Ollama。本地模型下载体积大、吃内存、响应速度也可能慢。更稳的学习路线是:
- 先用云端模型供应商跑通 Dify。
- 再学习知识库和应用编排。
- 最后再尝试 Ollama。
六、Dify 知识库核心流程
知识库是 Dify 里非常重要的能力。它可以把文档、网页、文本资料导入后,让应用在回答问题时检索相关内容,再结合大模型生成答案。
基本流程如下:
创建知识库 -> 导入数据 -> 分段处理 -> 建立索引 -> 配置检索方式 -> 在应用中调用知识库
1. 创建知识库
进入 Dify 顶部导航的“知识库”,点击“创建知识库”。
数据导入一般有两类:
- 上传本地文件:适合 PDF、Word、Markdown、TXT 等资料。
- 导入在线数据:适合网页、在线文档等资料。
如果使用 Dify 云服务,上传容量和批量能力通常会受到订阅计划影响。本地部署则主要受本机资源限制。
2. 分段设置
导入知识库时,Dify 会把长文档切成多个小片段。分段质量会直接影响问答效果。
常见模式可以这样理解:
| 分段模式 | 适合场景 |
|---|---|
| 通用模式 | 普通文档、教程、说明书 |
| Q&A 模式 | 已经整理成问答形式的材料 |
| 父子分段模式 | 长文档、层级明显的资料,比如手册、制度、课程文档 |
我的建议:
- 普通学习资料先用通用模式。
- FAQ、客服话术用 Q&A 模式。
- 长文档或结构化资料优先尝试父子分段模式。
3. 索引方法
Dify 里常见索引方式可以粗略分为“高质量”和“经济”。
高质量索引效果通常更好,但可能需要 Embedding 模型,成本和资源占用更高。经济索引更轻量,适合快速测试。
如果只是验证流程,可以先用经济模式;如果要做真正可用的知识库问答,建议使用高质量索引。
4. 检索方式
知识库检索常见有三种:
| 检索方式 | 特点 |
|---|---|
| 向量检索 | 擅长语义相似问题,比如换一种说法也能匹配 |
| 全文检索 | 擅长关键词精确匹配 |
| 混合检索 | 同时结合语义和关键词,实际项目中更常用 |
实际做智能客服时,我更倾向于优先使用混合检索。因为用户提问既可能是自然语言,也可能包含产品名、错误码、订单字段这类精确关键词。
5. topK、score 和 rerank
知识库问答效果不好时,不要只怪模型,很多时候是检索参数没调好。
topK:返回多少条候选片段。太小可能漏内容,太大可能带入噪音。score:相似度阈值。太高可能搜不到,太低可能搜出无关内容。rerank:对初步检索结果重新排序,让最相关的内容排在前面。
调参建议:
- 先固定模型和知识库内容。
- 用 10 到 20 个真实问题测试。
- 观察 Dify 返回的引用片段是否准确。
- 再逐步调整 topK、score 和 rerank。
七、用 Dify 搭建智能客服
知识库准备好后,就可以用 Dify 搭建一个简单的智能客服。
推荐流程:
- 新建应用,选择聊天助手或 Chatflow。
- 绑定前面创建好的知识库。
- 配置模型供应商。
- 编写系统提示词,限定回答范围。
- 测试常见问题。
- 根据回答效果优化知识库分段和检索参数。
一个基础客服提示词可以这样写:
你是一个专业、耐心的智能客服。
请优先根据知识库内容回答用户问题。
如果知识库中没有相关信息,请明确说明“当前资料中没有找到答案”,不要编造。
回答要简洁、准确,并尽量给出可执行步骤。
这里有一个关键点:智能客服不是“模型越强就越好”,而是“知识库内容、检索质量、提示词约束、模型能力”共同决定效果。
八、我对这节课的优化理解
课程的主线是:
本地部署 Dify -> 接入 Ollama -> 创建知识库 -> 优化检索 -> 搭建智能客服
我把它理解成三层能力:
第一层:平台跑起来
先把 Dify 用 Docker Compose 跑起来,确认能访问 http://localhost。这一层解决的是部署问题。
第二层:模型接进来
可以接云端模型,也可以接 Ollama 本地模型。电脑配置一般时,优先用云端模型,避免把学习卡在本地模型性能上。
第三层:让应用真正可用
知识库、分段、索引、检索参数、提示词,这些才决定最终应用是否能回答得准。
所以我建议学习顺序是:
先跑通 Dify -> 再接一个稳定模型 -> 再做知识库 -> 最后尝试本地 Ollama
九、常见问题排查
1. 访问不了 localhost
检查容器是否启动:
docker compose ps
如果容器没有全部正常运行,查看日志:
docker compose logs --tail=100
2. Docker 拉镜像失败
优先检查:
- 网络是否稳定。
- Docker Desktop 是否正常运行。
- C 盘或 Docker 数据盘是否还有足够空间。
- 是否需要配置镜像加速。
3. Dify 连接 Ollama 失败
如果 Dify 是 Docker 部署,Ollama 在宿主机运行,地址建议使用:
http://host.docker.internal:11434
不要直接写:
http://localhost:11434
4. 知识库回答不准
可以从这几个方向排查:
- 文档内容是否干净,有没有大量无关内容。
- 分段是否过长或过短。
- 是否选择了合适的索引方式。
- 检索方式是否适合当前问题。
- topK 和 score 是否过严或过松。
- 是否启用了 rerank。
- 提示词是否要求模型基于知识库回答。
十、总结
这表面上是在讲 Dify 本地部署,但真正有价值的是把 AI 应用开发的完整链路串起来:
部署平台 -> 接入模型 -> 构建知识库 -> 调整检索 -> 封装应用
本地部署 Dify 能帮助我们理解 AI 应用背后的工程结构;知识库和检索优化则决定应用能不能从“能聊天”变成“能解决问题”。
如果只是入门,建议先不要追求一步到位。本地 Dify 跑通后,先用云端模型完成一个知识库问答应用,再根据电脑配置决定是否继续上 Ollama 本地模型。这样学习曲线会平滑很多,也更容易看到成果。
更多推荐

所有评论(0)