ollama open webui 本地知识库

模型与算力

用 Open WebUI 给本地 Ollama 模型接上知识库和联网搜索,讲清接线顺序、文档切分、检索设置和查不到答案时的排查路径。

本地 Ollama 跑起来能聊天,但一问公司内部资料就开始瞎编,这是大多数人卡住的地方。问题通常不在模型本身,而在 Open WebUI 里那几项没配对:文档怎么进库、向量模型用哪个、检索召回几条、联网搜索走哪条通道。这篇按接线顺序把这几步拆开,每步给能直接照做的动作和验证方法,最后附一张查不到答案时的排查表。

本地 Ollama 能聊天,不代表它能答对内部资料。一问公司制度、产品文档就开始编,八成不是模型不行,而是 Open WebUI 里几根线没接对:文档怎么进库、用哪个向量模型、检索召回几条、联网搜索走哪条通道。这几个环节只要有一个没配好,表现都是「答得很像但不靠谱」。

下面按接线顺序拆,每一步都给你能照着做的动作和验证方法。原则是先跑通最简单的链路,再往上加东西,一次只改一个变量,否则出错时分不清是哪一步坏的。凡是涉及具体模型能力、价格、可用服务清单这类会变的信息,都到站内对应页面核对当时的数字,别照抄旧结论。

先把三根线接对:模型、向量库、搜索通道

Open WebUI 背后其实挂着三条独立通道:对话模型、向量(嵌入)模型、联网搜索。新手最容易犯的错是三条一起配,配完发现不对,也说不清坏在哪条。正确做法是先只接对话模型,确认能正常聊天,再动另外两条。

  1. 先只连对话模型确认 Ollama 服务端口开着,Open WebUI 的模型地址指向同一台机器的这个端口,然后发一句话测试。能正常回,说明第一根线通了,再进行下一步。
  2. 单独拉一个嵌入模型向量化要另找一个嵌入模型,别指望对话模型兼职。中文资料优先挑中文语料训过的嵌入模型,具体选型口径去站内模型目录里对着看,别凭感觉随便挑。
  3. 搜索通道单独判断联网搜索是另一条路,勾选后请求先出外网再回填。如果这台机器不通外网,这条线直接别开,否则表现是长时间转圈或超时,还以为是模型卡了。

文档进库:切分粒度比模型大小更影响体验

很多人以为换个更大的模型就答得准,其实文档怎么切、怎么进库,对结果的影响往往更直接。切得太粗,一个片段里混着好几段内容,关键词命中被稀释;切得太细,一句话被拆成两半,检索出来也是残缺的。

  • 先拿一份几十页的文档试水,看它是整篇入库还是按段落切,感受一下切分粒度再决定要不要调
  • 一般让每个片段覆盖一个完整小节最稳,太长太短都不好,重点看检索出来的片段本身是不是一段完整意思
  • 扫描件 PDF 没有文字层,传进去检索永远是空的。传之前先用能选中文字的方式确认一遍,选不中就先用 OCR 过一遍再传
  • 文件命名按「部门-文档类型-版本」来,多份同主题文档放同一个知识库,别把全公司资料一股脑灌进一个库里

这里没有一个万能粒度,什么情况下不适用?如果文档本身就是零散的表格、FAQ 短条目,按小节切反而可能把一个问题拆开,这时候按条目切更合适。判断标准很朴素:随便搜一个你知道答案的问题,看召回的片段读起来是不是完整的一段话。

检索参数怎么调:召回条数、相似度阈值、要不要加混合检索

检索这块有三个旋钮最关键:召回条数、相似度阈值、以及要不要开混合检索。调这三样的思路是一样的,一次只改一个,用同一组固定问题复测,别改完凭单次感觉说好或不好。

参数调大的效果调小的效果什么时候别动它
召回条数塞进更多片段,但也可能把相关内容挤掉、吃满上下文只给少量片段,漏答风险变高同一批测试问题还没跑完时
相似度阈值过滤掉弱相关片段,噪声少门槛低,容易把无关段落喂给模型;设太高又会「库里有却答不出」库里文档本身质量参差不齐时
混合检索关键词和向量一起上,对型号、编号、专有名词更友好纯语义检索,字符串精确匹配容易掉链子库里全是自然语言长文时未必划算

建议从一个偏小的召回条数起步,逐档往上加,同时看回答里引用的片段对不对,而不是只看回答像不像。相似度阈值改动时固定同一组问题,前后对照才有意义。含大量型号、编号、专有名词的资料,混合检索通常更稳。

联网搜索解决的是时效问题,不是资料问题。需要当前政策、最新公告这类信息时开它有价值;纯内部资料问答建议关掉,否则模型可能拿网上的内容盖过你库里的原文,你反而查不到自己想要的答案。

  • 按需临时开,比全局常开更省事,只有偶尔查时效信息时勾一下就行
  • 搜索通道和对话模型可以分开配,接哪家搜索服务、要不要填 key,去站内工具目录挑标了联网能力的条目,别硬拼路径
  • 开了会明显变慢,因为多了一次外部请求,对响应速度敏感的场景要权衡
  • 出不了外网的机器,这条线直接别开,避免以为是模型卡住

什么情况下不适用联网搜索?如果你的问题答案本来就该来自内部文档,开了搜索反而引入干扰。判断标准是问自己一句:这个问题的正确答案应该在公网上,还是应该在我自己的库里?答案在库里就别开。

答不出来时的排查顺序

「查不到」这四个字背后可能是四五个不同的原因。别一上来就换模型,按下面这个顺序往下走,每一步都能排除掉一类可能。

  1. 先确认知识库挂上了没很多所谓的查不到,其实是新开的会话没勾选对应知识库,先把这个确认掉,再往下查。
  2. 再做一次检索测试用你知道答案的关键词单独搜一次。搜不出片段,是入库或切分的问题;搜得出但答错,是提示词或阈值的问题。
  3. 看召回片段是不是被截断片段太长、上下文又不够,会导致模型只看到一半。加长上下文仍无改善,就退回减少召回条数试试。
  4. 最后才怀疑模型换一个更擅长遵循指令的模型,用同一批问题复测对照,别凭一次回答就换。判断标准是同一组问题在新模型上是不是稳定变好。

这套顺序的核心是「从外到内」:先排除没挂载、再排除找不着、再排除截断,最后才是模型本身。每一步都留一个可验证的观察点,别靠感觉。

更细的排查动作和对照口径,站内指南中心里有单独一篇,涉及到具体阈值和服务能力时,记得去对应页面看当时的数字。

下一步想把嵌入模型、搜索服务这些部件的当前状态和可选清单对着看,去站内工具目录和模型目录核对一遍,再回来配你的 Open WebUI,能少走很多弯路。

常见问题

Open WebUI 的知识库和微调有什么区别,该选哪个?

知识库是把资料在提问时临时检索出来塞给模型,改资料即时生效、成本低,适合内容常更新、需要给出处的情况;微调是把知识写进权重,适合固定话术和风格。多数内部问答先用知识库,效果不够再考虑微调。

本地知识库为什么经常答得比直接问模型还差?

多半是检索环节没命中。先确认文档有文字层、切分没把关键句拆散,再调召回条数和相似度阈值。检索没召回到,模型只能靠自己的记忆编,看起来就像变笨了。

联网搜索和知识库能同时开吗?

能,但要看优先级。同时开时模型可能用网上搜到的内容压过你库里的原文,内部规定类问答建议只开知识库;需要时效信息再临时开搜索,并在提问里说清优先用本地资料。

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