资讯详情

DeepSeek+Dify本地知识库部署实战:Ollama与Docker全流程

📅 2026/10/25 14:01:01 | 华诺云谱 👁 阅读
DeepSeek+Dify本地知识库部署实战:Ollama与Docker全流程
简介这份PDF资料面向希望零基础搭建本地AI知识库的技术爱好者与开发者围绕DeepSeek大模型与Dify开源平台给出从系统环境变量配置、Ollama安装、模型拉取到Docker与Dify部署的完整落地路径帮助读者在个人电脑上跑通一套可对话、可检索的私有知识库无需深厚运维背景也能按图操作。资源包共1个PDF文件约1.47MB以图文步骤形式串联各环节涵盖环境变量设置、deepseek-r1与bge-m3模型拉取、Docker镜像配置及Dify模型供应商接入等关键节点便于对照实操与排错。目前已有2345人学习适合想低成本体验大模型本地化、构建个人或团队知识库的读者参考。1. 本地知识库这套组合拳为什么值得你花一个下午跑通手里有一堆产品手册、内部规范、项目复盘文档想用大模型直接问结果要么把文件传到别人的服务上心里发毛要么模型答得云山雾罩、张口就来。DeepSeekDify 这套本地部署知识库方案解决的正是这个矛盾模型跑在自己机器上文档不出内网检索增强RAG把回答锚定在你上传的资料里。整条链路是 Ollama 管模型、Docker 管容器、Dify 管应用和知识库编排Windows 11 上一路点下来就能跑通。适合谁手里有敏感文档不能外传的从业者、想低成本验证 RAG 效果的技术负责人以及被云端 API 账单劝退、想先把流程跑顺再谈扩容的开发者。这篇按我实际拆装的顺序写参数、命令、翻车点都给到照着抄能复现。2. 环境与模型先行Ollama 装好、DeepSeek 拉下来本地知识库的第一块地基不是 Dify而是模型运行时。很多人一上来就折腾 Dify 的 docker compose结果容器起来了、模型连不上回头排查半天血泪经验就是顺序别乱先把 Ollama 跑通、模型能对话再动容器编排。2.1 先改 OLLAMA_MODELS别让模型默认塞进 C 盘Ollama 默认把模型权重放在系统盘用户目录下一个 8B 模型加一个 embedding 模型轻松吃掉十几 GBC 盘红了再迁移很麻烦。装之前先把存储路径定好这是最省后悔药的一步。Windows 11 下操作右击「此电脑」→「属性」→「高级系统设置」→「环境变量」→ 在「系统变量」里新建变量名填OLLAMA_MODELS变量值指向你规划好的目录比如E:\Ai\Ollama3。目录提前建好别指望它自动创建。确定后重启系统让变量对后续启动的进程生效。# 验证环境变量是否生效新开一个 cmd 窗口执行 echo %OLLAMA_MODELS% # 期望输出E:\Ai\Ollama3这里的关键是「系统变量」而不是「用户变量」因为 Ollama 的服务进程可能以不同上下文启动系统级变量覆盖更稳。变量值只写目录、不带引号、结尾不加反斜杠这三点踩过就知道多一个字符都可能让路径解析失败。重启不是玄学是让已登录会话重新加载环境块省这一步后面ollama list看不到模型别怪工具。2.2 装 Ollama 并拉取 deepseek-r1 与 bge-m3到 Ollama 官网下载OllamaSetup.exe双击后点 Install安装程序会自动完成装完托盘里会有个常驻进程。接着开命令行拉模型模型选型直接决定你这台机器能不能跑得动。# 拉取对话模型8b 是显存/内存友好档配置高可换 14b、32b ollama run deepseek-r1:8b # 进入交互后随便问一句验证退出用 CtrlC 再 CtrlD # 拉取向量化模型知识库检索必须靠它 ollama pull bge-m3 # 确认两个模型都在本地 ollama listollama run第一次执行会先下载再进入对话下载量按模型规模从几个 GB 到几十 GB 不等网络差就耐心等中断了重跑会续传。bge-m3是 embedding 模型负责把文档切块转成向量Dify 建知识库时「高质量」索引就依赖它别漏。ollama list输出里要能同时看到deepseek-r1:8b和bge-m3NAME、SIZE 两列对得上才算落地。选型上8B 在 16GB 内存的机器上能跑但偏慢32B 起步建议 32GB 内存加独立显卡先拿 8B 把流程跑通再按硬件往上换这是我一贯的做法。提示模型拉取完成后先别急着关命令行用一句中文提问确认输出正常再退出。模型文件损坏或下载不完整时ollama list照样列得出来但一对话就报错提前验证能省掉后面在 Dify 里瞎猜的时间。3. Docker 与 Dify 落地镜像、.env 与 compose 三件事模型侧通了接下来是应用侧。Dify 官方推荐 Docker Compose 部署本质是把 Web 前端、API、数据库、向量库等一串服务编排起来。这一章的重点不是「点下一步」而是三个容易翻车的配置点镜像加速、.env里的 Ollama 地址、compose 启动后的健康检查。3.1 Docker Desktop 安装与镜像源配置到 Docker 官网下载 Windows AMD64 版本的Docker Desktop Installer.exe双击自动安装装完启动。首次启动会要求启用 WSL2按提示走完重启。然后进 Settings 做两处配置。第一处是镜像存储位置Settings → Resources → Advanced把 Disk image location 改到空间充足的盘比如D:\Docker\DockerDesktopWSL。默认放 C 盘Dify 全套镜像拉下来几个 GB加上后续数据增长早点挪走省心。第二处是 Docker Engine 配置在 Settings → Docker Engine 里把配置改成下面这样覆盖后点 Apply restart{ builder: { gc: { defaultKeepStorage: 20GB, enabled: true } }, experimental: false, registry-mirrors: [https://hub.rat.dev] }registry-mirrors是拉镜像时的加速地址国内网络环境下不加这一项docker compose up很可能卡在 pulling 阶段一动不动。defaultKeepStorage控制构建缓存上限20GB 对个人机器够用太小会频繁清缓存导致重复构建。改完必须 Apply restart配置不重启不生效这是 Docker Desktop 的老规矩。3.2 下载 Dify、改 .env、compose 起服务从 Dify 的 GitHub 仓库下载 main 分支压缩包解压到 D 盘或 E 盘目录命名为dify。进dify\docker目录把.env.example复制一份改名为.envWindows 下直接重命名弹窗点「是」。用记事本打开.env拉到文件末尾空一行后追加两行# 允许接入自定义模型供应商 CUSTOM_MODEL_ENABLEDtrue # 容器内访问宿主机 Ollama 服务的地址端口固定 11434 OLLAMA_API_BASE_URLhost.docker.internal:11434CUSTOM_MODEL_ENABLEDtrue是让 Dify 的模型供应商列表里出现 Ollama 选项不加这一行后面根本找不到入口。host.docker.internal是 Docker Desktop 提供的宿主机别名容器里的 Dify 靠它回连你本机的 Ollama如果你把 Ollama 装在另一台机器上这里换成那台机器的局域网 IP但要注意 Ollama 默认只监听本机跨机访问需要额外配置监听地址个人单机部署就用默认值。保存后在该目录空白处右击「在终端中打开」执行# 后台拉起全部依赖服务首次会拉取镜像耗时取决于网络 docker compose up -d # 查看容器状态全部 Up 或 healthy 才算成功 docker compose ps-d是后台运行不加会占住终端。首次执行会拉取 postgres、redis、weaviate、api、web 等一长串镜像配合前面的镜像加速通常十几分钟能完成。docker compose ps里如果有容器反复重启Restarting先看docker compose logs 服务名九成是端口冲突或.env写错。全部起来后浏览器访问http://127.0.0.1/install能看到初始化页面就说明应用侧通了。注意.env文件在 Windows 记事本里保存时容易带上 BOM 或把换行存成 CRLF 混用导致 compose 解析异常。如果启动报变量解析错误用支持 UTF-8 无 BOM 的编辑器重存一次这个坑很隐蔽。4. 在 Dify 里把模型接上、把知识库建起来服务起来只是空壳真正让它变成「知识库」的是两步注册模型供应商以及创建知识库并挂到应用上。这一章按界面操作顺序走每一步说清填什么、为什么这么填。4.1 注册 Ollama 的 LLM 与 Text Embedding访问http://127.0.0.1/install设置管理员账号并登录右上角头像进「设置」→「模型供应商」找到 Ollama 点「添加模型」。这里要加两次一次对话模型、一次向量模型类型别选错。先用ollama list确认本地模型名再按下表填字段LLM对话Text Embedding向量模型名称deepseek-r1:8bbge-m3基础 URLhttp://host.docker.internal:11434http://host.docker.internal:11434模型类型LLMText Embedding模型上下文长度按模型实际能力填8B 填 8192 起步保持默认模型名称必须和ollama list输出完全一致大小写、冒号、标签都不能差差一个字符保存时就报连接失败。基础 URL 带http://前缀端口 11434 是 Ollama 默认监听端口。上下文长度填太小长文档问答会被截断填超过模型实际支持的值请求会直接报错拿不准就先用保守值。两个模型都保存成功后供应商页面会显示已配置状态这时才算模型接入完成。4.2 建知识库分段、索引与检索三组参数怎么定回到主界面先建应用选「聊天助手」→「创建空白应用」填应用名称和图标创建。然后建知识库「知识库」→「创建知识库」→ 数据源选「导入已有文本」→ 上传你的文档txt、md、pdf 都支持→ 下一步进入分段与索引设置。分段选「通用」索引方式选「高质量」检索设置选「向量检索」保存并处理等状态变成可用。这三组参数的含义值得说清分段通用模式按固定长度切块块太大检索不准、块太小上下文断裂默认值对大多数手册类文档够用文档结构复杂再考虑自定义分隔符。索引方式「高质量」会调用bge-m3做向量化检索效果好但建库慢、吃算力「经济」只做关键词索引快但语义匹配弱。既然本地有 embedding 模型选高质量。检索向量检索按语义相似度召回适合自然语言提问如果文档里全是编号、型号这类精确词可以后续在应用里叠加关键词检索做混合召回。知识库处理完成后回「工作室」打开你的聊天助手在「上下文」里点「添加」选中刚建的知识库。到这里提问时模型就会先检索你上传的文档再作答。测试时故意问一个只有文档里才有的细节答得出来且能给出引用来源说明整条链路真正打通了。5. 避坑与排查五个我实际踩过的坑5.1 容器起来了但模型连不上现象Dify 里添加 Ollama 模型时提示连接失败或超时。原因多半是OLLAMA_API_BASE_URL写成了127.0.0.1:11434容器内的 127.0.0.1 指向容器自己而不是宿主机。解决改成host.docker.internal:11434改完docker compose up -d重建容器让新环境变量生效只重启不重建不读新值。5.2 compose 卡在拉镜像不动现象docker compose up -d长时间停在 pulling终端没进展。原因是镜像源没配或配了但没重启 Docker。解决确认 Docker Engine 配置里registry-mirrors已写入点 Apply restart 后重试仍慢就检查磁盘空间镜像存储盘满了也会表现为卡住。5.3 知识库建完检索不到内容现象文档上传成功、状态可用但提问时模型答「没有相关信息」。原因通常是索引方式选了「经济」而检索用了向量模式两边不匹配或者分段过长导致关键信息被稀释。解决重建知识库索引选「高质量」、检索选「向量检索」分段长度调小一档再试。5.4 模型名对不上导致保存失败现象添加模型时点保存报错提示模型不存在。原因是填的模型名和ollama list输出不一致比如漏了:8b标签或大小写不同。解决命令行跑ollama list原样复制 NAME 列粘贴到模型名称字段别手敲。5.5 重启机器后 Dify 打不开现象第二天开机访问127.0.0.1无响应。原因是 Docker Desktop 没随系统启动或容器处于停止状态。解决先启动 Docker Desktop等托盘图标稳定后在dify\docker目录执行docker compose up -d用docker compose ps确认服务恢复。养成开机先看容器状态的习惯比出问题再排查省事。6. 进阶把知识库问答调准的几个实操技巧流程跑通只是及格线真正决定这套本地知识库好不好用的是检索质量和回答约束。分享几个我反复调过的点都是能直接改配置验证的。第一分段策略要按文档类型分。产品手册这种结构化文本按标题层级切比按固定字数切召回准得多会议纪要这类松散文本固定长度加适度重叠更稳。Dify 的分段设置里可以自定义分隔符把##、###这类标题标记加进去切出来的块语义更完整。改完重建知识库用同一批问题对比召回片段肉眼就能看出差别。第二检索参数别用默认值一把梭。向量检索的 TopK 和相似度阈值是两个关键旋钮TopK 太小召回不全太大引入噪声阈值太低把不相关片段塞进上下文模型反而被带偏。我的习惯是先设 TopK4、阈值 0.5 左右拿十个典型问题测答非所问就调高阈值漏答就加 TopK小步试。第三在应用里加系统提示词约束回答边界。本地小模型容易「自由发挥」提示词里明确写「仅依据检索到的上下文回答上下文没有的信息直接说不知道」能显著降低幻觉。这条对 8B 这种规模的小模型尤其有效比换更大模型来得快。第四验证环节别只看「答得像不像」。准备一份带标准答案的问题集逐条核对回答是否引用了正确文档片段、是否编造了文档里没有的数字。我一般会抽 20 条做回归每次改分段或检索参数都重跑一遍用表格记录命中率避免凭感觉调参。调优项默认倾向建议起点观察指标分段长度固定字数按标题切分召回片段完整性TopK偏大4上下文噪声比例相似度阈值偏低0.5答非所问比例系统提示词无约束限定仅用上下文幻觉出现频次最后说个习惯。这套东西涉及环境变量、容器网络、模型服务三层任何一层改动都可能让另一层失效所以我每次动完配置都强制走一遍「ollama list→docker compose ps→ 提一个已知答案的问题」这三步验证确认链路没断再继续。早期我图省事跳过验证结果在一个演示前夜发现容器重建后丢了环境变量临时排查到凌晨从那以后这个三步检查再没省过。希望帮到你。本文还有配套的精品资源点击获取
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑