2026 年搭建私有 AI 知识库:Dify + Ollama 本地部署完整教程

2026 年,AI 大模型已经从”能用”进化到”好用”,但大多数开发者面临一个共同痛点:如何把大模型能力接入自己的知识库,同时保证数据不外泄?

为什么选择 Dify + Ollama?

在开源 AI 应用平台中,DifyOllama 的组合已经成为 2026 年最流行的本地部署方案之一。原因很简单:

  • Ollama:一行命令跑通 Llama 3、Qwen2.5、DeepSeek 等主流大模型,支持 GPU/CPU 推理,完全离线运行。
  • Dify:可视化编排 AI 工作流,内置 RAG(检索增强生成)、Agent、知识库管理,开箱即用。
  • 数据主权:所有模型推理和向量存储都在本地完成,企业敏感数据零泄露风险。
  • 成本可控:无需 API 调用费用,硬件投入一次性的,适合个人开发者和中小团队。

环境准备

部署前确认以下环境(本文以 Ubuntu 22.04 / Debian 12 为例):

组件最低要求推荐配置
CPU4 核8 核+
内存8 GB16 GB+
硬盘20 GB 可用空间50 GB+ SSD
GPU(可选)NVIDIA 显存 ≥ 6 GBRTX 4060 / A10G+
Docker≥ 24.0最新稳定版
Docker Compose≥ v2.20v2.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-InstructLlama3.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 为模型供应商

  1. 进入 设置 → 模型供应商 → Ollama
  2. 填入 Ollama 服务地址(Dify 和 Ollama 在同一台机器时用 Docker 内网地址):
    http://host.docker.internal:11434
    # 如果是 Linux 服务器,改为主机实际 IP:
    http://192.168.1.100:11434
  3. 点击保存后,Dify 会自动检测已安装的模型列表。

3.2 创建知识库并上传文档

这是整个流程的核心——把你的私有文档变成 AI 可以检索的知识库:

  1. 点击左侧导航 知识库 → 创建知识库
  2. 上传文档(支持 PDF / TXT / Markdown / Word / Excel)
  3. 选择分段模式:推荐”自动分段 + 重叠窗口”(overlap=50 tokens),避免语义断裂
  4. 选择索引方式:默认 Qdrant(轻量级向量数据库,已随 Dify 一起部署)
  5. 点击保存并处理,等待文档向量化完成

3.3 创建 RAG 聊天助手

有了知识库之后,创建一个基于 RAG 的聊天应用:

  1. 创建应用 → 聊天助手
  2. 编排界面中:
    • 选择模型为 Ollama → qwen2.5:7b-instruct
    • 添加上下文组件 → 知识库检索,关联上一步创建的知识库
    • 设置 Top K = 5(检索最相关的 5 个片段)
    • 设置 Score Threshold = 0.5(相关性阈值)
  3. 提示词编辑器中写入 System Prompt:
    你是一个专业的技术文档助手。
    请根据以下知识库内容回答用户的问题。
    如果知识库中没有相关信息,请明确告知用户,不要编造答案。
    
    {{context}}
  4. 点击右上角预览测试效果,然后发布

第四步: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 无法连接 OllamaDocker 网络隔离用 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 发布(把对话能力嵌入现有业务系统),或者接入更多模型做 模型路由(简单问题用小模型省资源,复杂问题用大模型保质量)。

如果你在部署过程中遇到问题,欢迎在评论区留言交流。祝搭建顺利!🚀

上一篇 Let's Encrypt 免费 SSL 证书自动续期:certbot 与宝塔实战
下一篇 Nginx 反向代理完整配置:负载均衡 + HTTPS + 缓存优化