ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ollama+Dify本地部署指南:从零搭建私有AI应用

Ollama+Dify本地部署指南:从零搭建私有AI应用 这两年大模型火起来之后本地部署成了很多开发者、小团队、甚至个人玩家里绕不开的话题。我自己从最早折腾显卡驱动、编译源码那套老路走过来到现在明显感觉工具链成熟太多了——最典型的代表就是Ollama和Dify这对组合。一个负责把大模型拉下来、跑起来一个负责把模型能力编排成真正能用的应用两者搭配起来基本就是本地私有化 AI 应用的“最低门槛”方案。不少朋友拿着这两个名字去搜教程结果要么是东一块西一块的碎片操作要么是照着做就踩坑。这篇文章我把从零开始装Ollama、部署Dify、再把两者对接起来的完整过程写清楚会重点说透每一步为什么要这么做以及我在实测中碰到的那些坑和解决办法。适合刚接触本地大模型的小白也给想搭个人知识库、私有 AI 应用的人一条可以直接照做的路线。1. 整体方案思路为什么是 Ollama Dify1.1 这套组合解决了什么问题先说个很多新手容易绕进去的误区装大模型不是只装一个软件的事。你要面对的是模型文件怎么下、显卡驱动怎么识别、API 怎么供出来、对话界面怎么搞、知识库怎么接——每一个环节都可能折腾人好几晚。Ollama 解决的是“模型从哪来、怎么跑”的问题。它把模型下载、运行环境、API 接口这几层封装好了一条命令就能把 Llama 3.1、Qwen 2.5 这类开源模型拉下来跑起来还自动处理了 GPU 加速和模型调度。说实话我第一次用 Ollama 拉模型的时候感觉就像当年从 npm 装一个库一样轻松完全不像以前那样要自己配 CUDA、写推理代码。Dify 解决的是“模型能做什么、怎么用”的问题。它是一个可视化的 LLM 应用开发平台简单说就是给你一个操作面板把模型接入、Prompt 编排、知识库管理、工作流设计这些事都变成了界面上的拖拖拽拽。相比直接写代码调模型 APIDify 的抽象程度高得多而且内置了 RAG 知识库、Agent、工作流这些企业级功能适合真正想做出一个“应用”的人。两者组合起来就形成了一条完整的本地 AI 应用流水线Ollama 负责模型供给Dify 负责应用组装。对比直接用云 API这套方案的优势是数据不出本机、没有按 token 计费的压力、可以无限次调试适合学习、原型验证、内部工具这类场景。1.2 选型前需要知道的几个关键点先说硬件门槛。Ollama 对配置的要求其实没有想象中那么高关键是显卡显存。我的实测经验是这样的模型规模显存需求能跑的显卡示例体验评价7B / 8B 量化版6GB 以上GTX 1660 Super、RTX 3050流畅日常对话完全够用14B 量化版12GB 以上RTX 3060 12G、RTX 4070质量明显提升速度尚可32B 量化版24GB 以上RTX 3090、4090接近 GPT-3.5 级别水平生成速度偏慢70B 量化版48GB 以上双卡或专业卡勉强可跑只推荐有条件的人没有独立显卡、只有核显的机器能不能跑也能但只能跑 3B、4B 这种小模型体验会比较痛苦。个人建议最少搞一张 6GB 显存的卡否则你会觉得 AI 对话“卡得像拨号上网”。再一个需要注意的点Ollama 支持 Windows、macOS、Linux 三大平台但 Dify 官方推荐用 Docker 部署这对 Windows 用户就要求先装好 Docker Desktop。很多人在这一步就被拦住了所以我下面把 Docker 的安装也当成一个重要环节来讲。macOS 用户可以放心Apple Silicon 上跑 Ollama 效果很好Dify 的 Docker 方案也一样适用。最后这套方案是面向“本地优先”的装好之后不依赖公网大模型 API。但要注意模型文件本身还是要从网上下载的这部分网络不好的话需要特殊处理我在后面“模型下载”小节里会说清楚。1.3 部署架构与组件依赖关系整套路部署完成后的架构用大白话描述是这样Ollama 服务跑在本地某个端口上默认 11434提供标准的 OpenAI 兼容接口。它负责加载模型、接收请求、生成回复。Dify 应用跑在 Docker 容器里包含前端界面、后端 API、数据库PostgreSQL、缓存Redis、向量数据库Weaviate 或 Qdrant等多个服务。对接方式在 Dify 的模型供应商页面里配置 Ollama 的地址比如http://host.docker.internal:11434Dify 就会把模型请求转发给 Ollama。这里 Dify 使用 Docker Compose 管理多个容器整个部署规模是比较大的这也是为什么我会建议先确保 Docker 没问题再碰 Dify。实操中这套架构的稳定性很好只要基础环境没问题跑几个月也不用管它。2. 基础环境准备Docker、Git、Python2.1 为什么必须先把基础三件套装好很多安装教程会默认你已经装好了 Docker、Git 和 Python但实际找上门来问的最多的恰恰是这些“基础环境”。DockerDify 的官方推荐方式就是 Docker Compose一条命令拉起所有服务装好 Docker 是 Dify 部署的前提。GitDify 源码从 GitHub 克隆而且后面升级要拉取更新没有 Git 寸步难行。Python虽然 Dify 本身跑在 Docker 里不需要你手动装 Python但之后你要写脚本调模型、处理数据、做知识库预处理Python 几乎是必需品。所以我强烈建议一步到位把这三个全部装好再往下走。别觉得“我只看 Dify 的界面不需要写代码”知识库的数据清洗、API 测试、自动化脚本早晚要用到 Python。2.2 Docker 安装的完整流程与配置Windows 用户首选 Docker Desktop。去 Docker 官网下载安装包双击安装就行。这里有三个容易踩的坑一定要开启 WSL 2。Docker Desktop 在 Windows 上依赖 WSL 2 后端安装前要先在 PowerShell管理员里执行wsl --install装完重启。如果没有 WSL 2Docker Desktop 会一直卡在启动界面或者在设置里报错说找不到 WSL 内核。BIOS 虚拟化必须开启。如果之前没开过虚拟化Docker 启动会报错。开机进 BIOS找到 Intel VT-x 或 AMD-V 相关的选项打开保存重启。不要勾选“用 Windows 容器模式”。Docker Desktop 默认是 Linux 容器模式这个别改。Dify 的镜像全是 Linux 架构的如果你切到 Windows 容器模式拉镜像会直接失败。安装完成后在命令行里执行docker --version docker compose version两条命令能正常输出版本号说明 Docker 基础环境没问题。另外建议在 Docker Desktop 的 Settings 里把资源调高一点尤其是内存我一般给它分配 8GB 以上。Dify 全家桶包含好几个容器默认配置下占用的内存接近 4GB如果只给 Docker 分 2GB 内存跑起来会频繁 OOM。Linux 用户Ubuntu 为例用 apt 装也行官方源里的版本通常偏旧更推荐用 Docker 官方脚本curl -fsSL https://get.docker.com | sh sudo systemctl enable --now dockermacOS 用户直接下载 Docker Desktop for Mac 装就行Apple Silicon 芯片的话选择对应架构的版本。2.3 Git 安装与国内加速配置Git 的安装本身没什么难度Windows 上官网下载安装包一路 Next 就行。Linux 里sudo apt install git一下。真正值得讲的是clone Dify 源码时的速度问题。Dify 的代码仓库在 GitHub 上国内直接git clone经常只有十几 KB/s或者直接超时。解决办法有几个配置 GitHub 镜像加速。用ghproxy这类代理前缀命令是这样的git clone https://ghproxy.com/https://github.com/langgenius/dify.git不过这类第三方代理服务经常变如果失效就换一个。我实测过有时候直接挂代理比任何镜像源都稳定。先下压缩包再解压。不依赖 Git直接到 GitHub 页面下载 zip 包。Dify 是开源项目Releases 页面有源码包下载后本地解压也行。缺点是没有.git目录之后不能直接git pull升级但作为首次部署足够了。码云 Gitee 的镜像。有些热心用户会同步 Dify 到 Gitee直接搜索“dify”就能找到从 Gitee clone 速度很快。注意不要随便信任不知名仓库的代码建议对比一下 commit 记录。另外手动装 Git 后一般要配置一下用户信息不然后面操作仓库会报警告git config --global user.name your_name git config --global user.email your_emailexample.com2.4 Anaconda / Miniconda 的安装与虚拟环境使用很多教程会直接推荐 Anaconda但我个人更推荐Miniconda——它只包含 conda 和 Python体积小很多需要什么包再单独装。Miniconda 安装很简单官网下载对应系统的安装包一路安装就行。装完验证一下conda --version之后创建虚拟环境是核心操作。为什么要用虚拟环境因为之后你安装的 Python 库之间可能会冲突——比如某个库要 Python 3.10另一个要 3.11用虚拟环境可以隔离互不干扰。# 创建环境 conda create -n dify python3.10 # 激活环境 conda activate dify # 退出环境 conda deactivate这个dify环境以后就专门用来跑 Dify 相关的 Python 脚本比如调用 API、写数据处理脚本。第一次用 conda 的话记得把国内镜像源配置上否则创建环境下载依赖也一样慢得让人崩溃conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes3. Ollama 本地部署与模型管理3.1 安装 Ollama 的两种主流方式Ollama 的安装如果你直接去官网下载速度通常会让你怀疑人生。我这里实测有效的两种方式方式一官网安装包 代理/镜像加速Windows 直接下载 OllamaSetup.exemacOS 下载 Ollama-darwin.zip。官网地址是 ollama.com下载慢的话就挂代理。装完后命令行执行ollama --version能输出版本号就说明装好了。方式二Linux 脚本一键装Linux 用户或 WSL 里的 Ubuntu用官方脚本curl -fsSL https://ollama.com/install.sh | sh装完记得确认服务是否运行sudo systemctl status ollama如果脚本下载失败这是因为 install.sh 本身也在国外服务器上处理方法跟前面一致——用镜像代理把脚本先拉下来再执行。我说的“国内镜像源”是指什么很多人知道 Ollama 这个词但卡在模型下载那一步。实际上有两个层面一是安装包下载慢二是模型文件下载慢。安装包可以通过代理解决模型文件则要配置 Ollama 使用国内镜像源。Ollama 下载模型时默认从registry.ollama.ai拉取这个地址在国内网络环境下连接很不稳定。解决办法是设置环境变量把模型仓库地址指到可用的镜像# Windows PowerShell 里临时设置 $env:OLLAMA_HOST 0.0.0.0 $env:OLLAMA_MODELS D:\ollama_models # 想装到 D 盘就这么干模型下载镜像的话可以搜索可用的镜像源比如设置OLLAMA_BASE_URL之类的参数Ollama 还支持通过环境变量指向兼容的模型仓库服务。我的经验是这一类网络问题用可靠的方式解决比绕来绕去更省时间所以不在此展开各种镜像站细节。你只记住一点下载太慢通常是网络原因不是你的操作问题别急着怀疑自己的配置。3.2 把模型安装目录改到非系统盘Windows 用户默认情况下Ollama 的模型会下载到C:\Users\你的用户名\.ollama\models目录。一个 7B 模型大概要占 4~5GB14B 模型要 9~10GB如果你的 C 盘比较紧张很快就满了。解决办法是设置环境变量OLLAMA_MODELS指向其他盘。具体操作右键“此电脑” → 属性 → 高级系统设置 → 环境变量在“用户变量”里新建变量名填OLLAMA_MODELS变量值填你要存放的路径比如D:\ollama_models保存后重启 Ollama 服务Windows 里直接退出托盘图标再重新打开注意这个环境变量必须在 Ollama 启动前设置好改了之后要完全退出 Ollama 再重新启动否则不生效。我遇到过好几个人改了路径但没重启然后跑来问为什么没变化。模型迁移的操作用一个命令就能完成。把默认目录里的模型移到新目录前先停掉 Ollama然后移动文件夹再设置好新环境变量启动Ollama 会自动去新路径找模型。如果你已经下好模型不想重新下载这个迁移方法最省事。3.3 下载模型与实际运行的完整演示模型下载命令格式ollama pull qwen2.5:7b这个名字拆开看qwen2.5是模型名称7b是参数规模标签。不带标签的话默认拉最新版建议明确指定标签避免版本漂移。实测一个真实场景。我拿一台 RTX 3060 12G 的机器拉取 Qwen 2.5 7B 模型来跑ollama pull qwen2.5:7b下载过程会显示进度条和速度。正常网速下 7B 模型大约 4.7GB等完成之后运行ollama run qwen2.5:7b进入交互界面后输入一句话试试效果。实测下来7B 模型日常问答、内容总结、代码生成都还行但复杂推理和长文本处理会比较吃力这是模型大小的客观限制不是 Ollama 的问题。列出本机已有的模型ollama list查看当前正在运行的模型ollama ps把模型从内存中卸载ollama stop qwen2.5:7b关于模型选择我个人的建议是优先考虑 Qwen 2.5 系列和 Llama 3.1 系列。Qwen 中文效果好Llama 英文和代码能力强。如果是苹果 M 系列芯片可以试试 Llama 3.1 8B 的量化版Metal GPU 加速跑起来速度相当不错。3.4 以 API 服务方式启动与验证Ollama 安装后默认就在后台跑着一个本地服务监听11434端口。直接验证一下# 查看服务是否正常 curl http://localhost:11434/api/tags返回一串模型列表 JSON说明 Ollama 的 API 服务正常。接下来要调模型用 OpenAI 兼容接口的方式curl http://localhost:11434/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen2.5:7b, messages: [{role: user, content: 你好介绍一下你自己}] }这里有个很多人都问过的为什么 Ollama 的接口写的是/v1/chat/completions和 OpenAI 一样因为 Ollama 兼容了 OpenAI 的 API 格式这样 Dify、Cherry Studio、ChatBox 这类工具都可以直接把它当作 OpenAI 来对接省去大量适配工作。这一步在后面配置 Dify 时会用到。Ollama 常用环境变量整理变量名作用我的建议OLLAMA_HOST监听地址默认127.0.0.1局域网要用改成0.0.0.0OLLAMA_MODELS模型存放路径空间不够时改到其他盘OLLAMA_NUM_PARALLEL并行请求数默认够用人多再调高OLLAMA_KEEP_ALIVE模型在内存驻留时间频繁调用调大省内存调小4. Dify 平台部署与配置4.1 下载 Dify 源码并准备配置文件Dify 官方建议用源码里的 Docker 编排文件来部署。具体步骤# 克隆仓库如果 GitHub 慢先看 2.3 节的加速方案 git clone https://github.com/langgenius/dify.git # 进入 docker 编排目录 cd dify/docker # 复制环境变量模板 cp .env.example .env这里要注意很多人在“复制 .env”这步就卡住了。在 Windows 的 cmd 或 PowerShell 里cp命令的行为和 Linux 有一点点区别如果你在 PowerShell 里直接敲cp .env.example .env是可以的。但如果你双击进入文件夹后右键打开 cmd要确保路径对——网上很多教程说“在 dify-main 的 docker 文件夹路径下右键打开 cmd”意思是先 cd 到这个目录再执行不是随便哪里都行。.env文件是 Dify 的全部配置文件里面默认参数已经能跑起来但我建议改两个地方SECRET_KEYDify 的加密密钥生产环境必须改为随机长字符串不然有安全风险。EXPOSE_NGINX_PORT默认是80如果你本机 80 端口被占用比如装了 IIS 或其他 Web 服务改成8080后续访问地址就是http://localhost:8080。4.2 Docker Compose 一键启动全家桶配置文件准备好了执行docker compose up -d这条命令会创建并启动 Dify 所需的全部容器包括nginx反向代理对外提供访问入口apiDify 的后端服务worker异步任务处理知识库索引、文件处理等web前端界面postgres元数据数据库redis缓存和消息队列weaviate向量数据库用于知识库语义检索ssrf_proxy防止服务端请求伪造的安全组件第一次执行需要拉取所有镜像总大小大概 5~6GB这个过程非常依赖网络。实测网速好的话 10 分钟以内网络不好的话能拉一个小时以上。国内用户如果卡在拉镜像这步我教你一个稳妥的方法配置 Docker 镜像加速器。具体做法是修改/etc/docker/daemon.jsonWindows 上在 Docker Desktop 的 Settings → Docker Engine 里改{ registry-mirrors: [ https://docker.m.daocloud.io, https://dockerproxy.com ] }改完保存重启 Docker Desktop再来执行docker compose up -d拉镜像的速度会明显提升。注意镜像加速器是第三方的如果某个地址失效了就换一个网上搜索“Docker 镜像加速器”会有很多可用列表。启动完成后用下面命令看容器状态docker compose ps所有容器状态都是Uprunning说明部署成功。如果某个容器状态是Restarting或Exited别慌先看日志再处理docker compose logs api4.3 浏览器访问与管理员账号初始化容器起来后浏览器访问http://localhost或你改过的端口比如http://localhost:8080。首次访问会进入初始化页面需要设置管理员邮箱和密码按照引导一步步完成设置管理员账号密码登录后台在“设置 → 模型供应商”里配置模型这里补充一个自动恭喜语如果你看到了“欢迎使用 Dify”的页面说明部署成功了可以开始配置模型。Dify 在线升级也是新手常问的。Dify 迭代很快社区版更新频繁升级方法很简单cd dify git pull cd docker docker compose down docker compose pull docker compose up -d先拉代码更新再重新拉取新镜像最后重启容器。数据库结构如果有变更Dify 启动时会有自动迁移的逻辑一般不用手动处理。但升级前还是建议备份一下数据库——宁可用不上不能需要时没有。4.4 用“一键安装脚本”部署 Dify 的替代方案如果你嫌 Docker Compose 部署 Dify 太繁琐想省点事其实可以直接用 Dify 官方提供的一键安装脚本curl -fsSL https://dify.ai/install.sh | sh这个脚本会自动做下面这些事检查 Dock
返回列表