菜单

项目结构

相关源文件

本文档概述了 PrivateGPT 项目的组织、代码架构和关键组件。了解项目结构对于希望扩展或修改 PrivateGPT 功能的开发人员至关重要。有关安装和配置的信息,请参阅安装与设置

仓库组织结构

PrivateGPT 遵循模块化架构,在 API 端点、服务和组件实现之间有清晰的分离。这种代码组织方式有助于轻松扩展和修改系统的不同部分,同时保持整洁的架构。

来源:README.md97-107 pyproject.toml1-97

核心架构

PrivateGPT 围绕由 LlamaIndex 提供支持的检索增强生成 (RAG) 管道构建。该系统使用 FastAPI 暴露 API,遵循 OpenAI API 方案。

来源:README.md81-87 README.md97-107

API 层

API 层组织在 server 包中,每个功能区域都有子包。每个 API 子包都遵循一致的模式:

  1. <api>_router.py:定义 FastAPI 路由和 HTTP 处理程序
  2. <api>_service.py:包含使用抽象组件的业务逻辑
  3. 可选的请求/响应类型模型文件

来源:README.md98-102

组件层

组件层提供了服务层中使用的抽象的具体实现。组件组织在 components 包中。

来源:README.md103-107 pyproject.toml22-40 pyproject.toml64-85

依赖注入

PrivateGPT 使用依赖注入来根据配置将组件连接在一起。这种模式将组件实现与使用解耦,使得系统高度可配置。

来源:README.md89-95

服务流程示例

此图说明了聊天补全请求的典型流程

来源:README.md26-33

扩展点

PrivateGPT 旨在通过新实现轻松扩展。主要的扩展点是:

组件示例实现额外配置
LLMLlamaCPP, OpenAI, OpenAI-Like, Ollama, Azure OpenAI, Geminillms-llama-cpp, llms-openai, llms-ollama 等。
嵌入HuggingFace, OpenAI, Ollama, Azure OpenAI, Gemini, MistralAIembeddings-huggingface, embeddings-openai 等。
向量存储Qdrant, Chroma, PostgreSQL/pgvector, Milvus, ClickHousevector-stores-qdrant, vector-stores-chroma 等。
节点存储PostgreSQL, 内存中storage-nodestore-postgres

来源:pyproject.toml22-40 pyproject.toml64-85

包依赖

PrivateGPT 拥有一套核心依赖项和一些可选的额外项,用于启用不同的 LLM、嵌入和向量存储后端。pyproject.toml 文件定义了这些依赖项和额外项。

核心依赖项

  • fastapi
  • python-multipart
  • injector
  • pyyaml
  • watchdog
  • transformers
  • docx2txt
  • cryptography
  • llama-index-core
  • llama-index-readers-file

可选的额外项按功能组织(例如,llms-openaiembeddings-huggingfacevector-stores-qdrant),以允许仅安装特定配置所需的部分。

来源:pyproject.toml8-19 pyproject.toml22-40 pyproject.toml64-85

测试和开发工具

该项目包含了多种开发工具的配置:

  • black:用于代码格式化
  • mypy:用于静态类型检查
  • ruff:用于代码检查
  • pytest:用于单元测试

这些工具的配置可在 pyproject.toml 文件中找到。

来源:pyproject.toml87-95 pyproject.toml114-178

结论

PrivateGPT 遵循结构良好的模块化架构,将 API 端点、业务逻辑和组件实现之间的职责分离。这种设计使得系统高度可定制和可扩展,允许用户根据自身需求选择不同的 LLM、嵌入和向量存储后端。依赖注入模式确保组件松散耦合,从而使系统更易于维护和测试。