deepseek本地化部署+个人知识库

接入与开发

帮想在自己机器上跑 DeepSeek 并接个人知识库的人,按显存、并发和文档量选硬件与方案,避开跑不动和答不准两类坑。

本地跑 DeepSeek 再挂个知识库,最先卡住的往往不是装不装得上,而是「我这台机器到底该选哪条路」。显存不够、文档一多就慢、检索召回一堆不相关片段,都是常见场景。这篇不给标准答案,只给一套按自己条件对照的判断顺序:先量硬件,再定模型规格,然后挑知识库方案,最后留好降级出口。每一步都告诉你去站内哪一页核对当时的数字。

本地跑 DeepSeek 再挂个个人知识库,最先卡住的通常不是装不装得上,而是「我这台机器到底该走哪条路」。显存不够、文档一多就慢、检索召回一堆不相关片段,都是很常见的场景。

这篇不给标准答案,只给一套按自己条件对照的判断顺序:先量硬件,再定模型规格,然后挑知识库方案,最后留好降级出口。每一步都告诉你去站内哪一页核对当时的数字。

先算硬件账,再谈模型规格

很多人先挑模型再回头看机器,结果只能一路降级。正确顺序是先把显存、内存、磁盘三样分开量。显存决定能塞多大的模型和上下文长度,内存决定加载权重与切片时的余量,磁盘决定文档和向量索引能堆多少。三样里哪一样先见底,方案就往哪边收。

  • 显存:决定模型规格与上下文上限,长文档问答比闲聊更吃这一块,别按闲聊的体感估
  • 内存:加载权重、做文档切片、跑重排都要占,机器一边跑推理一边开浏览器就容易顶到上限
  • 磁盘:原始文档和向量索引都会持续长,留空间的习惯比一开始买多大更重要
  • 先明确用途:是单人偶尔问几段,还是每天丢几十份文档进去问,这两种对并发的要求完全不同

量化档位和上下文长度是互相挤显存的:上下文拉长,能上的模型规格就得往下压。判断标准是拿你真实的一批文档去做端到端问答,而不是拿一句问候语试。具体硬件型号的吞吐和租赁行情,到 /compute/gpus 与 /compute/gpu-rental 对当时的数字。

卡不够时有四条路,按代价从低到高排:降到更小的量化版本;把 Embedding 和重排放到 CPU;把推理放到一台固定机器、知识库留在本机;干脆改走 API,只把知识库留在本地。前两条省钱但体验打折,后两条是明确的能力取舍。家庭机器只有一个普通显卡、又只是偶尔查资料,就不建议硬上本地大模型,走 API 更省事。

方案怎么选:一把梭还是拆开装

一体化平台自带文档解析、切片、检索和问答界面,部署完就能用,适合先把流程跑通;拆开装是推理服务、向量库、编排层各自独立,可控性强,适合要改检索策略、要接进已有程序的人。两条路都不算错,错的是用一体化去接一个需要深度定制的场景。

判断项倾向一体化倾向拆开装
文档格式以文本、Markdown、规整 PDF 为主扫描件、表格、多栏排版占多数
要不要接程序只用自带网页界面要接进已有脚本或内部工具
换模型频率基本不换,能用就行经常换模型或换嵌入模型
检索调优默认策略够用要改切片、召回数量、重排规则

三项里有两项落在右边,就别选一体化,否则后面一定会推倒重来。还有个容易忽略的点:模型服务和知识库服务分开部署,换模型版本时不用把索引一起重建。装机前到 /models/deploy 和 /stacks/vector-dbs 对照当时的规格与可选产品。

文档进库这条链路最容易白干

知识库答不准,绝大多数不是模型的问题,而是链路里某一步偷了懒。完整顺序是:清洗、切片、向量化、入库、检索、重排、拼进提示词。任何一步糊弄,都会在最终回答里被放大成「答非所问」。

  1. 清洗去掉页眉页脚、空白页、重复段落;扫描件先过 OCR,OCR 质量差就先修 OCR,别指望后面的模型兜底
  2. 切片条款类要保完整段落,别从句子中间切开;手册类可以按标题层级切。切片长度和重叠比例要拿几篇真实文档试,看召回结果再定
  3. 向量化与入库确认嵌入模型在你的语种上够用;换嵌入模型就要整库重算,所以选之前先想清楚以后会不会换
  4. 验证准备一批你知道标准答案的问题,逐条看命中的原文片段对不对,这一步比调任何参数都有用

向量库的横向对比看 /stacks/vector-dbs,嵌入模型的口径看 /embeddings。判断标准很朴素:拿同一批问题在不同切片参数下各跑一遍,看命中片段是否包含答案原文,而不是只看最终回答读起来顺不顺。

跑起来之后:超时、并发和降级

本地推理的并发能力很有限,同一张卡上多路请求会互相拖慢。客户端要设排队和重试上限,而不是无脑并发,否则用户体感就是「越用越慢」。判断标准是压几个并发上去,看单次响应时间涨了多少,涨得离谱就必须加队列。

检索和生成要分别设超时,这点很关键。检索慢通常是索引结构或磁盘的问题,生成慢才是算力不够。混在一起看就会误判成「机器太差该换卡」,其实调索引就能解决。

  • 检索超时:超过阈值就先返回「没找到相关材料」,别让整条请求卡死
  • 生成超时:按你自己能接受的等待上限设,宁短勿长
  • 降级路径一:显存被打满时切到更小的量化模型
  • 降级路径二:本地服务不可用时切到 API,前端不用改
  • 监控项:单次检索耗时、单次生成耗时、排队长度,三个分开看

延迟基线可以先到 /tools/speed-test 量一遍,把「正常时该多快」记下来,之后出现变慢才知道是哪里变了。另外提醒一句:如果你把文档留在本地、只把问题发去 API,隐私边界和纯本地是两回事,这点要在动手前就想清楚,而不是部署完才发现。

本地部署的收益是可控,代价也是可控——两头都建立在你能说清链路每一步在干什么。
下一步先量清自己的显存和文档量,再去对照可选方案和当时的硬件数字,能省掉一次推倒重来。

常见问题

只有一张消费级显卡,能不能同时跑 DeepSeek 和知识库?

能跑通,但要把预期放低。模型用较小量化版本、Embedding 放 CPU、文档量控制在一个可控规模内,问答体验是够用的;一旦文档量上去或者要多人同时用,瓶颈会先出现在显存和并发上。先按单人单路来设计,需要多人时再考虑拆服务或换 API。

知识库答得不准,是模型不行还是检索不行?

先查检索,再怀疑模型。把召回的片段单独打出来看,如果片段里根本没有答案,那是切片或向量化的问题,换再大的模型也没用;如果片段对但回答仍跑偏,才轮到调提示词或换模型。这个顺序能省掉大部分无效折腾。具体指标口径可参考 /embeddings 的说明。

本地部署和直接用 API 相比,什么时候值得折腾?

看两点:数据能不能出本地,以及调用量是否长期稳定。资料敏感、不方便外发,本地是硬需求;调用量大且持续,本地在长期成本上可能更划算。反过来,偶尔用、文档多变、对延迟敏感的场景,接 API 更省事。判断前可以到 /official-api 和 /compute/tco 把当时的数字摆在一起比。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。