首页 / 资讯中心 / 文章详情

本地部署DeepSeek私有化方案:Ollama+ChatBox+Cherry Studio实战

本地部署DeepSeek私有化方案:Ollama+ChatBox+Cherry Studio实战 ★ FEATURED ARTICLE
简介面向技术爱好者与研发团队的 DeepSeek 本地部署实操指南聚焦 Ollama 平台与 Cherry Studio 私有知识库建设。文档按硬件条件给出 1.5b 至 70b 等不同模型的配置建议涵盖软硬件需求、Ollama 下载安装、命令行运行 DeepSeek-R1 模型、设置 API 键连接云端服务以及修改模型存储路径和删除模型等操作细节。资源为单份 docx 文件压缩包约 2.8MB篇幅精简而步骤完整适合初学者据此跑通本地大模型流程。内容预览中还附带了 B 站教程链接、在线演示平台及常用智能体入口便于扩展学习。截至目前已有 16465 人学习/下载可见其话题热度和实战参考价值。借助该指南读者既能按自身算力选择合适模型也能通过 Cherry Studio 搭建企业内部问答系统规避敏感数据公开访问风险同时作者补充了网络攻击时的替代 API 源兼顾安全性与稳定性。1. 本地跑 DeepSeek为什么这套组合是当下最省事的私有化方案把 DeepSeek 装进自己电脑这件事这两年门槛低了很多Ollama 负责把模型跑起来ChatBox 给你一个顺手的聊天窗口Cherry Studio 再把本地文档变成能让模型引用回答的私有知识库。整套链路跑通后对话记录和上传的资料都不会离开本机回答里还能带上自己文档的出处。反直觉的地方在于不少开发者以为本地跑大模型必须上万显卡实际上量化后的 7B 模型在 8G 显存的家用机器上就能流畅对话实现一次 API 费用归零的私有化问答。这篇教程写给想动手做本地私有大模型、又不想折腾底层推理框架的从业者照着步骤走两小时内能跑通。2. Ollama 装对盘、装对模型DeepSeek 本地推理的第一步整个本地链路里Ollama 是最底层的模型运行时负责四件事从模型仓库拉取权重、按量化格式加载模型、调度 CPU/GPU 做推理、对外暴露 HTTP API。很多第一次上手的人会把精力放在“选哪个模型”结果先在安装和配置上栽跟头。这一章先把运行时装对、把模型目录挪走、把 DeepSeek 模型拉下来后面所有环节才能站住。2.1 为什么选择 Ollama 作为模型运行时常见做法是直接用 Python 的 transformers 库加载 DeepSeek 权重但那样要自己处理 CUDA 环境、分词器、显存调度、并发请求一套下来半天就没了。Ollama 把模型下载、量化转换、推理服务和 OpenAI 兼容 API 都封装好了装完就是一个可用的本地推理服务。你不需要写加载模型的代码只要一条命令把模型拉下来它就能跑。从实用角度看Ollama 还解决了两个实际痛点第一是模型格式统一社区里大量模型直接用ollama pull就能拉取第二是显存管理它会自动把放不下的层卸载到内存不至于一个 OOM 直接崩掉整个进程。下表是它和裸跑 transformers 的适用场景对比对比项Ollama裸用 transformers环境配置装一个程序装 Python、PyTorch、CUDA 等模型获取一行命令拉取手动下载权重和配置文件API 服务自带 /api 接口自己写服务显存不足自动部分卸载容易 OOM适合人群快速私有化部署做训练、微调、底层实验如果你只是想用 DeepSeek 做对话和知识库问答Ollama 是性价比最高的选择后面真要微调模型再回头用 transformers 也不迟。2.2 安装并迁移模型目录别等 C 盘爆红才后悔Ollama 的安装本身不难Windows 下从官网下载安装包或者用包管理器直接装winget install Ollama.Ollama装完之后有个特别容易忽略的默认行为模型权重默认存放在系统盘的C:\Users\你的用户名\.ollama\models。7B 量化模型大约 4.7 GB14B 接近 9 GB装两个模型 C 盘就被吃掉了大半。我的习惯是安装完成后、拉取任何模型之前先把模型目录迁到数据盘# 在 D 盘创建模型目录 mkdir D:\ollama\models # 写入用户级环境变量指定模型存放路径 setx OLLAMA_MODELS D:\ollama\modelssetx设置的是用户环境变量不需要管理员权限。设置完之后右键系统托盘的 Ollama 图标退出进程再重新打开 Ollama新路径才会生效。可以用ollama list确认当前模型目录下有什么文件。另外Ollama 在 Windows 上默认会跟着开机自启托盘里那个Ollama app.exe就是它的守护进程。如果你不习惯每次开机多个后台进程可以在任务管理器“启动应用”里直接禁用或者用服务管理把对应任务停掉不影响手动使用时启动。注意已经下载到 C 盘的模型改完环境变量后并不会自动搬走。它们还在旧的.ollama\models目录里需要手动剪切到新目录或者删掉重新拉取。迁移时最好先把 Ollama 完全退出避免文件被占用这步算本地部署的“后悔药”。2.3 拉取 DeepSeek 模型版本、量化与显存判断Ollama 装好之后拉取 DeepSeek 模型是核心动作。官方模型仓库里有多个尺寸我的建议是优先看deepseek-r1系列按显存选# 7B 量化版适合 8G 显存的笔记本或台式机 ollama pull deepseek-r1:7b拉取完成后直接运行ollama run deepseek-r1:7b --verbose--verbose会输出每次请求的耗时、token 速度以及 GPU 负载情况。对话界面里输入问题就能看到模型流式输出/bye退出。下面是一个按显存选型号的参考表模型标签量化精度大致占用适合显卡deepseek-r1:1.5bQ4 量化约 1.1 GB纯 CPU 也能跑deepseek-r1:7bQ4 量化约 4.7 GB8G 显存起步deepseek-r1:14bQ4 量化约 9.0 GB12-16G 显存deepseek-r1:32bQ4 量化约 20 GB24G 显存或混合内存如果你的显卡显存不够Ollama 会把多余层放到内存里跑慢但不会直接挂掉。判断模型到底吃没吃显卡用ollama ps看当前运行的模型负载PROCESSOR列显示100% GPU说明显存够用出现GPU/CPU混合就说明层被卸载到内存了。2.4 用 Modelfile 自定义参数和离线导入模型ollama pull下载依赖公网模型仓库有时候会遇到下载太慢或反复失败。遇到这种情况别死磕常见的替代路径是从国内模型社区下载 GGUF 格式的权重文件再用 Modelfile 离线导入。先准备好模型目录和 Modelfile 文件# 从社区下载 deepseek-r1 的 GGUF 文件到 D:\models 目录后新建 Modelfile FROM D:\models\deepseek-r1-7b.Q4_K_M.gguf PARAMETER temperature 0.7 PARAMETER num_ctx 8192然后执行导入命令ollama create deepseek-r1:ms -f Modelfile这里FROM指向本地 GGUF 文件路径PARAMETER里的temperature控制回答随机性num_ctx控制模型能看到的上下文窗口长度。导入完成后ollama list里会出现deepseek-r1:ms用法和官方拉取模型完全一致。这个过程相当于把多 GB 权重文件转移到本地彻底绕开网络下载瓶颈。最后确认服务状态。Ollama 默认监听 11434 端口用一条命令验证curl http://localhost:11434/api/tags返回的 JSON 里能看到已经安装的模型列表说明推理服务正常。到这里DeepSeek 已经在本地跑起来了下一步就是把对话界面接上去。3. ChatBox 接上本地 API图形界面这样配命令行能跑通模型但日常用起来不顺手没有聊天记录管理、没有 Markdown 渲染、复制代码也不方便。ChatBox 在这里扮演的角色很单纯——一个桌面聊天客户端它把所有请求转发给 Ollama 的本地 API本身不做推理。配置过程的核心就是告诉它“后端在哪个地址、模型叫什么名字”。3.1 搞清楚谁在干活ChatBox 只是壳子很多第一次接触本地部署的朋友会被“接 API”这个说法劝退以为要自己写后端。实际上 Ollama 自带的 HTTP API 是 OpenAI 兼容的这意味着任何能配置 OpenAI 接口的工具只要把 base URL 换成http://localhost:11434/v1就能直接使用本地的 DeepSeek。ChatBox 的作用是提供会话管理、多轮对话上下文、Prompt 模板和界面主题。它不存你的模型也不跑推理聊天记录默认存在本地。换句话说即便没有 ChatBox你也可以用任何支持 OpenAI 兼容接口的工具来接只是 ChatBox 在桌面端做得最省事。3.2 最小配置步骤从下载到首次对话ChatBox 的配置路径是固定的照着以下步骤走从官网或 GitHub Releases 下载 ChatBox 安装包安装后打开进入“设置”页面在“模型提供商”里选择 OpenAI API 兼容模式API 地址填http://localhost:11434/v1API Key 可以填任意非空字符串比如ollama本地服务不校验密钥模型名填deepseek-r1:7b注意要和ollama list里的名称一致保存后点“检查”或直接发送一条消息测试。如果 ChatBox 弹出连接失败先用命令行确认 Ollama 服务是否在跑curl http://localhost:11434/v1/models这条命令的返回代表 Ollama 的 OpenAI 兼容端点是否可用。ChatBox 的“检查”本质上就是请求这个地址。如果返回了模型列表而 ChatBox 仍然报错多半是模型名填错比如填了deepseek-r1:7b但本地只有deepseek-r1:ms。3.3 对话参数怎么调Temperature、Top P 与上下文长度ChatBox 的设置里有一组和生成相关的参数它们不是越极端越好要根据用途调整参数默认值本地问答建议说明Temperature1.00.7越低回答越保守代码和事实类问答适合 0.7Top P1.00.9控制候选词范围和 Temperature 一起调Max Tokens20484096回答最大长度超长代码场景再调大Context Length自动4096-8192决定模型记住多少上文越长显存占用越高实际使用中如果频繁出现回答被截断优先调大 Max Tokens如果回复总是“一本正经地跑题”把 Temperature 降到 0.5-0.7如果多轮对话后模型“失忆”说明 Context Length 不够但调大之后要留意显存压力。3.4 多模型切换与界面细节ChatBox 支持同时配置多个模型提供商。我通常会在 Ollama 里保留一个deepseek-r1:1.5b作为应急小模型日常用 7B需要长文本理解时切 14B。在 ChatBox 的对话界面顶部可以直接切换模型不需要反复改配置。至于界面美化ChatBox 本身支持主题切换、字号调整和 Markdown 渲染。把代码字体调成等宽字体、开启深色主题看起来就挺像模像样了。真正重要的是把对话记录目录备份好换机器时能直接恢复聊天历史。4. Cherry Studio 搭私有知识库把文档变成能引用的本地资料对话界面解决了“怎么聊”的问题但很多人的真实需求是“让模型读我的资料再回答”公司制度、项目文档、产品手册这些内容模型原本没学过。Cherry Studio 的私有知识库就是干这个的它把文档拆成片段、转成向量、存进本地索引问答时先检索相关片段再让 DeepSeek 基于这些片段生成回答。4.1 知识库链路embedding、向量检索与生成知识库的完整链路是这样的文档先按固定长度切分成片段每个片段通过 embedding 模型转换成一个向量用户提问时同样的问题文本也会转成向量然后在向量库里做相似度检索找出最相关的几个片段最后这些片段拼进 Prompt 送给 DeepSeek生成带来源引用的回答。这里有个容易误解的点知识库的“记忆”不来自大模型本身而是来自检索到的片段。模型只负责把片段整理成通顺的回答。所以检索质量决定了回答质量。经典的关键词匹配对专业术语和同义词的命中率很差向量检索是当前最通用的方案Cherry Studio 内置了这整套流程。4.2 配置 embedding 模型与新建知识库Cherry Studio 本身不做 embedding它需要调用一个 embedding 服务。本地部署最常见的做法就是继续用 Ollama 提供 embedding 模型# 轻量级 embedding 模型通用场景够用 ollama pull nomic-embed-text # 中文场景更推荐效果更好模型体积略大 ollama pull bge-m3两个模型选一个即可。nomic-embed-text的向量维度是 768bge-m3的向量维度是 1024后者对中文语义的理解明显更好。我的建议是文档以中文为主就直接上bge-m3避免后面换模型导致整个知识库要重新向量化。然后打开 Cherry Studio进入“知识库”页面新建一个知识库在设置里选择 Ollama 作为 Embedding Provider地址填http://localhost:11434模型选刚拉取的 embedding 模型。之后把 PDF、Markdown、TXT 文件拖进知识库客户端会自动完成切片和向量化。这个过程是本地运算不上传任何文档内容。4.3 分段大小、重叠与 Top K命中率的关键参数知识库建好后最影响回答质量的是几组检索参数参数常见取值说明分段大小300-500 字短文本取 300长文档取 500 以上片段重叠50-100 字防止关键句被切断后检索不到Top K3-5检索返回的片段数量越多参考越全但越杂相似度阈值0.2-0.3低于阈值不返回结果避免强答分段太大一个片段里混合多个主题检索到的片段不够精准分段太小上下文信息不足模型只能看到碎片。重叠区间是用来“补漏”的比如一句话被从中间截断时重叠片段能保留完整语义。Top K 不是越大越好我一般先 3如果发现答案偏窄再调 5。4.4 让模型引用知识库回答验证与 Prompt 调整知识库建完之后先做一个“必答测试”挑一个只有文档里才有答案的具体问题比如“报销单超过 5000 元需要谁审批”。如果回答里没有引用来源Cherry Studio 的引用区会是空的说明检索没命中。常见原因是 embedding 模型没选中或者知识库还没完成向量化。可以在知识库详情里看片段数量确认索引建立成功。另外Cherry Studio 的默认 Prompt 不一定强调“引用原文”可以在助手的系统指令里加一句“优先根据知识库内容回答回答时标注引用来源知识库没有相关内容时直接说明不知道不要编造。”这句话能明显减少模型的自由发挥。5. 避坑排错本地部署 DeepSeek 最容易翻车的 5 个现场这套链路整体不算复杂但每个环节都有各自的黑匣子。把常踩的坑按“现象 → 原因 → 解决”列出来遇到问题能少走很多弯路。5.1 启动与安装类坑现象点击 Ollama 后进程闪退或者在终端执行ollama serve直接报段错误Segmentation fault。原因大概率是显卡驱动太旧或者安装包和当前系统版本不兼容少数情况是权限不足模型目录没有写入权限。解决先把显卡驱动更新到最新版本再重新安装 Ollama同时确认刚才设置的OLLAMA_MODELS目录有读写权限。一个老旧环境里我给目录加了Authenticated Users的完全控制权限问题就消失了。现象装了两个模型C 盘直接变红。原因默认模型目录在 C 盘用户文件夹下ollama pull下载的权重全堆在里面。解决没下模型之前就把OLLAMA_MODELS指到数据盘如果已经下载退出 Ollama 后手动把旧目录里的模型文件剪切到新目录再启动服务。5.2 下载与拉取类坑现象ollama pull deepseek-r1:7b进度条长时间不动或者几十 KB/s 慢慢爬。原因默认模型下载源在海外模型文件动辄几个 GB带宽波动大就容易卡住。解决放弃ollama pull从国内模型社区下载 GGUF 权重用 Modelfile 离线导入也可以换个时间段重试。模型下到一半中断时重新执行 pullOllama 会断点续传不用删掉重来。5.3 连接与对话类坑现象ChatBox 或 Cherry Studio 报Connection refused或者发送消息后 404。原因Ollama 服务没启动或者 base URL 填错404 一般是模型名和实际安装的名字对不上。解决先用curl http://localhost:11434/api/tags确认服务活着、模型列表正确再检查配置里的地址是不是http://localhost:11434/v1模型名是不是deepseek-r1:7b这种带 tag 的完整格式。现象请求能发出去但回答到一半就断掉或者出现乱码。原因上下文窗口开太大导致显存不足或者 Max Tokens 设的太小。解决把 Context Length 调回 4096Max Tokens 调到 4096 以上关掉浏览器里占显存的应用再用ollama ps看当前进程的显存占用。5.4 知识库引用类坑现象知识库建好了问文档里的内容模型说“不知道”或者给出一段泛泛而谈的回答。原因检索命中失败。可能是 embedding 模型没选对导致向量空间不匹配也可能是相似度阈值设太高真正的相关片段被过滤掉了。解决在知识库详情里确认片段数量不为 0把相似度阈值从默认值下调到 0.2如果用的是nomic-embed-text中文场景换bge-m3后重建知识库。还有一个隐蔽问题部分模型在生成时会忽略 Prompt 里附带的上下文表现为回答内容和引用片段完全无关。这时候把系统指令里“不要编造”改成“只能根据知识库内容回答”效果立刻不一样。6. 验证与进阶用最小清单确认整套本地链路可用整套链路搭完最后花五分钟做一次验收。首先要跑一遍全链路测试从 Ollama API 到知识库检索再到生成回答。其次可以把能力封装成内部接口方便团队其他人使用。6.1 最小验证清单检查项操作期望结果Ollama 服务curl http://localhost:11434/api/tags返回模型列表显卡调用ollama ps看运行中模型PROCESSOR 显示 GPUChatBox 对话问“你是谁”回答提到 DeepSeek知识库命中问只存在于文档里的问题引用区出现原文片段这个清单里的每一项都不过关的话按上一章的坑逐条排查就行。速度方面7B 量化模型在 8G 显存上大约每秒 15-25 token这个数字低于云端 API但胜在数据完全在本地。6.2 用 FastAPI 包装一个内部接口如果想把本地能力开放给同一个局域网里的同事用 FastAPI 包一层是最快的办法from fastapi import FastAPI import requests app FastAPI() OLLAMA_URL http://localhost:11434/api/generate app.post(/ask) def ask(text: str): resp requests.post( OLLAMA_URL, json{model: deepseek-r1:7b, prompt: text, stream: False}, ) return {answer: resp.json()[response]}这个接口把 Ollama 的生成端点藏在了后面调用方只需要 POST 一个text字段。参数里的stream: False表示等完整回答生成完再一次性返回适合内部工具如果要做流式输出需要改成stream: True并处理 SSE 格式。我自己的一个教训是第一次部署时图省事先拉模型后迁移目录结果一个 14B 模型直接把 C 盘涨红后来固定顺序先设环境变量再拉模型再建知识库这套流程才稳定下来。本地部署的价值在于数据可控但前提是你把地基打对。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站