DB-GPT 接入 Ollama:本地运行开源模型的完整配置指南
【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI + Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT
导读
本文围绕 DB-GPT 项目提供的 Ollama 本地模型接入方案展开,完整讲解从安装 Ollama、拉取模型、安装proxy_ollama依赖,到编写 configs/dbgpt-proxy-ollama.toml 配置并启动服务端的全过程。读完本文,你将能够在自己的机器上通过 Ollama 运行 DeepSeek-R1、Qwen2.5、Llama 3.1 等对话模型与 bge-m3、nomic-embed-text 等嵌入模型,让 DB-GPT 的 RAG、Agent 等能力全部跑在本地,并掌握常见故障的排查方法。
一、为什么选择 Ollama 作为 DB-GPT 的本地推理后端
DB-GPT 支持丰富的模型接入方式,其中proxy/<platform>这一类 provider 用于对接第三方或本地推理服务。Ollama 正是本地推理中最易上手的一种:它以极简的命令行完成模型下载与启动,屏蔽了显存分配、模型格式转换等细节,适合在个人开发机、离线环境或对数据隐私有要求的场景中为 DB-GPT 提供 LLM 与 Embedding 能力。
从源码角度看,DB-GPT 将 Ollama 封装为一个标准的代理客户端OllamaLLMClient,定义在 packages/dbgpt-core/src/dbgpt/model/proxy/llms/ollama.py,并在 packages/dbgpt-core/src/dbgpt/model/proxy/init.py 中完成懒加载注册。它底层通过官方ollamaPython 包的Client以流式方式调用/chat接口,因此 DB-GPT 侧不需要加载任何模型权重,模型推理全部在 Ollama 进程中完成。
二、环境准备(Prerequisites)
在开始之前,需要满足两个前提条件:
- Ollama 已安装并处于运行状态:Ollama 以独立服务进程运行在
localhost:11434(默认端口),DB-GPT 只作为 HTTP 客户端访问它。 - DB-GPT 已安装
proxy_ollama扩展依赖:该 extra 会一并安装ollamaPython 客户端包。若缺少该包,OllamaLLMClient.sync_generate_stream会抛出Could not import python package: ollama的 ValueError,提示你执行pip install ollama(见 ollama.py)。
2.1 安装 Ollama
根据操作系统选择对应的安装方式:
- macOS:从 ollama.ai 下载安装包,或使用 Homebrew:
brew install ollama- Linux:使用官方安装脚本(与高级用法文档 docs/docs/installation/advanced_usage/ollama.md 中的方式一致):
curl -fsSL https://ollama.ai/install.sh | sh- Windows:从 ollama.ai 下载安装程序,安装后 Ollama 会作为后台服务运行。
安装完成后,使用ollama serve启动服务(若已作为系统服务运行则可跳过),默认监听127.0.0.1:11434。
2.2 拉取模型(Pull models)
Ollama 的模型以"标签(tag)"方式管理,需要先拉取到本地才能使用。至少需要两类模型:
# 拉取一个对话模型(Chat/LLM) ollama pull deepseek-r1:1.5b # 拉取一个嵌入模型(Embedding) ollama pull bge-m3:latest提示:执行
ollama list可以查看本地已下载的全部模型及其大小、标签信息。
三、安装 DB-GPT 依赖
DB-GPT 仓库使用uv管理依赖。为了让 Ollama 代理、RAG 检索、向量存储与内置 dbgpts 插件都能正常工作,官方推荐一次性同步以下 extras:
uv sync --all-packages \ --extra "base" \ --extra "proxy_ollama" \ --extra "rag" \ --extra "storage_chromadb" \ --extra "dbgpts"参数说明:
--extra "proxy_ollama":安装 Ollama 代理客户端所需依赖(核心);--extra "rag":启用 RAG 检索增强,需要嵌入模型配合;--extra "storage_chromadb":使用 Chroma 作为默认向量库(与 configs/dbgpt-proxy-ollama.toml 中的type = "chroma"对应);--extra "dbgpts":安装内置 DB-GPT 插件与技能;--all-packages:同步仓库内所有 Python 包(dbgpt-core、dbgpt-serve 等)。
该命令同时出现在入门文档 docs/docs/getting-started/providers/ollama.md 与进阶文档 docs/docs/installation/advanced_usage/ollama.md 中,是官方认可的标准安装方式。
四、编写模型配置文件
DB-GPT 以 TOML 文件集中声明要加载的模型。官方在仓库中提供了现成模板 configs/dbgpt-proxy-ollama.toml,完整内容如下:
[system] # 语言从环境变量读取(由 hook 设置) language = "${env:DBGPT_LANG:-en}" api_keys = [] encrypt_key = "your_secret_key" # 服务端配置 [service.web] host = "0.0.0.0" port = 5670 [service.web.database] type = "sqlite" path = "pilot/meta_data/dbgpt.db" [rag.storage] [rag.storage.vector] type = "chroma" persist_path = "pilot/data" # 模型配置 [models] [[models.llms]] name = "deepseek-r1:1.5b" provider = "proxy/ollama" api_base = "http://localhost:11434" api_key = "" [[models.embeddings]] name = "bge-m3:latest" provider = "proxy/ollama" api_url = "http://localhost:11434" api_key = ""4.1 关键配置项详解
| 配置项 | 位置 | 含义 | 默认值/建议值 |
|---|---|---|---|
name | models.llms/models.embeddings | 模型在 DB-GPT 中的注册名,必须与ollama list中已拉取的模型标签完全一致,否则会报 "Model not found" | 无 |
provider | 同上 | 模型提供方标识,Ollama 固定写proxy/ollama | proxy/ollama |
api_base | models.llms | Ollama HTTP 服务地址,DB-GPT 会用它构造ollama.Client(api_base) | http://localhost:11434 |
api_url | models.embeddings | 嵌入模型的访问地址(Embedding 参数命名与 LLM 不同) | http://localhost:11434 |
api_key | 两者 | 本地 Ollama 无需鉴权,可留空字符串 | "" |
说明:如果 Ollama 运行在其他机器上,只需把
api_base/api_url改为http://<目标主机>:11434。api_key在本地场景留空即可。
4.2 源码视角:Ollama 代理是如何工作的
从源码结构看,Ollama 接入的核心是一条清晰的调用链:
- 参数类
OllamaDeployModelParameters(ollama.py)继承自LLMDeployModelParameters,硬编码provider: str = "proxy/ollama",并把api_base默认值设计为环境变量可覆盖的${env:OLLAMA_API_BASE:-http://localhost:11434}——这意味着你也可以通过设置OLLAMA_API_BASE环境变量来指向远程 Ollama,而无需修改配置文件。 - 客户端
OllamaLLMClient在new_client中读取real_provider_model_name(即配置中的name,若设置了backend则优先用backend)与api_base构造实例;default_model返回该模型名。 - 流式生成:
sync_generate_stream内部调用官方ollama.Client.chat(model=..., messages=..., stream=True)逐块累积响应内容,并通过parse_chat_message(content, extract_reasoning=is_reasoning_model)分离正文与思考过程(reasoning content),将结果包装成标准ModelOutput流式返回。当请求上下文中标记is_reasoning_model(如 DeepSeek-R1 这类推理模型)时,思考链会被单独提取出来展示。 - 适配器注册:文件末尾通过
register_proxy_model_adapter注册预置元数据,例如deepseek-v3(context_length 64K)与deepseek-r1:671b(context_length 64K、支持 function calling),其余模型可从 ollama.com/search 查询后自行在配置中声明。
上述通用参数(context_length、backend、reasoning_model、concurrency等)均定义在LLMDeployModelParameters(packages/dbgpt-core/src/dbgpt/core/interface/parameter.py),你在配置文件中为对应模型显式设置context_length或reasoning_model即可覆盖自动探测值。
五、推荐模型选择
5.1 对话模型(Chat/LLM)
| 模型 | 拉取命令 | 大小 | 特点 |
|---|---|---|---|
| DeepSeek-R1 1.5B | ollama pull deepseek-r1:1.5b | 约 1 GB | 体积小、速度快,具备推理(reasoning)能力 |
| Qwen2.5 7B | ollama pull qwen2.5:7b | 约 4.7 GB | 综合能力均衡,中文友好 |
| Llama 3.1 8B | ollama pull llama3.1:8b | 约 4.7 GB | Meta 最新一代开源模型 |
| Mistral 7B | ollama pull mistral:7b | 约 4.1 GB | 通用场景响应快 |
5.2 嵌入模型(Embedding)
| 模型 | 拉取命令 | 特点 |
|---|---|---|
| bge-m3 | ollama pull bge-m3:latest | 多语言,兼顾中英文检索,适合 RAG 场景 |
| nomic-embed-text | ollama pull nomic-embed-text | 以英文为主 |
嵌入模型用于知识库问答(RAG)中的文档向量化。若只做纯对话,配置models.embeddings一节可以省略;但要让 docs/docs/modules/rag.md 中的知识库能力工作,则必须配置嵌入模型。
六、启动服务端
启动顺序有严格要求:先启动 Ollama,再启动 DB-GPT。
# 1. 启动 Ollama(若未作为服务运行) ollama serve # 2. 启动 DB-GPT,显式指定 Ollama 配置 uv run dbgpt start webserver --config configs/dbgpt-proxy-ollama.toml--config参数指向第 4 节编辑好的配置文件。服务启动后,Web 界面默认监听0.0.0.0:5670(与配置中[service.web]一致),浏览器访问http://localhost:5670即可开始对话或创建知识库应用。
七、故障排查(Troubleshooting)
| 问题 | 解决方案 |
|---|---|
| Connection refused(连接被拒绝) | 确认 Ollama 已在运行:执行ollama serve;同时核对api_base/api_url中的主机与端口(默认11434) |
| Model not found(模型不存在) | 先拉取模型:ollama pull model-name,并确保配置中的name与模型标签完全一致(例如deepseek-r1:1.5b不能简写为deepseek-r1) |
| 响应缓慢(Slow responses) | 尝试更小的模型,或确认 GPU 已被 Ollama 使用(ollama ps可查看当前加载的模型与显存占用) |
| 内存/显存不足(Out of memory) | 改用更小的量化版本,例如ollama pull qwen2.5:7b-q4_0(Q4 量化可显著降低资源占用) |
若日志中出现Ollama Response Error字样,可关注异常详情中的错误码与描述——这来自OllamaLLMClient对ollama.ResponseError的捕获处理(ollama.py),通常指向模型名称错误或服务未就绪。
八、进一步探索
- 完整安装与首次运行流程见 docs/docs/getting-started/quick-start.md;
- Ollama 的更多进阶配置(如自定义模型文件、GPU 设置)可参考 docs/docs/installation/advanced_usage/ollama.md;
- 其他模型提供商(OpenAI、DeepSeek、Tongyi 等)的接入方式见 docs/docs/getting-started/providers/index.md,仓库 configs 目录下也提供了对应 TOML 模板;
- 想进一步了解 Ollama 代理实现细节,可直接阅读 packages/dbgpt-core/src/dbgpt/model/proxy/llms/ollama.py。
【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI + Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考