本地模型方案:Ollama 接入要点与避坑
对话数据不想出本机、预算想压到零、或者单纯想玩开源模型,Ollama 是最顺手的本地方案。整套流程的成本大头在硬件不在配置。
前置:装好 Ollama
在 Ollama 官方站点下载对应系统的安装包,装完后用命令拉一个模型,例如:
ollama pull qwen2.5:7b
验证服务在跑:浏览器访问本机 11434 端口,返回运行中字样即可。
接入对话模型
- 面板「模型提供商」→「对话」→「新增」,类型选 Ollama
- API 地址填 Ollama 服务地址,本机部署就是 http://localhost:11434
- 模型名填刚拉取的模型标签
- 保存后测试连通性
Docker 部署的地址陷阱
这是本页最重要的三行字:容器里的 localhost 指容器自己。AstrBot 跑在 Docker 里时,API 地址填 localhost 连到的是容器内部,永远到不了宿主机上的 Ollama。正确写法:
- Mac / Windows Docker Desktop:http://host.docker.internal:11434
- Linux:http://172.17.0.1:11434(docker0 网关地址,按实际改)
- Ollama 也在容器里:两容器同一网络时直接用容器名,如 http://ollama:11434
同样,Ollama 服务默认可能只监听 127.0.0.1,跨容器访问需要让它监听 0.0.0.0。
接入嵌入模型
知识库需要嵌入模型,Ollama 同样能供:
- 「模型提供商」→「嵌入」→「新增」,选 Ollama
- 模型选嵌入向模型(如 nomic-embed-text 或 bge-m3 类)
- 向量维度按模型实际输出填写,不同模型的向量不能混用
嵌入模型与对话模型是分开配置的两套,不能把聊天模型填进嵌入栏。知识库全流程见搭建知识库。
硬件与能力的现实预期
- 7B 级模型消费级显卡或纯 CPU 可跑,速度尚可;14B 以上开始吃显存
- 本地小模型的工具调用、长指令遵循能力普遍弱于云端大模型,Agent 功能(工具调用、技能执行)建议用支持 function calling 的模型,跑不动就降级回云端
- 本地方案换来的是数据完全不出门,适合隐私敏感或内网隔离场景