基于 Dify 与 Ollama 部署本地大模型知识库实战指南
前言
在数据隐私日益重要的今天,将大语言模型(LLM)私有化部署成为许多企业和开发者的首选。本文承接上篇关于 Ollama + Docker 的部署内容,详细介绍如何使用开源应用编排平台 Dify 结合本地运行的 Ollama 模型,构建一个完全属于你自己的本地大模型知识库系统。
Dify 是一个开源的大模型应用开发平台,支持快速搭建 RAG(检索增强生成)应用、Agent 工作流等。配合 Ollama 提供的本地推理能力,我们可以实现零成本、高隐私的 AI 应用落地。
一、环境准备
1. 系统要求
- 操作系统:Linux (Ubuntu 20.04+), macOS, Windows 10/11
- 硬件配置:建议至少 8GB 内存,若运行较大参数模型(如 Llama3-70B),建议 32GB+ 内存及独立显卡
- 软件依赖:
- Docker Engine 20.10+
- Docker Compose v2.0+
- Git
2. 前置检查
确保 Docker 服务正常运行,并检查端口占用情况(默认使用 8080 端口):
docker --version
docker compose version
netstat -tulpn | grep 8080
二、Dify 部署步骤
1. 获取 Dify 源码
从 GitHub 官方仓库下载最新稳定版压缩包:
git clone https://github.com/langgenius/dify.git
cd dify/docker
2. 配置文件初始化
进入 docker 目录后,复制环境变量模板文件:
cp .env.example .env
编辑 .env 文件,修改关键配置项:
APP_SECRET: 设置一个强随机字符串,用于加密敏感信息DB_PASSWORD: 数据库密码,建议包含大小写字母和数字PORT: 如需修改访问端口(默认 8080)
注意:生产环境请务必修改默认密码,避免安全风险。
3. 启动服务
执行以下命令拉起所有容器:
docker compose up -d
启动完成后,可通过以下命令查看日志确认状态:
docker compose logs -f
4. 初始化安装
浏览器访问 http://localhost:8080/install,按照向导完成管理员账户注册。首次登录需设置组织名称及基础信息。
三、接入 Ollama 本地模型
1. 配置模型连接
在 Dify 管理后台,依次点击 设置 -> 模型供应商 -> Ollama。
- 模型名称:填写已在 Ollama 中拉取的模型名(如
llama3,qwen) - Base URL:填写
http://host.docker.internal:11434- 说明:该地址允许 Docker 容器内的服务访问宿主机上的 Ollama 服务
- API Key:留空(Ollama 默认无需密钥)
保存后,在'模型列表'中刷新,应能看到已注册的模型。
2. 验证连通性
创建一个测试应用,选择刚才配置的 Ollama 模型,输入简单问题(如'你好'),确认能正常返回响应。
四、构建知识库(RAG)
1. 创建知识库
在左侧菜单点击 知识库 -> 创建知识库。
- 名称:自定义(如'公司技术文档库')
- 索引模式:推荐选择'高质量'或'经济',根据数据量调整
- 分段设置:
- 分段长度:500-1000 字符(视文档类型调整)
- 重叠长度:100-200 字符(保证上下文连贯)
- 预分块策略:自动分割或按标题分割
2. 上传数据
支持格式包括 PDF、Word、TXT、Markdown 等。
- 拖拽文件至上传区域
- 等待系统自动清洗、切片并向量化
- 可在'片段管理'中手动调整切片内容,优化检索效果
3. 检索配置
在应用编排界面,找到 上下文 模块:
- Top K:设定检索返回的最相关片段数量(通常 3-5)
- 相似度阈值:设定匹配度下限(0.6-0.8),过滤低相关性结果
- 重排序:开启后可进一步提升检索精度
五、提示词工程优化
良好的 Prompt 是提升回答质量的关键。在应用编排的 提示词 区域进行配置:
1. 系统提示词(System Prompt)
定义 AI 的角色、任务边界及输出规范。
你是一名专业的技术助手,请基于提供的知识库内容回答问题。如果知识库中没有相关信息,请直接告知用户无法找到答案,不要编造事实。回答时请保持简洁专业,引用来源时标注文件名。
2. 变量与动态内容
支持插入用户输入变量,例如:
{{query}}: 用户提问{{context}}: 检索到的上下文
3. 调试与迭代
利用 Dify 的 预览 功能,输入不同场景的问题,观察模型回答。根据反馈调整提示词逻辑或知识库切片粒度。
六、API 集成示例
Dify 提供标准 API 接口,便于集成到自有系统中。以下是 Python 调用示例:
import requests
API_KEY = "your-api-key"
BASE_URL = "http://localhost:8080/api/v1/workflows/run"
payload = {
"inputs": {},
"query": "如何配置 Ollama 连接?",
"response_mode": "blocking"
}
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
response = requests.post(BASE_URL, json=payload, headers=headers)
print(response.json())
七、常见问题排查
1. 容器启动失败
- 检查
.env文件中路径是否正确 - 确认端口未被占用
- 查看
docker compose logs获取具体错误堆栈
2. Ollama 连接超时
- 确认 Ollama 服务已在宿主机运行 (
ollama serve) - 检查防火墙是否放行 11434 端口
- 尝试在容器内 ping 宿主机 IP
3. 知识库检索不准
- 增加切片重叠率
- 优化原始文档结构(去除乱码、多余空格)
- 调整 Top K 参数
八、总结
通过 Dify 与 Ollama 的组合,我们成功构建了一个低成本、高可控的本地大模型知识库系统。该方案不仅保护了数据隐私,还避免了云端 API 的费用支出。后续可根据业务需求扩展 Agent 工作流、多模态支持等功能。建议定期备份数据库文件,并关注 Dify 官方更新以获取新功能支持。
参考资料:


