乐于分享
好东西不私藏

PrivateGPT如何接入私有文档问答API

PrivateGPT如何接入私有文档问答API

PrivateGPT 值得看的地方,不是“又一个本地知识库界面”,而是它把本地模型服务上面缺的应用层补出来了。很多团队已经能用 Ollama、vLLM、llama.cpp 或其他 OpenAI-compatible server 在内网跑模型,但真正要做文档问答时,还会卡在文件怎么上传、消息接口怎么接、引用怎么验收、UI 怎么调试、后续怎么接 Agent 或内部工具。PrivateGPT 的定位正好在这里:它不负责跑模型,而是把已有本地模型包装成一个可接入应用的私有 AI API 层。

关键信息

  • PrivateGPT 是 zylon-ai 维护的开源项目,仓库当前约 57.3k Star,核心定位是把本地模型变成可用于产品和工作流的 AI 应用 API 层。
  • 它不自带推理引擎,而是连接任何 OpenAI-compatible inference server;只要对方实现 /v1/chat/completions 和 /v1/models,就可以接入。
  • README 给出的最小路径是先安装 PrivateGPT,再启动 Ollama 这类本地模型服务,然后用 OPENAI_API_BASE 和 OPENAI_EMBEDDING_API_BASE 指向模型与 embedding endpoint。
  • 本地启动后,Workbench UI 在 http://localhost:8080/ui,API 根地址是 http://localhost:8080,适合先上传样本文档、发起消息、检查模型列表和请求响应。
  • 它适合做私有文档问答、内部 Agent 后端、Office/自动化工具的本地 AI 网关;不适合没有本地模型服务、没有权限边界、也不准备做验收的人直接塞生产资料。

最小使用路径或操作步骤

先把它当成“本地模型上面的应用 API 层”来试,而不是当成完整企业知识库。前置条件有四个:一台能跑本地模型的机器;一个 OpenAI-compatible LLM server;一个 embedding 模型或 endpoint;一组可以公开测试的样本文档。第一次不要接真实敏感资料,用几份 README、PDF 或内部规范的脱敏副本就够。

  1. 先确认你要接的是哪类模型服务。最省事的路径是 Ollama,因为 README 明确把它作为起步示例;如果你已经有 vLLM、llama.cpp server 或其他兼容 OpenAI API 的服务,也可以替换 endpoint。
  2. 安装 PrivateGPT。macOS 可以走 Homebrew;Linux 可以走 uv tool 安装。安装完成后先确认 private-gpt 命令存在,不要急着上传文档。
  3. 启动本地模型和 embedding 模型。README 的示例分别拉取一个 LLM 和一个 embedding 模型,然后启动 Ollama 服务。这里的检查点是 /v1/models 能返回模型列表。
  4. 用环境变量把 PrivateGPT 指向本地模型服务。OPENAI_API_BASE 负责聊天模型,OPENAI_EMBEDDING_API_BASE 负责 embedding;两者可以指向同一个兼容服务,也可以拆成两个服务。
  5. 启动 private-gpt serve 后打开 http://localhost:8080/ui。先上传一份小文档,问 3 到 5 个能从文档里直接验证的问题,观察回答是否带引用、是否能定位来源片段。
  6. 用 API Debugger 或 curl 检查接口。至少要看模型列表、一次最小消息请求、一次文件上传或检索相关请求是否稳定,再决定要不要接入自己的 UI 或 Agent。
  7. 记录失败样例。比如模型列表为空、embedding endpoint 不通、上传后检索不到引用、长文档切块不稳定、回答没有根据文档约束,这些都要在小样本阶段暴露出来。
# macOS brew tap zylon-ai/tap brew install private-gpt  # Linux curl -LsSf https://astral.sh/uv/install.sh | sh uv tool install --python 3.11 \   --find-links https://wheels.privategpt.dev/packages/ \   "private-gpt[core]"  # Example with Ollama ollama pull qwen3.5:35b ollama pull mxbai-embed-large ollama serve  # Run PrivateGPT against your OpenAI-compatible local server OPENAI_API_BASE=http://localhost:11434/v1 \   OPENAI_EMBEDDING_API_BASE=http://localhost:11434/v1 \   private-gpt serve  # Basic check curl -s http://localhost:8080/v1/models

核心技术点或配置与权限

PrivateGPT 的关键不是“把文档丢给大模型”,而是把消息、文件、检索、引用、工具和数据库访问统一到一个 API 层里。官方介绍里列出的能力包括标准 messages API、文件和 artifact ingestion、带引用的 retrieval、agentic RAG、内置工具、custom tools、MCP connectors、数据库和 CSV 访问、embedding 与编排。这些能力听起来很多,但第一次接入时不要全开,先只跑“模型列表 -> 上传样本文档 -> 问答 -> 看引用”这个闭环。

配置上最应该收敛的是 endpoint 和数据目录。OPENAI_API_BASE 决定请求会打到哪里,OPENAI_EMBEDDING_API_BASE 决定文档如何被向量化。它们如果写错,最常见的结果不是启动失败,而是 UI 能打开、问答却没有可靠引用,或者 embedding 请求一直报错。试点时建议把 endpoint、模型名、样本文档目录和日志目录都写清楚,方便复盘。

OPENAI_API_BASE=http://localhost:11434/v1 OPENAI_EMBEDDING_API_BASE=http://localhost:11434/v1 PRIVATEGPT_UI_URL=http://localhost:8080/ui PRIVATEGPT_API_URL=http://localhost:8080 SAMPLE_DOCS_DIR=./samples/privategpt-docs

权限边界要提前讲清。PrivateGPT 能帮你把数据留在本地或内网,但这不等于它自动解决企业权限。谁能上传文档、谁能看检索结果、日志里是否记录原文片段、是否允许工具访问数据库或 Web fetch,都要在接正式资料前定下来。对小团队来说,第一版可以只允许脱敏文档、只开本地端口、只做只读问答;等引用和失败样例稳定后,再考虑 MCP、数据库或 Office 集成。

验收与失败边界

  • 验收第一步是接口可用性:curl -s http://localhost:8080/v1/models 能返回模型列表,Workbench UI 能打开,上传样本文档后至少 20 个问题里大部分能命中文档引用。
  • 验收第二步是引用质量:不要只看回答像不像人话,要检查回答是否能回到原文片段;如果引用经常缺失或答非所问,先调 embedding、切块和文档格式,不要直接接业务系统。
  • 验收第三步是数据边界:确认 OPENAI_API_BASE 和 OPENAI_EMBEDDING_API_BASE 都指向内网或本机服务,日志目录不把敏感原文暴露给无关账号。
  • 失败边界之一是模型能力。小模型可以跑通流程,但长文档总结、复杂表格、跨文件归纳可能明显不稳,需要单独评测,不要用一次 demo 代替选型。
  • 失败边界之二是权限模型。PrivateGPT 提供应用 API 层,但企业级 RBAC、审计、LDAP、SharePoint/Confluence 这类完整治理能力,不应该默认等同于开源版已经全包。
  • 失败边界之三是运维成本。模型服务、embedding、文档解析和 API 层任何一个环节升级,都可能影响回答稳定性;至少要保留样本文档集和固定问题集做回归。

这事意味着什么

PrivateGPT 对开发者的价值,是把“本地模型能跑”推进到“本地模型能被应用调用”。Ollama、vLLM、llama.cpp 解决的是推理服务问题;Open WebUI、Onyx 更偏最终聊天或知识库体验;PrivateGPT 更像中间的 API 层,适合给自己的 UI、Agent、自动化工具或内部工作台做后端。这个位置很实际,因为很多私有化 AI 项目真正缺的不是模型,而是文件入口、消息接口、引用验收和可替换的模型后端。

但也正因为它是 API 层,试用时不能只看 UI 漂亮不漂亮。你要看的是四件事:是否能稳定连接你的模型服务;是否能把文档变成可检索内容;是否能通过 API 给上层应用调用;是否能在失败时定位是模型、embedding、文档解析还是权限配置的问题。如果这四件事跑不通,它就只是又一个本地 demo;如果跑通了,它可以成为私有 AI 应用的底座。

读者决策

今天可以试的人:已经有 Ollama、vLLM、llama.cpp 或其他 OpenAI-compatible server,想把私有文档问答接进自有 UI、Agent、Office 插件或内部自动化工具的开发者,可以先用脱敏文档跑最小闭环。应该先观望的人:没有本地模型服务、没有人维护 embedding 和权限边界、只想要免维护云端知识库,或者马上需要完整企业治理的人。试用时看 3 个指标:/v1/models 和 UI 是否稳定可用;20 个样本文档问题的引用命中率和幻觉率;endpoint、日志、上传文档和检索结果是否都留在可控边界内。