本页面提供了构成 PrivateGPT 架构的核心组件的概述。这些组件是实现 RAG(检索增强生成)管道和系统中其他基本服务的基石。
有关这些组件如何配置的信息,请参阅配置系统。有关这些组件如何被各种服务使用的详细信息,请参阅服务。
PrivateGPT 采用模块化架构构建,拥有多个核心组件协同工作,提供强大的 AI 功能。该系统遵循依赖注入模式,其中组件通过接口进行抽象,从而可以根据配置灵活地更换实现。
核心组件根据配置设置进行实例化,并通过依赖注入提供给服务。这种架构实现了灵活性,允许用户选择最适合其需求的确切实现。
LLM(大型语言模型)组件负责根据提示生成文本。它在一致的接口背后抽象了各种 LLM 实现的细节,从而使系统的其余部分能够使用相同的 API 与不同的语言模型进行交互。
LLM 组件支持本地和云端推理的多种后端
来源:private_gpt/settings/settings.py108-152
LLM 组件通过 LLMSettings 类进行配置,其中包括以下关键设置:
| 设置 | 描述 |
|---|---|
mode | 指定要使用的 LLM 后端(例如,“llamacpp”、“openai”、“ollama”) |
max_new_tokens | LLM 在响应中可以生成的最大 token 数 |
context_window | LLM 在提示中可以处理的最大 token 数 |
temperature | 控制响应中的随机性/创造性(0.1 更偏向事实) |
prompt_style | 提示的格式模板(例如,“llama2”、“llama3”、“mistral”) |
每个后端在其各自的设置类中都有额外的配置选项(例如,LlamaCPPSettings、OpenAISettings、OllamaSettings)。
来源:private_gpt/settings/settings.py108-152 private_gpt/settings/settings.py163-335
Embedding 组件从文本生成向量嵌入,这对于 RAG 管道中的语义搜索至关重要。与 LLM 组件一样,它提供了一个通用接口,用于抽象不同的嵌入模型实现。
Embedding 组件支持本地和云端嵌入生成的各种后端
来源:private_gpt/settings/settings.py198-238
Embedding 组件通过 EmbeddingSettings 类进行配置,其中包含以下关键设置:
| 设置 | 描述 |
|---|---|
mode | 指定要使用的嵌入后端 |
ingest_mode | 文件在摄取期间的处理方式(simple、batch、parallel、pipeline) |
count_workers | 某些摄取模式下的并行工作数 |
embed_dim | 嵌入向量的维度(默认值:384) |
每个后端在其各自的设置类中都有额外的配置,例如模型名称和 API 密钥。
来源:private_gpt/settings/settings.py198-238 private_gpt/settings/settings.py184-196
Vector Store 组件存储和检索向量嵌入,提供 RAG 管道中语义搜索所需的数据库功能。与 LLM 组件一样,它提供了一个通用接口,用于抽象不同的向量数据库后端,以满足不同的扩展和部署需求。
来源:private_gpt/settings/settings.py155-156
Vector Store 组件通过 VectorstoreSettings 类进行配置,该类主要指定要使用的数据库后端。每个支持的数据库都有自己的配置类。
| 数据库 | 设置类 | 描述 |
|---|---|---|
| Qdrant | QdrantSettings | 高性能向量数据库,具有丰富的过滤功能 |
| PostgreSQL | PostgresSettings | 带 pgvector 扩展的关系型数据库 |
| ClickHouse | ClickHouseSettings | 面向列的 DBMS,支持向量 |
| Milvus | MilvusSettings | 可扩展的向量数据库,用于相似性搜索 |
| Chroma | (默认设置) | 用于小型使用的简单嵌入数据库 |
来源:private_gpt/settings/settings.py155-156 private_gpt/settings/settings.py515-587
Node Store 组件存储文档块(节点)的元数据。它与 Vector Store 组件协同工作,为 RAG 管道提供完整的信息。虽然向量存储处理用于语义搜索的嵌入,但节点存储保留了上下文检索所需的原始文本和元数据。
来源:private_gpt/settings/settings.py159-160
Node Store 组件通过 NodeStoreSettings 类进行配置,该类指定要使用的后端。
当使用 PostgreSQL 后端时,它与 Vector Store 组件的 PostgreSQL 设置共享相同的配置。
来源:private_gpt/settings/settings.py159-160 private_gpt/settings/settings.py489-513
核心组件在 RAG(检索增强生成)管道中协同工作,该管道是 PrivateGPT 功能的核心。下图说明了这些组件在文档摄取和查询处理过程中的交互方式。
该图说明了两个关键工作流程:
文档摄取:
查询处理:
PrivateGPT 对组件实现采用一致的模式,以促进可扩展性
该架构遵循依赖注入原则,其中:
这种设计允许在不更改代码库其余部分的情况下轻松切换组件实现,从而使 PrivateGPT 能够高度适应不同的部署环境和需求。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(b7ee43)