简介:这份资源是面向AI初学者与个人开发者的DeepSeek本地化实践教程,围绕本地部署、WebUI可视化与数据投喂训练三条主线展开,帮助读者在自有终端上稳定运行开源大模型,摆脱在线服务响应迟缓或宕机的困扰。资源包内含1个docx文档,大小约2.76MB,以图文步骤形式组织内容,涵盖Ollama安装、DeepSeek R1模型选择、Page Assist插件配置以及AnythingLLM工作区搭建等关键环节,并配有nomic-embed-text嵌入模型的使用说明。教程从显存容量与模型版本匹配讲起,逐步过渡到浏览器可视化对话与联网检索,最后演示上传PDF、Word、Excel等文档完成知识库投喂,使AI能够准确回答专属领域问题。目前已有1183人学习,适合希望低成本搭建个人智能知识库、掌握本地大模型训练流程的读者收藏实践。
1. 从一次断网事故说起:为什么我把 DeepSeek 搬进了本地终端
上个月公司网络割接,外网断了整整一个下午。同事们的在线 AI 工具全部转圈,我这边却照常跑着 DeepSeek-R1 的 1.5b 模型,改代码、查文档、整理会议纪要一样没落下。那一刻我才真正体会到本地部署的价值——不是图新鲜,而是把「随时可用」这件事攥在自己手里。这套方案的核心链路其实就三段:用 Ollama 把 DeepSeek 模型拉到本地跑起来,用 Page Assist 插件给它套一个浏览器里的 WebUI 可视化界面,再用 AnythingLLM 配合 nomic-embed-text 嵌入模型做数据投喂,把通用模型变成懂你业务的知识库。适合谁?手上有台带独显的 Windows 机器、想搭私有知识库但不想碰复杂推理框架的从业者。显存 4GB 就能起步,往下我会把每一步的参数、坑和验证方法都拆开讲。
2. Ollama 部署 DeepSeek:从安装到命令行跑通
2.1 为什么选 Ollama 而不是自己编译推理框架
本地跑大模型的路子有好几条,llama.cpp 直接编译、vLLM 做高并发推理、Ollama 做封装管理,各有各的适用面。对绝大多数想快速用起来的人来说,Ollama 的优势在于它把模型下载、量化格式选择、显存调度、API 暴露这几件事全包了,你只需要一条ollama run命令。它底层其实也是 llama.cpp 那套推理引擎,但把 GGUF 量化模型的加载和上下文管理做成了开箱即用。常见做法是:先用 Ollama 把流程跑通,确认模型效果和硬件承载能力之后,再考虑要不要换更底层的方案做性能调优。我一般会建议新手直接走 Ollama,因为它的模型库更新快,DeepSeek-R1 系列从 1.5b 到 671b 都有现成的量化版本,省去了自己转模型格式的麻烦。
2.2 Windows 下安装 Ollama 与验证
到 Ollama 官网下载 Windows 安装包,双击安装,过程没什么特别的。装完之后打开 PowerShell 或 CMD,输入下面这条命令验证:
ollama --version如果返回版本号,说明安装成功。如果提示「不是内部或外部命令」,大概率是安装时没有勾选「添加到 PATH」,手动把 Ollama 的安装目录加进系统环境变量就行。另一个常见情况是安装完第一次运行会弹防火墙提示,允许即可,Ollama 默认监听 11434 端口,后面 AnythingLLM 和 Page Assist 都要通过这个端口跟它通信。
验证服务是否在跑,可以用:
ollama list这条命令会列出本地已经下载的模型。刚装完是空的,接下来就要拉模型了。
2.3 选对 DeepSeek-R1 版本:显存与模型参数的对应关系
这是最容易翻车的一步。很多人看到 671b 觉得厉害就往下拉,结果硬盘塞满、内存爆掉、跑起来像蜗牛。模型版本和硬件配置的对应关系大致如下:
| 模型版本 | 量化后体积(约) | 最低显存 | 推荐内存 | 适用场景 |
|---|---|---|---|---|
| deepseek-r1:1.5b | 1.1 GB | 2 GB | 8 GB | 轻量问答、配置低的笔记本 |
| deepseek-r1:7b | 4.7 GB | 6 GB | 16 GB | 日常对话、代码辅助 |
| deepseek-r1:8b | 5.2 GB | 8 GB | 16 GB | 比 7b 略强,显存够就选它 |
| deepseek-r1:14b | 9.0 GB | 12 GB | 32 GB | 复杂推理、长文本理解 |
| deepseek-r1:32b | 20 GB | 24 GB | 64 GB | 接近商用效果,需要高端卡 |
| deepseek-r1:70b | 43 GB | 48 GB | 128 GB | 工作站级别 |
| deepseek-r1:671b | 404 GB | 多卡 | 512 GB | 服务器集群,个人别碰 |
我自己的测试机是 4GB 显存的 Windows 笔记本,选的是 1.5b 版本,日常问答和简单代码补全够用,但复杂推理确实力不从心。如果你有 8GB 以上显存,直接上 7b 或 8b,体验会好很多。拉模型的命令:
ollama pull deepseek-r1:1.5bpull只下载不运行,适合提前把模型准备好。下载速度取决于网络,国内有时候会慢,可以配镜像源加速,具体方法在后面避坑章节讲。
2.4 命令行交互与 API 验证
模型拉完之后,直接跑:
ollama run deepseek-r1:1.5b进入交互界面后输入问题,比如「用 Python 写一个快速排序」,它会流式输出结果。退出用/bye。这一步验证的是模型本身能不能正常推理。
除了命令行,Ollama 还暴露了 REST API,默认地址是http://localhost:11434。用 curl 测一下:
curl http://localhost:11434/api/generate -d "{\"model\":\"deepseek-r1:1.5b\",\"prompt\":\"你好\",\"stream\":false}"返回 JSON 里如果有response字段,说明 API 通了。这个接口后面 AnythingLLM 和 Page Assist 都会调用,所以这一步必须确认没问题。如果 curl 报连接拒绝,检查 Ollama 服务是不是在后台运行,Windows 下可以在任务管理器里看有没有 ollama.exe 进程。
3. Page Assist 插件:给本地模型套一个浏览器 WebUI
3.1 为什么选 Page Assist 而不是 Open WebUI
给 Ollama 套 WebUI 的方案不少,Open WebUI 功能最全但需要 Docker 部署,对不熟悉容器的人有门槛;Page Assist 是一个浏览器扩展,装完就能用,零额外依赖。它的定位很明确:在浏览器侧边栏提供一个跟本地模型对话的界面,同时支持读取当前网页内容和 PDF 文档。对于「我就想要个好看的对话框,不想折腾 Docker」的人来说,Page Assist 是最短路径。当然它也有边界——多用户管理、对话历史云端同步这些它不做,适合个人使用。
3.2 安装与模型选择
以 Chrome 或 Edge 为例,打开扩展管理页面,搜索「Page Assist」,找到后点击获取。安装完成后,浏览器工具栏会出现 Page Assist 的图标,点击就能打开侧边栏。
第一次打开需要配置模型来源。在设置里,AI 提供商选「Ollama」,地址填http://localhost:11434,然后在下拉列表里选择你已经拉下来的 DeepSeek-R1 模型。如果列表是空的,说明 Ollama 服务没启动或者地址填错了。选好之后保存,就可以在侧边栏直接对话了。
3.3 联网开关与文档对话的边界
Page Assist 侧边栏底部有一个联网搜索开关。打开后,它会尝试用搜索引擎补充最新信息再交给模型回答。但要注意,这个功能依赖外部搜索服务,返回质量不稳定,而且会引入网络延迟。我的习惯是:日常问答关掉联网,需要查最新资料时再开。
文档对话是另一个实用功能。在侧边栏上传 PDF、CSV、TXT、Markdown 或 DOCX 文件,Page Assist 会提取文本内容作为上下文传给模型。但它和 AnythingLLM 的投喂有本质区别——Page Assist 的文档对话是「临时上下文」,关掉对话就没了;AnythingLLM 是「持久化嵌入」,文档内容会被向量化存储,后续所有对话都能检索到。所以如果你只是临时问一个 PDF 里的问题,用 Page Assist 够了;如果要建长期知识库,往下看 AnythingLLM。
4. AnythingLLM 数据投喂:把通用模型变成专属知识库
4.1 嵌入模型 nomic-embed-text 的作用
数据投喂的核心逻辑是 RAG(检索增强生成):把你的文档切块、向量化、存进向量数据库,用户提问时先检索最相关的文档片段,再把片段和问题一起交给大模型生成回答。这个流程里,负责「向量化」的就是嵌入模型。nomic-embed-text 是 Ollama 支持的一个轻量嵌入模型,体积小、速度快,适合本地跑。先把它拉下来:
ollama pull nomic-embed-text拉完之后用ollama list确认它和 DeepSeek-R1 都在列表里。嵌入模型不直接对话,它只负责把文本转成向量,所以不需要显存很大,1.5b 的对话模型加 nomic-embed-text 的组合在 4GB 显存的机器上也能跑。
4.2 AnythingLLM 安装与 LLM 首选项配置
到 AnythingLLM 官网下载 Windows 安装包,安装时选择「所有用户」,路径可以改到非系统盘。装完打开,先点「Get started」创建工作区,输入一个名字比如「技术文档库」。
接下来是关键配置。点设置图标,进入「LLM 首选项」:
- LLM 提供商选「Ollama」
- Ollama Model 选你下载的
deepseek-r1:1.5b(或其他版本) - Ollama URL 保持默认
http://localhost:11434 - 点「Save changes」
然后进「Embedder 首选项」:
- 嵌入引擎提供商选「Ollama」
- Ollama Embedding Model 选
nomic-embed-text - 保存
如果界面是英文,在「Customization」里把语言改成 Chinese。这两步配完之后,AnythingLLM 就同时具备了对话能力和向量化能力。
4.3 工作区设置与数据投喂全流程
回到工作区,点工作区名称旁边的设置按钮,配置这个工作区用哪个模型:
- 聊天设置里,工作区 LLM 提供者选「Ollama」,工作区聊天模型选
deepseek-r1:1.5b,点「Update workspace agent」 - 代理配置里同样选 Ollama 和对应模型,再点一次更新
然后就是投喂数据。在工作区界面点上传按钮,选择你的文档(支持 PDF、TXT、Word、Excel、PPT),勾选文件后点「Move to Workspace」,再点「Save and Embed」。这时候 AnythingLLM 会调用 nomic-embed-text 把文档切块向量化,进度条走完就表示投喂完成。
验证方法很直接:投喂前问一个文档里才有答案的问题,比如「正点原子公司的名称是什么」,模型会答不知道;投喂包含这个信息的文档后再问,它能准确回答。这说明 RAG 链路通了。
4.4 文档切块参数与检索效果调优
AnythingLLM 默认的文本切块大小是 1000 字符,重叠 200 字符。这个参数在「工作区设置」的「文档相似度与切块」里可以调。切块太大,检索精度下降;切块太小,上下文碎片化,模型拼不出完整答案。我的经验是:技术文档用默认值就行;如果是问答对格式的数据,把切块调小到 500 左右效果更好。另外「相似度阈值」和「最大上下文片段数」也影响回答质量,阈值太高会漏掉相关内容,太低会引入噪声,一般保持默认,遇到回答不准再微调。
5. 避坑与排查:本地部署最容易翻车的五个地方
5.1 模型下载卡住或速度极慢
现象:ollama pull执行后进度条长时间不动,或者速度只有几十 KB/s。
原因:Ollama 默认从境外源拉取模型,网络波动大。
解决:配置国内镜像源。在系统环境变量里添加OLLAMA_HOST指向镜像地址,或者手动下载 GGUF 文件后用ollama create导入。另一个办法是错峰下载,深夜速度通常好一些。
5.2 显存不足导致模型加载失败
现象:ollama run后报错「CUDA out of memory」或者模型加载到一半卡死。
原因:选的模型版本超过了显卡显存容量。比如 4GB 显存跑 7b 模型,量化后虽然只有 4.7GB,但推理时还需要额外显存做 KV 缓存。
解决:降级到更小的模型版本,或者用 CPU 推理(速度慢但能跑)。在 Ollama 里可以用OLLAMA_GPU_LAYERS环境变量控制有多少层跑在 GPU 上,设小一点可以缓解显存压力。
5.3 Page Assist 连不上 Ollama
现象:插件里模型列表为空,或者对话时报「连接失败」。
原因:Ollama 服务没启动,或者地址填错,或者防火墙拦了 11434 端口。
解决:先在浏览器里访问http://localhost:11434,如果返回「Ollama is running」说明服务正常。如果访问不了,检查 Ollama 进程是否在跑,防火墙是否放行。Page Assist 里地址要填完整的http://localhost:11434,不能只填localhost。
5.4 AnythingLLM 投喂后回答仍然不准
现象:文档已经「Save and Embed」,但提问时模型还是答非所问。
原因:可能是嵌入模型没配对,或者文档切块参数不合理,或者相似度阈值设得太高导致检索不到相关内容。
解决:先确认 Embedder 首选项里选的是 nomic-embed-text 并且保存成功。然后检查工作区的「文档相似度」设置,把阈值调低一点试试。如果还不行,把文档删掉重新投喂,有时候嵌入过程会因为网络或服务中断而失败。
5.5 模型回答质量差或胡言乱语
现象:1.5b 模型回答简单问题还行,稍微复杂一点就开始编造。
原因:模型参数太小,推理能力有限。1.5b 适合轻量问答,不适合复杂逻辑推理。
解决:如果硬件允许,换 7b 或 14b 版本。如果硬件不允许,在提示词里明确要求「只根据提供的文档内容回答,不知道就说不知道」,减少编造。另外 RAG 场景下,检索到的文档片段质量比模型大小更关键,把文档整理干净、切块合理,小模型也能有不错的表现。
6. 进阶技巧:用 API 把本地 DeepSeek 接进自己的工作流
跑通 WebUI 和数据投喂之后,这套本地部署的真正价值在于它可以被其他工具调用。Ollama 暴露的 REST API 兼容 OpenAI 的接口格式,这意味着任何支持自定义 API 地址的客户端都能接进来。比如你在写代码时想用本地模型做代码补全,或者在笔记软件里想调用本地模型做摘要,都可以通过 API 实现。
先确认 API 可用:
curl http://localhost:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d "{\"model\":\"deepseek-r1:1.5b\",\"messages\":[{\"role\":\"user\",\"content\":\"用一句话解释什么是RAG\"}]}"返回的 JSON 结构和 OpenAI 的 chat completions 接口一致,choices[0].message.content就是模型回答。参数方面,model填你在 Ollama 里的模型名,messages是对话历史数组,stream设为true可以流式输出。温度参数temperature默认 0.8,做知识库问答时建议调到 0.3 左右,减少随机性。
Python 调用示例:
import requests response = requests.post( "http://localhost:11434/v1/chat/completions", json={ "model": "deepseek-r1:1.5b", "messages": [ {"role": "system", "content": "你是一个技术助手,回答要简洁准确。"}, {"role": "user", "content": "Ollama 和 vLLM 有什么区别?"} ], "temperature": 0.3, "stream": False } ) print(response.json()["choices"][0]["message"]["content"])这段代码可以直接嵌进你的脚本或工具链里。system消息用来设定模型角色,temperature控制输出随机性,stream设False方便一次性拿到完整结果。如果你要做批量处理,把messages换成循环即可。
还有一个实用技巧:AnythingLLM 也提供了 API,可以把投喂好的知识库以接口形式暴露出来。在 AnythingLLM 设置里找到「API 密钥」生成一个,然后就能通过它的接口查询知识库。这样你的其他系统不用直接调 Ollama,而是调 AnythingLLM,自动带上 RAG 检索能力。
最后说一个我踩过的坑:本地模型跑久了,Ollama 进程可能因为显存碎片积累变慢,表现是同样的问题回答时间越来越长。我的习惯是每隔几天重启一次 Ollama 服务,或者用ollama stop卸载模型再重新加载。从那以后我每次搭完本地环境,都会先跑一轮压力测试——连续问十个问题,看响应时间是否稳定——确认没问题再正式用。希望帮到你。
本文还有配套的精品资源,点击获取