菜单

主要功能

相关源文件

本页面详细介绍了 PrivateGPT 的主要功能和能力。PrivateGPT 是一个可投入生产的 AI 项目,它允许用户使用大型语言模型(LLM)对自己的文档提问,同时保持完全的数据隐私。它侧重于 PrivateGPT 的独特性以及这些功能如何协同工作等技术方面。

有关整体系统架构的信息,请参阅 系统架构。有关安装和设置说明,请参阅 安装与设置

隐私优先设计

PrivateGPT 的主要功能是在提供 AI 能力的同时,确保完全的数据隐私

  • 默认 100% 私密运行 - 数据绝不离开您的执行环境
  • 支持完全本地化的 LLM 和嵌入模型
  • 根据需要可选集成云服务
  • 适用于医疗、法律和金融等敏感领域

这种以隐私为中心的方法使 PrivateGPT 成为需要维护数据主权的同时利用 AI 能力的组织的理想选择。

来源: README.md11-14 README.md47-52

API结构

PrivateGPT 提供了一个遵循并扩展了 OpenAI API 标准的全面 API,这使得已经使用 LLM 的开发人员能够轻松上手。API 分为高级和低级功能

API 架构

来源: README.md22-38 fern/openapi/openapi.json7-447

高级 API

高级 API 抽象了 RAG(检索增强生成)管道的复杂性

  1. 文档摄取:上传和处理文档以便后续检索

    • POST /v1/ingest/file:摄取各种格式的文件
    • POST /v1/ingest/text:摄取纯文本内容
    • GET /v1/ingest/list:列出所有已摄取的文档
    • DELETE /v1/ingest/{doc_id}:删除文档
  2. 上下文补全:使用来自已摄取文档的上下文生成文本

    • POST /v1/completions:传统的补全端点
    • POST /v1/chat/completions:聊天补全端点
    • 两者都通过 use_context 参数支持上下文检索
  3. 摘要:创建文档或文本的简洁摘要

    • POST /v1/summarize:摘要文本或已摄取的文档

来源: fern/openapi/openapi.json8-58 fern/openapi/openapi.json59-108 fern/openapi/openapi.json348-381

低级 API

低级 API 提供对基本构建块的访问

  1. 嵌入生成:创建文本的向量表示

    • POST /v1/embeddings:为提供的文本生成嵌入
  2. 上下文块检索:从已摄取文档中查找相关块

    • POST /v1/chunks:检索与查询文本相似的块

所有 API 端点均支持同步和流式响应,遵循 OpenAI 流式模型以实现兼容性。

来源: fern/openapi/openapi.json110-149 fern/openapi/openapi.json384-424

RAG 流程

PrivateGPT 基于 LlamaIndex 实现了一个复杂的检索增强生成(RAG)管道,通过您文档中的上下文来增强 LLM 的能力

RAG 管道工作流程

RAG 实现使 PrivateGPT 能够

  • 从您的文档中查找语义相关的​​信息
  • 提供准确、与上下文相关的​​响应
  • 支持多种格式的文档
  • 使用最相关的​​上下文为 LLM 响应提供信息

这种方法消除了对特定数据进行模型微调的需要,从而使 PrivateGPT 更易于访问和维护。

来源: README.md82-93

模型灵活性

PrivateGPT 支持多种 LLM 和嵌入提供商,允许用户根据自己的具体需求选择性能、准确性和隐私之间的最佳平衡

组件灵活性

这种灵活性使用户能够将 PrivateGPT 适配到各种部署场景,从完全离线的隔离环境到混合或基于云的设置。

来源: README.md150-160

LLM 选项

支持以下 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 提供全面的文档处理功能

  • 多格式支持:处理 PDF、DOCX、TXT 和其他常见格式
  • 自动元数据提取:提取文档属性以改进检索
  • 可自定义的块策略:配置文档如何拆分为嵌入
  • 文档管理:根据需要列出、检查和删除文档

文档处理工作流程

  1. 文档通过摄取端点上传
  2. 系统解析它们并提取文本和元数据
  3. 文本被拆分为适合嵌入的块
  4. 块被嵌入并存储在向量数据库中
  5. 元数据会保留用于检索和上下文增强

来源: fern/openapi/openapi.json195-340

食谱(Recipes)

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 部署

使用 Docker Compose 进行部署,以实现容器化、隔离的环境

  • 简化了依赖管理
  • 在不同平台之间提供一致的环境
  • 支持不同模型后端的特定配置

本地 Python 安装

使用 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 还提供了用户界面,以使其能够被不同类型的用户使用

Gradio Web UI

用于交互式使用的基于浏览器的 UI

  • 用于与文档对话的聊天界面
  • 文档上传和管理
  • 设置配置
  • 适用于桌面和移动设备的响应式设计

来源: README.md39-41 fern/docs/assets/ui.png

API 文档

用于 API 探索和测试的交互式 Swagger UI

  • 完整的 API 参考
  • 请求和响应示例
  • 所有端点的“试用”功能

功能摘要

下表总结了 PrivateGPT 的主要功能

功能类别功能
隐私本地处理,无数据泄露,完全数据控制
API与 OpenAI 兼容,高级抽象,低级原语,流式传输支持
RAG 流程文档解析,语义搜索,上下文检索,上下文感知响应
模型支持本地 LLM,云 LLM,本地嵌入,云嵌入
文档处理多格式支持,元数据提取,块策略
部署Docker,Python/Poetry,配置配置文件
用户界面Gradio UI,Swagger API 文档
食谱(Recipes)摘要,社区提供的其他食谱

来源: README.md11-41