2026 年,AI 大模型已经从”能用”进化到”好用”,但大多数开发者面临一个共同痛点:如何把大模型能力接入自己的知识库,同时保证数据不外泄?
为什么选择 Dify + Ollama?
在开源 AI 应用平台中,Dify 和 Ollama 的组合已经成为 2026 年最流行的本地部署方案之一。原因很简单:
- Ollama:一行命令跑通 Llama 3、Qwen2.5、DeepSeek 等主流大模型,支持 GPU/CPU 推理,完全离线运行。
- Dify:可视化编排 AI 工作流,内置 RAG(检索增强生成)、Agent、知识库管理,开箱即用。
- 数据主权:所有模型推理和向量存储都在本地完成,企业敏感数据零泄露风险。
- 成本可控:无需 API 调用费用,硬件投入一次性的,适合个人开发者和中小团队。
环境准备
部署前确认以下环境(本文以 Ubuntu 22.04 / Debian 12 为例):
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4 核 | 8 核+ |
| 内存 | 8 GB | 16 GB+ |
| 硬盘 | 20 GB 可用空间 | 50 GB+ SSD |
| GPU(可选) | NVIDIA 显存 ≥ 6 GB | RTX 4060 / A10G+ |
| Docker | ≥ 24.0 | 最新稳定版 |
| Docker Compose | ≥ v2.20 | v2.30+ |
第一步:安装 Ollama 并拉取模型
Ollama 的安装非常简洁,官方提供一键脚本:
curl -fsSL https://ollama.com/install.sh | sh
安装完成后,拉取一个适合知识库问答的模型。推荐 Qwen2.5-7B-Instruct(阿里通义千问),中文能力出色且显存占用合理:
# 拉取 Qwen2.5-7B-Instruct(约 4.7 GB)
ollama pull qwen2.5:7b-instruct
# 验证模型是否就绪
ollama list
如果你有 NVIDIA GPU(显存 ≥ 8GB),可以尝试更大的 Qwen2.5-14B-Instruct 或 Llama3.1-8B,效果会明显提升。没有 GPU 也没关系,Ollama 会自动使用 CPU 推理,只是速度慢一些。
第二步:用 Docker Compose 部署 Dify
Dify 官方提供了完整的 Docker Compose 配置,我们直接克隆仓库并启动:
# 克隆 Dify 源码(或下载 docker 部署包)
git clone https://github.com/langgenius/dify.git --depth 1
cd dify/docker
# 复制环境变量模板
cp .env.example .env
# 启动所有服务(含 PostgreSQL + Redis + 向量数据库 + Dify API + Web UI)
docker compose up -d
首次启动需要拉取镜像,大约 5–10 分钟(取决于网速)。启动后检查容器状态:
docker compose ps
# 应该看到 api/worker/web/nginx/postgres/redis/weaviate/qdrant 等容器全部 Up
第三步:配置 Dify 连接 Ollama 模型
浏览器访问 http://你的服务器IP,首次进入会提示注册管理员账号。注册完成后:
3.1 添加 Ollama 为模型供应商
- 进入 设置 → 模型供应商 → Ollama
- 填入 Ollama 服务地址(Dify 和 Ollama 在同一台机器时用 Docker 内网地址):
http://host.docker.internal:11434 # 如果是 Linux 服务器,改为主机实际 IP: http://192.168.1.100:11434 - 点击保存后,Dify 会自动检测已安装的模型列表。
3.2 创建知识库并上传文档
这是整个流程的核心——把你的私有文档变成 AI 可以检索的知识库:
- 点击左侧导航 知识库 → 创建知识库
- 上传文档(支持 PDF / TXT / Markdown / Word / Excel)
- 选择分段模式:推荐”自动分段 + 重叠窗口”(overlap=50 tokens),避免语义断裂
- 选择索引方式:默认 Qdrant(轻量级向量数据库,已随 Dify 一起部署)
- 点击保存并处理,等待文档向量化完成
3.3 创建 RAG 聊天助手
有了知识库之后,创建一个基于 RAG 的聊天应用:
- 创建应用 → 聊天助手
- 在编排界面中:
- 选择模型为
Ollama → qwen2.5:7b-instruct - 添加上下文组件 → 知识库检索,关联上一步创建的知识库
- 设置 Top K = 5(检索最相关的 5 个片段)
- 设置 Score Threshold = 0.5(相关性阈值)
- 选择模型为
- 在提示词编辑器中写入 System Prompt:
你是一个专业的技术文档助手。 请根据以下知识库内容回答用户的问题。 如果知识库中没有相关信息,请明确告知用户,不要编造答案。 {{context}} - 点击右上角预览测试效果,然后发布。
第四步:Nginx 反向代理 + HTTPS(生产必做)
如果要让服务从公网可访问,必须加 Nginx 反向代理和 SSL 证书。之前写过 Let’s Encrypt 免费证书自动续期教程,这里给出精简版 Nginx 配置:
server {
listen 443 ssl http2;
server_name ai.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/ai.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ai.yourdomain.com/privkey.pem;
# Dify 前端
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Dify API(可选独立子路径)
location /api {
proxy_pass http://127.0.0.1:5001;
proxy_set_header Host $host;
proxy_read_timeout 120s;
}
}
server {
listen 80;
server_name ai.yourdomain.com;
return 301 https://$host$request_uri;
}
第五步:性能优化与常见问题
5.1 加速 Ollama 推理
# 启用 GPU 加速(NVIDIA)
ollama run qwen2.5:7b-instruct
# 查看当前使用的推理设备
ps aux | grep ollama
# 如果看到 llama-cli + cuda 字样,说明 GPU 已生效
5.2 Docker 容器资源限制
在 docker-compose.yaml 中给 API 和 Worker 容器设置资源上限,防止 OOM:
services:
api:
deploy:
resources:
limits:
memory: 4G
cpus: '2.0'
worker:
deploy:
resources:
limits:
memory: 4G
cpus: '2.0'
5.3 常见问题排查
| 现象 | 原因 | 解决方案 |
|---|---|---|
| Dify 无法连接 Ollama | Docker 网络隔离 | 用 host.docker.internal 或主机 IP |
| 回答质量差 | 模型太小 / 分段不合理 | 换 14B+ 模型;调整分段策略 |
| 检索不到内容 | Score Threshold 过高 | 降到 0.3~0.5 |
| 容器频繁重启 | 内存不足 | 增加 swap 或升级内存 |
| 中文乱码 | 模型未选 Instruct 版本 | 确保模型名带 -instruct 后缀 |
总结与延伸
通过以上五步,你已经在本地搭建了一套完整的 私有 AI 知识库系统:
- Ollama 负责模型推理(离线、免费、隐私安全)
- Dify 负责应用编排(RAG 检索、工作流、API 对接)
- Nginx + SSL 负责公网安全访问
这套方案的扩展性很强——你可以继续探索 Dify 的 Agent 工作流(让 AI 自动调用外部工具)、API 发布(把对话能力嵌入现有业务系统),或者接入更多模型做 模型路由(简单问题用小模型省资源,复杂问题用大模型保质量)。
如果你在部署过程中遇到问题,欢迎在评论区留言交流。祝搭建顺利!🚀




