deepseek本地部署+联网搜索功能

模型与算力

给本地跑的 DeepSeek 接上联网检索,让回答能引用实时网页,讲清三种接法、检索链路、引用校验与常见失败排查。

本地部署 DeepSeek 之后最常遇到的一个尴尬:模型答得挺顺,但一问近期的事就编,因为它只记得训练时那点东西。这篇不讲怎么装模型,只讲怎么在本地这套环境里给它补上联网检索这一环——从选哪种接法,到检索结果怎么喂回模型,再到引用对不上怎么查。

本地把 DeepSeek 跑起来之后,很多人第一件事是问它「最近有什么新闻」,结果它张嘴就来一段听起来很合理、点开却完全没有的东西。这不是模型坏了,而是它的知识停在了训练结束那天,后面发生的事它一概不知道。搜索这一环要补的就是这个缺口:让它先去网上捞一段真实内容,再基于这段内容回答,并且告诉你这段话是从哪儿来的。

这篇不聊怎么装模型、怎么选量化,只聊联网检索这一层。顺序是:先弄清自己到底要联网还是要知识库,再挑一种接法,然后看一条检索链路里哪几段容易出问题,最后给一套排查顺序。判断标准会写清楚,什么场景下不适用也会标出来。

这两件事经常被混为一谈,结果就是拿着一套向量库去回答「今天发生了什么」,或者拿搜索接口去查公司内部报销流程,两边都不对味。区分办法很简单:看你的问题需不需要互联网上公开的、且时间敏感的信息。需要,就是搜索的活;不需要、只跟你自己手上的资料有关,那是知识库的活。

你的需求该走哪条路判断信号
查公开的实时信息联网检索问题里带时间词、价格、人事变动、新闻事件
查自己公司或个人的文档本地知识库(向量检索)问的是流程、规范、合同、产品说明
查一个固定领域的稳定知识长上下文塞入或微调内容变动很小,反复问同一批问题
纯推理、代码、翻译什么都不用加加搜索只会变慢,还容易引入无关噪声

还有一类情况明确不需要联网:写代码、做翻译、格式转换、纯逻辑推导。这些任务对时效不敏感,检索结果反而会挤占上下文、拉长响应时间、偶尔把模型带偏。给这类任务保留一个「不搜」的开关,比默认永远开着搜索更实用。

三种接法:谁去搜、谁来决定搜不搜

接法上的差别其实就一个:搜索这个动作由谁发起。是模型自己判断要不要搜,还是你的程序每次都先搜、再把结果喂给模型,还是由聊天客户端那层去搜。三种做法各有各的坑,选错了后面调起来会很别扭。

接法一:模型主动调用搜索工具
模型通过工具调用自己决定搜不搜、搜什么,体验自然,但对模型的工具调用能力要求高,小模型容易乱调或干脆不调。
接法二:中间层固定检索
你的程序先把查询发出去,拿到结果拼进提示词再送给模型,模型只负责读。稳定、可控、好复现,代价是每次都搜,可能搜一堆没用的。
接法三:客户端插件式联网
由聊天界面那一层负责检索,模型换不换都不影响,改造成本最低,但你很难看清它到底搜了什么、塞了什么。
  • 单机自用、模型本身工具调用还行:选接法一,交互最顺,省得每次手动触发。
  • 给团队用、要结果稳定可复现:选接法二,检索逻辑在你手里,出问题好定位。
  • 只想赶紧用上、不想动推理层:选接法三,代价是排查时比较黑盒。
  • 模型参数量偏小、量化比较激进:优先接法二,别赌它的工具调用成功率。

一条检索链路由哪几段组成

很多人的联网方案不生效,不是某一环彻底坏了,而是六段里有两三段都只做到六十分,叠起来就不行了。把这六段拆开,每段单独跑一遍,最短的那块板会自己冒出来。下面按数据流顺序排。

  1. 查询改写把「它现在多少钱」这种带指代的问题,结合上文改写成能直接丢进搜索引擎的独立句子。验证办法:把改写后的句子拿给别人看,对方能不能看懂你在问什么。
  2. 调用搜索接口搜索引擎 API 或者自建抓取都行。重点确认返回的是摘要还是正文全文——只有摘要的话,很多细节问题答不了。
  3. 抓取与正文提取拿到链接后把导航栏、广告、页脚、相关推荐统统去掉,只留正文。验证办法:把提取结果打印出来自己扫一眼,看有没有混进一堆菜单文字。
  4. 切分与重排长网页要切成块,切完按和问题的相关度排个序,只挑靠前的几块塞进去。塞太多会稀释重点,具体塞多少自己实测调。
  5. 组装提示词明确告诉模型这段是检索结果、那段是你原有的知识,并要求它标注来源编号。验证办法:把最终拼好的完整提示词打日志看一眼。
  6. 模型生成与引用模型基于检索结果作答并给出编号链接。验证办法:随机点开一两条链接核对原文。

让本地模型学会「决定要不要搜」

走接法一的话,核心工作其实是写提示词和工具描述,不是改代码。同一个模型,工具描述写得清楚不清楚,调用成功率差别很大。别一上来就把五六个工具全丢给它,先从只暴露一个搜索工具开始。

  • 工具描述里写清楚三件事:什么情况下该用、参数怎么填、返回什么结构。描述含糊,模型就乱调。
  • 系统提示词写死规则:涉及时间、价格、人物、新闻必须搜;纯推理、代码、翻译不要搜;搜完必须带来源。
  • 限制单次对话里的搜索次数上限,防止它反复搜同一个词绕不出来。
  • 明确禁止把检索结果当成自己的知识直接复述,要求它区分「这是搜到的」和「这是我判断的」。
  • 日志里记录每次调用的参数和返回,出问题时有据可查。

什么情况下不适用:模型参数量很小、量化档位压得很低时,工具调用成功率可能低到没法日常使用,表现是该搜不搜、参数填错、或者把工具名都拼错。这种时候别硬扛,退回接法二,让程序替它决定搜不搜,模型只负责读结果。

引用怎么给、怎么验

引用这件事不能只靠模型自觉。要在输出格式上做约束:正文里标编号,末尾统一列出来源列表,每条包含标题和链接。这样你才有东西可核对。没有结构化引用,模型给你来一句「据某网站报道」,你连去哪儿查都不知道。

失真类型长什么样怎么发现
链接对但内容不支持点开是真的页面,但原文没说过这句话逐句比对原文和模型表述
链接指到首页给的是网站主页,不是具体那篇文章看链接路径有没有具体文章层级
引用了旧版本页面内容已更新,模型引用的是缓存快照看页面上的更新时间
把摘要里的猜测当结论检索结果本身就是推测性表述,模型当成事实复述注意原文里的「可能」「据悉」这类词

工程上的兜底是在提示词里写清楚:检索结果里没有依据的,就直说没查到,别硬答。抽查是必须做的一步,随机点开两三条核对。如果三条里就有一条对不上,先别调模型参数,回头修检索链路和提示词。

延迟和开销:联网会慢多少、多花什么

联网带来的额外耗时集中在三段:搜索接口的响应、网页抓取、以及塞进上下文后模型多读的那一截 token。其中网页抓取往往是最不稳定的一段,同一个站有时候秒回,有时候卡很久。所以设超时、设失败降级(抓不到就退回只用摘要)比单纯优化模型更有效。

本地部署和在线方案的成本口径完全不一样。本地方案主要花的是电费和你等结果的时间,在线方案是按调用量计费。想对比的话,去站内的价格与用量相关页面看当时的口径,别拿两套账直接比大小。检索结果塞进去多少字,等于每次都多读一截上下文,对本地推理速度的影响是实打实的,具体慢多少自己实测一遍最准。

  • 需要时效准确性的问答,慢一点值得。
  • 日常闲聊、代码补全、翻译,别开联网。
  • 同一个链接短时间内反复命中,正文抓一次缓存下来,别重复抓。
  • 抓取失败要有降级路径,别让整个流程卡死在一个网页上。
  • 多人共用时给搜索层单独限流,它比推理层更容易先崩。

不生效时的排查顺序

联网效果不好时,最常见的错误是直接去换模型。其实问题多半在前面几步。按下面这个顺序走,能省下大量试错时间。原则只有一条:改一处、验一处,别同时动三个地方。

  1. 先测搜索接口本身把模型摘出去,单独用脚本调一次搜索接口,确认能拿到结果。拿不到就是网络或配额问题,跟模型无关。
  2. 看检索结果质量搜出来的内容对不对路、正文有没有抓全、是不是被登录墙挡在外面只拿到一段提示。
  3. 看提示词组装把最终拼好的完整提示词打日志,确认检索内容真的进到上下文里了,而不是拼装环节悄悄丢了。
  4. 看模型输出区分两种情况:它根本没读到检索内容,还是读到了但不用。前者是链路问题,后者是提示词问题。
  5. 最后才动模型和量化前面都没排完就换模型,大概率白换。换完记得重新验证工具调用和提示词是否还适用。

和本地部署本身相关的几个注意点

接上搜索之后,对本地部署环境的要求会有一些变化,这点容易忽略。原来跑得挺顺的配置,开了联网之后可能就开始报上下文超限或者响应变慢,不是因为模型变差了,是因为每次提问带的东西变多了。

  • 上下文窗口要留余量:检索结果会占掉一大截,注意输入和输出的额度分配。
  • 并发场景要给搜索层单独限流,接口频率限制比推理层更容易先撞上。
  • 抓回来的网页内容会原样进提示词,敏感场景要自己加一层过滤,别全交给模型判断。
  • 换模型或换推理框架后,工具描述和提示词写法可能要跟着调,别默认旧配置还能用。
  • 显存怎么算、量化怎么选,去看站内的部署测算和加速卡规格页面按当时的数字核对,这里不写死。
本地模型给你的是可控和隐私,联网检索给你的是时效。这两样不会自动叠在一起,中间的链路得你自己搭。
下一步想对比自己搭和直接用现成中转服务的差距,可以先去站内的中转站导航页和模型价格页看看当前的选项,再决定哪些任务留在本地、哪些走在线。

常见问题

本地 DeepSeek 一定要联网才能用吗?

不一定。纯推理、写代码、翻译、文档总结这类任务,模型自己的知识就够了。只有涉及近期事件、实时价格、人物变动这类时效性问题,不联网就一定会编。建议做成开关,按任务手动开,而不是常驻开启。

联网检索是模型自己去搜,还是我要手动喂给它?

两种都行,看你选的接法。让模型自己调工具最自然,但需要模型有工具调用能力,小参数模型容易失灵。中间层固定检索更稳,程序先搜好再拼进提示词,模型只负责读。自用图省事可以选前者,要稳定复现选后者。

为什么加了搜索,回答还是老样子?

按顺序查三件事:搜索接口本身通不通;抓回来的正文是不是空壳或登录墙页面;最终拼好的提示词里到底有没有检索内容。用日志把提示词打出来看一眼,多数问题在这一步就露馅了,不用急着换模型。

模型引用的链接点开对不上内容怎么办?

先抽查三五条,分清是链路问题还是模型问题。如果检索结果本身就不支持那句话,是搜索和切分的问题;如果结果支持但模型说岔了,是提示词没约束好。提示词里要写清楚「检索结果里没有的就说不知道」,比逼它必须回答安全得多。

联网之后回答明显变慢,正常吗?

正常。搜索响应、网页抓取、多读的上下文 token 都要时间,其中抓取最不稳定。想缓解就两招:对同一个 URL 做短期缓存,别重复抓;控制塞进上下文的长度,不是越多越好。具体慢多少跟你的机器和搜索结果长度有关,自己实测一遍最准。

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