本页面详细介绍了 PrivateGPT 的主要功能和能力。PrivateGPT 是一个可投入生产的 AI 项目,它允许用户使用大型语言模型(LLM)对自己的文档提问,同时保持完全的数据隐私。它侧重于 PrivateGPT 的独特性以及这些功能如何协同工作等技术方面。
有关整体系统架构的信息,请参阅 系统架构。有关安装和设置说明,请参阅 安装与设置。
PrivateGPT 的主要功能是在提供 AI 能力的同时,确保完全的数据隐私
这种以隐私为中心的方法使 PrivateGPT 成为需要维护数据主权的同时利用 AI 能力的组织的理想选择。
来源: README.md11-14 README.md47-52
PrivateGPT 提供了一个遵循并扩展了 OpenAI API 标准的全面 API,这使得已经使用 LLM 的开发人员能够轻松上手。API 分为高级和低级功能
来源: README.md22-38 fern/openapi/openapi.json7-447
高级 API 抽象了 RAG(检索增强生成)管道的复杂性
文档摄取:上传和处理文档以便后续检索
POST /v1/ingest/file:摄取各种格式的文件POST /v1/ingest/text:摄取纯文本内容GET /v1/ingest/list:列出所有已摄取的文档DELETE /v1/ingest/{doc_id}:删除文档上下文补全:使用来自已摄取文档的上下文生成文本
POST /v1/completions:传统的补全端点POST /v1/chat/completions:聊天补全端点use_context 参数支持上下文检索摘要:创建文档或文本的简洁摘要
POST /v1/summarize:摘要文本或已摄取的文档来源: fern/openapi/openapi.json8-58 fern/openapi/openapi.json59-108 fern/openapi/openapi.json348-381
低级 API 提供对基本构建块的访问
嵌入生成:创建文本的向量表示
POST /v1/embeddings:为提供的文本生成嵌入上下文块检索:从已摄取文档中查找相关块
POST /v1/chunks:检索与查询文本相似的块所有 API 端点均支持同步和流式响应,遵循 OpenAI 流式模型以实现兼容性。
来源: fern/openapi/openapi.json110-149 fern/openapi/openapi.json384-424
PrivateGPT 基于 LlamaIndex 实现了一个复杂的检索增强生成(RAG)管道,通过您文档中的上下文来增强 LLM 的能力
RAG 实现使 PrivateGPT 能够
这种方法消除了对特定数据进行模型微调的需要,从而使 PrivateGPT 更易于访问和维护。
来源: README.md82-93
PrivateGPT 支持多种 LLM 和嵌入提供商,允许用户根据自己的具体需求选择性能、准确性和隐私之间的最佳平衡
这种灵活性使用户能够将 PrivateGPT 适配到各种部署场景,从完全离线的隔离环境到混合或基于云的设置。
来源: README.md150-160
支持以下 LLM 后端
| 类别 | 提供者 |
|---|---|
| 本地 | LlamaCPP, Ollama |
| 云服务 | OpenAI, Azure OpenAI, Google Gemini, AWS Sagemaker, OpenAI-like APIs |
支持以下嵌入提供商
| 类别 | 提供者 |
|---|---|
| 本地 | HuggingFace, Ollama |
| 云服务 | OpenAI, Azure OpenAI, Google Gemini, Mistral AI, AWS Sagemaker |
支持以下向量数据库
| 向量存储 | 描述 |
|---|---|
| Qdrant | 默认向量数据库 |
| Chroma | 本地向量数据库 |
| PostgreSQL/pgvector | 具有向量扩展的 SQL 数据库 |
| Milvus | 可扩展向量数据库 |
| ClickHouse | 具有向量功能的列式数据库 |
来源: README.md150-160
PrivateGPT 提供全面的文档处理功能
文档处理工作流程
来源: fern/openapi/openapi.json195-340
PrivateGPT 包含预构建的“食谱”,用于常见用例,例如
摘要食谱提供了一种方便的方式来生成文档或文本的简洁摘要,并提供以下选项
POST /v1/summarize
参数
text:要摘要的文本use_context:是否使用已摄取的文档作为上下文context_filter:过滤到特定文档instructions:指导摘要风格prompt:用于摘要的自定义提示stream:启用流式响应来源: private_gpt/server/recipes/summarize/summarize_router.py15-86 fern/docs/pages/recipes/summarize.mdx1-20
PrivateGPT 提供灵活的部署选项,以适应不同的环境和用例
使用 Docker Compose 进行部署,以实现容器化、隔离的环境
使用 Poetry 直接安装,用于开发或自定义设置
多种预定义的配置配置文件,适用于常见设置
settings-local.yaml:本地 LLM 设置settings-ollama.yaml:基于 Ollama 的设置settings-openai.yaml:OpenAI API 集成settings-azopenai.yaml:Azure OpenAI 集成settings-sagemaker.yaml:AWS Sagemaker 集成settings-vllm.yaml:vLLM 服务器集成来源: README.md77-79
除了 API 之外,PrivateGPT 还提供了用户界面,以使其能够被不同类型的用户使用
用于交互式使用的基于浏览器的 UI
来源: README.md39-41 fern/docs/assets/ui.png
用于 API 探索和测试的交互式 Swagger UI
下表总结了 PrivateGPT 的主要功能
| 功能类别 | 功能 |
|---|---|
| 隐私 | 本地处理,无数据泄露,完全数据控制 |
| API | 与 OpenAI 兼容,高级抽象,低级原语,流式传输支持 |
| RAG 流程 | 文档解析,语义搜索,上下文检索,上下文感知响应 |
| 模型支持 | 本地 LLM,云 LLM,本地嵌入,云嵌入 |
| 文档处理 | 多格式支持,元数据提取,块策略 |
| 部署 | Docker,Python/Poetry,配置配置文件 |
| 用户界面 | Gradio UI,Swagger API 文档 |
| 食谱(Recipes) | 摘要,社区提供的其他食谱 |
来源: README.md11-41