想给自己或小团队弄个本地知识库,又不想按月付 API 的钱,Ollama 加 FastGPT 是最常被提起的组合。卡点通常不在装不装得上,而在三件事:哪个环节该配什么模型、向量库和重排怎么选、跑起来慢或答不准时先动哪一处。这篇按部署顺序走一遍,每步给出判断标准和可回退的动作,硬件不够时也告诉你砍哪一刀。
想给自己或小团队弄个本地知识库,又不想按月付 API 的钱,Ollama 加 FastGPT 是最常被提起的组合。卡点通常不在装不装得上,而在三件事:哪个环节该配什么模型、向量库和重排怎么选、跑起来慢或答不准时先动哪一处。
这篇按部署顺序走一遍,每步给判断标准和可回退的动作。核心思路是把整条链路拆成「模型跑起来」「文档进得去」「答案出得来」三段,哪段出问题就在哪段停住排查,硬件不够时也告诉你先砍哪一刀。
先分清谁干什么:Ollama 管模型,FastGPT 管流程
- Ollama
- 只负责把模型跑起来并暴露本地接口,对话、向量、重排三类模型各要单独拉一个,别指望一个模型全包
- FastGPT
- 负责文档解析、切片、向量化、检索、拼提示词这条链路,它自己不产模型,得指向 Ollama 或别的兼容接口
- 本地接口
- FastGPT 填模型地址时用的那串本地 IP 加端口,验证它通不通是整条链路的第一个检查点
- 第一步:先单独验证 Ollama 接口能通用命令行拉一个模型、发一条测试请求,确认能拿到回复。这一步不过,后面所有 FastGPT 报错都别急着排查。
- 第二步:再起 FastGPT 本体服务起来后先只用本地默认配置跑通一次对话,确认界面能正常响应,再动知识库相关的配置。
- 第三步:最后在 FastGPT 里逐个填模型地址对话、向量、重排三类分别填,填完一类测一类,避免一次填完出错后分不清是谁的问题。
什么情况下不适用:只是想让模型读几份 PDF 随手问问,用更轻的单体工具更快。FastGPT 的价值在多用户、多知识库和流程编排,如果就你一个人偶尔查查资料,投入产出比不划算。
三类模型怎么配:对话、向量、重排各挑一个
| 环节 | 决定什么 | 先动的条件 | 不适用的情况 |
|---|---|---|---|
| 对话模型 | 回答质量上限 | 召回段落正确但表述差 | 显存实在不够时优先降它 |
| 向量模型 | 能不能召回对的段落 | 答非所问、找不到相关内容 | 中文语料少时换档见效慢 |
| 重排模型 | 召回结果排得准不准 | 召回对了但排在后面没被用上 | 机器带不动可直接关掉 |
选型优先级:向量和重排先按中文语义检索表现挑,对话模型再按你的显存余量挑。嵌入模型这块可以对照站内嵌入模型目录看当时的对比口径,别凭感觉选。
- 小显存机器可以把对话模型换成更小的量化档,向量模型单独常驻,重排模型按需加载或直接关掉
- 关掉重排后召回精度会掉,属于明确取舍,适合对答案要求不高的内部查询场景
- 判断标准:先用同一批文档跑十来个真实问题,觉得答非所问时先看召回段落对不对,别急着换对话模型
- 对话模型换档后记得重跑一遍测试问题,量化档不同,回答风格和稳定性都会有变化
需要提醒的是,模型规模、量化档、显存占用这些数字随硬件和版本会变,具体对照站内模型资料库和显卡规格库按你的卡型算一遍,别按别人的配置照抄。
切片与检索参数:答不准多半出在这一层
切片长度、重叠比例、单次召回条数是三个最该动的旋钮。切片太碎会丢上下文,模型拿到半句话答非所问;太长会让向量表征变糊,检索时匹配不上具体问题。这三个参数没有万能值,跟你的文档类型强相关。
- 先看召回条数问一个问题,看返回的候选段落里有没有正确内容。完全没有就加召回条数,加完再看。
- 再开重排候选里有正确段落但排在后面没被用上,就开重排把相关的往前排。
- 重排压不住就回头改切片重排开了还是混进无关内容,说明切片粒度本身有问题,回到文档解析和切片配置重新调。
不适用的场景:问答型知识库和公文写作型知识库对切片的要求相反。前者要短要准,让检索精准命中;后者要保留完整章节,让模型看到完整上下文。别照抄别人的参数,先想清楚你的知识库用来干什么。
硬件不够时的降级顺序与验收
跑不动是本地部署最常见的现实问题。降级要按顺序来,别一上来就把整个知识库搬回云端。顺序建议:先关重排,再降对话模型的量化档,再把向量模型换成更小的,最后才考虑把整个知识库搬回云端按量调用。
| 降级动作 | 影响什么 | 适合什么时候做 |
|---|---|---|
| 关重排 | 召回精度下降 | 显存紧张且对答案要求不高 |
| 降对话模型量化档 | 回答质量和稳定性下降 | 显存不够但还想本地跑 |
| 换更小向量模型 | 召回准确率下降 | 前面两步做完还是卡 |
| 搬回云端按量调用 | 不再本地推理,开始产生费用 | 数据不出内网不是硬要求时 |
- 接口能不能通:三类模型地址逐个测,确认都能响应
- 召回段落是不是相关:拿真实问题看返回候选,别只看最终答案
- 同一问题重复问两次答案是否稳定:不稳定说明模型或检索有波动
- 加载一批新文档后旧问题还答不答得对:验证新数据没把旧索引冲乱
显存与并发心里要有数,具体占用对照站内部署测算和显卡规格库按你的卡型算一遍,别按别人的配置猜。不适用的情况:数据不出内网是硬要求时,降级到云端这一步直接划掉,只能在本地继续砍模型规模,代价是回答质量会明显下降。
本地知识库的难点从来不是装得上,而是知道出问题时先动哪一处。下一步先确认你要跑的模型在你卡上是什么档位,再决定要不要开重排;模型占用和显存对照可以到站内模型资料库与部署测算页面核对当时的数字,避免配好了才发现跑不动。→
常见问题
Ollama 和 FastGPT 必须装在同一台机器上吗?
不必。FastGPT 只要求能访问到 Ollama 的本地接口地址,同一台最省事,分开部署则要确认地址填的是对方能访问到的地址而不是本机回环。跨机器时优先检查网络连通和端口放行,模型加载慢多半是带宽问题,不是配置问题。
跑起来回答很慢,先改哪里?
先确认向量化和重排是不是每次问答都在现算,能缓存就缓存;再看对话模型是不是被分到了 CPU 上跑。最后才考虑换更小的模型或更低量化档。真要比速度,用站内接口测速先量出你的本地延迟基线,再谈优化。
为什么导入了文档,问问题还是答不出来?
九成出在文档解析或切片,而不是模型。先确认文档有没有被成功解析成文本,再单独搜一下关键词看能不能召回对应段落。召回到但答案不对,是对话模型或提示词的问题;召回不到,就是切片和向量这一层的问题。