如何用 LM Studio 本地服务器同时提供 LLM 与 embedding 模型并接入 PrivateGPT
【免费下载链接】privateGPTComplete API layer for private AI applications on local models: RAG, skills, tools, MCP, text-to-sql, and more. Works with any OpenAI-compatible inference server.项目地址: https://gitcode.com/GitHub_Trending/pr/privateGPT
如果你的目标是完全本地部署,又希望用一个推理服务器同时承担对话(LLM)和向量检索(embedding)两个角色,LM Studio 是文档明确支持的方案之一:它的内置本地服务器暴露 OpenAI 兼容 API,并且支持在 Developer 面板中同时挂载一个聊天模型和一个 Embedding model,两者共用同一个http://localhost:1234端点。PrivateGPT 侧只需要设置OPENAI_API_BASE,两类模型都会通过自动发现机制在启动时找到。本文覆盖从安装 LM Studio、下载两类模型、启动双模型服务器,到启动 PrivateGPT 并验证可用的完整路径,适用环境为 macOS / Windows / Linux 上的 LM Studio 桌面应用,以及包安装、本地 uv 或 Docker 三种 PrivateGPT 运行方式。
准备条件:安装 LM Studio 并下载两类模型
- 从 LM Studio 官网(lmstudio.ai)下载并安装桌面应用,支持 macOS、Windows 和 Linux。
- 打开 LM Studio,进入Discover标签页(放大镜图标),分别下载两类模型,文档给出的示例组合是:
- LLM:搜索
unsloth Qwen3.5-35B-A3B,选择一个 Q4 量化(约 18 GB); - Embeddings:搜索
mxbai-embed-large。
- LLM:搜索
- 点击模型,选择量化版本(文档提示 Q4_K_M 是一个不错的默认选择),然后点击Download。
这一步只需要做一次。之后切换模型时不必重新安装任何东西,直接在 Developer 面板的下拉框里换。
关键步骤:在同一个服务器中同时挂载 LLM 与 Embedding model
这是本场景的核心操作:
- 点击左侧边栏的Developer标签页(
</>图标)。 - 在模型下拉框中选择你下载的聊天模型。
- 在 Developer 面板中向下滚动,在 "Embedding model" 区域加载第二个模型(例如
mxbai-embed-large)。不加载这个第二个模型,服务器就只提供 LLM 能力,PrivateGPT 的检索相关功能将没有 embedding 模型可用。 - 点击Start Server。默认服务器地址是
http://localhost:1234。
启动后用以下命令确认服务器已经同时暴露了 LLM 和 embedding 两个模型:
curl http://localhost:1234/v1/models注意 LM Studio 用文件名作为模型 ID,后续配置里引用的模型名必须是该命令响应中id字段的值。
接入 PrivateGPT:只需一个 OPENAI_API_BASE
由于 LLM 和 embedding 共用同一个端点,PrivateGPT 只需设置OPENAI_API_BASE(不需要OPENAI_EMBEDDING_API_BASE)。embedding 模型的自动发现默认开启(embedding.auto_discover_models默认为true,见 settings.yaml 中auto_discover_models: ${PGPT_EMBEDDING_AUTO_DISCOVER_MODELS:true}),启动时两类模型都会自动发现,无需配置文件。
三种运行方式任选其一:
# 包安装 OPENAI_API_BASE=http://localhost:1234/v1 private-gpt serve# Docker(macOS / Windows,容器内通过 host.docker.internal 访问宿主机) docker run -p 8080:8080 \ -e OPENAI_API_BASE=http://host.docker.internal:1234/v1 \ zylonai/private-gpt:latest# uv(本地源码安装后,在仓库根目录执行) OPENAI_API_BASE=http://localhost:1234/v1 uv run private-gpt serve启动成功后,PrivateGPT 监听8080端口。
验证接入是否成功
- 浏览器打开
http://localhost:8080/ui,这是 PrivateGPT 的 Web 界面; - API 位于
http://localhost:8080,遵循 Anthropic API 规范,可直接对接口发起请求测试。
能打开 UI 且 PrivateGPT 启动日志中没有模型发现报错,说明 LM Studio 端点接入成功。
可选:生成详细模型 profile
自动发现已经能跑起来,但如果你需要显式控制context_window、tokenizer、support_tools等参数(例如避免上下文窗口管理不准),文档提供了生成settings-model.yaml的现成脚本 scripts/auto_discover_models.py。该流程支持源码方式的 Local with uv 安装,在LM Studio 服务器运行中时执行:
OPENAI_API_BASE=http://localhost:1234/v1 \ uv run python scripts/auto_discover_models.py --out settings-model.yaml脚本会从服务器拉取模型信息并写出 profile 文件。文档给出的 LM Studio 场景示例(节选):
llm: default_model: qwen3-35b-a3b-q4_k_m embedding: default_model: mxbai-embed-large-v1 models: - name: qwen3-35b-a3b-q4_k_m type: llm mode: openai context_window: 32768 tokenizer: Qwen/Qwen3.5-35B-A3B support_tools: true support_reasoning: true sampling_params: temperature: 0.6 top_p: 0.95 top_k: 20 min_p: 0.0 - name: mxbai-embed-large-v1 type: embedding mode: openai context_window: 512其中模型名、tokenizer 等字段应与你实际的下载文件名和 tokenizer 仓库一致。生成后用PGPT_PROFILES=model启动,让 profile 叠加在基础配置之上:
OPENAI_API_BASE=http://localhost:1234/v1 \ PGPT_PROFILES=model \ uv run python -m private_gptPGPT_PROFILES=model的语义是加载settings-model.yaml;profile 文件命名约定为settings-{name}.yaml,多个 profile 按顺序合并、后者覆盖前者。
常见问题排查
浏览器报 CORS 错误在 LM Studio 中开启 CORS:Developer → Server Settings → Enable CORS。
模型名不匹配LM Studio 以文件名作为模型 ID。用curl http://localhost:1234/v1/models查看准确名称,把响应中id字段的值填进 profile,而不是凭记忆填写。
启动后看不到模型先确认 LM Studio 服务器在 PrivateGPT 启动前已经跑起来(先curl上面的/v1/models确认),再核对OPENAI_API_BASE是否与服务器地址一致且包含/v1,最后检查PGPT_LLM_AUTO_DISCOVER_MODELS没有被设置为false。
Docker 中连接被拒绝容器内的localhost指向容器自身而不是宿主机:macOS / Windows 使用http://host.docker.internal:1234/v1;Linux 改用--network host并把地址写回http://localhost:1234/v1。
Embedding dimensions mismatch报错发生在 ingest 或检索阶段,原因是向量库当初用另一个输出维度的 embedding 模型初始化过。文档给的处理方式是换回原模型,或执行make wipe清空向量库后重新 ingest;同时确保 profile 中embed_dim与模型实际输出维度一致(mxbai-embed-large为1024)。
端口被占用([Errno 48] Address already in use)用--port换端口,例如private-gpt serve --port 8081。
FileNotFoundError: Settings file not found for profile '...'PGPT_PROFILES指向的settings-{name}.yaml不存在。Docker 场景下该文件必须挂载进容器:-v ./settings-model.yaml:/home/worker/app/settings-model.yaml。
能力边界
LM Studio 在 PrivateGPT 下的支持矩阵中,模型发现(/v1/models)、tokenizer 端点(/tokenize)、embeddings、流式输出均受支持,工具调用和视觉输入取决于所加载的模型本身;结构化输出(JSON schema 约束)不受 LM Studio 支持,复杂 schema 场景下 PrivateGPT 会退回基于提示词的 JSON 提取。更细的对照可参考 providers 总览 和 LM Studio provider 指南,排错条目完整列表见 troubleshooting。
【免费下载链接】privateGPTComplete API layer for private AI applications on local models: RAG, skills, tools, MCP, text-to-sql, and more. Works with any OpenAI-compatible inference server.项目地址: https://gitcode.com/GitHub_Trending/pr/privateGPT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考