本文档描述了PrivateGPT的配置系统,它提供了一种灵活的方式来定制应用程序的行为。该配置系统使用YAML文件和环境变量来定义PrivateGPT的运行方式,包括使用哪些LLM和嵌入模型、如何存储向量嵌入以及服务器设置。
有关使用此配置系统的部署选项的信息,请参阅部署选项。
PrivateGPT 使用基于 Pydantic 模型的层次化配置系统。配置在 YAML 文件中定义并在启动时加载,支持配置文件和环境变量扩展。
来源
默认配置文件位于项目根目录下的 settings.yaml。特定配置文件的命名模式为 settings-{profile}.yaml,默认也位于项目根目录。
可以通过使用 PGPT_SETTINGS_FOLDER 环境变量来自定义设置文件的位置。
来源
配置以 Pydantic 模型的层次结构表示,其中 Settings 是包含所有其他设置模型的根模型。
来源
配置文件系统允许用户为不同的用例或环境创建不同的配置,并轻松地在它们之间切换。
配置文件在基础配置(settings.yaml)之上分层。当配置文件被激活时,其设置会覆盖基础配置中的相应设置。
可以同时激活多个配置文件,后激活的配置文件优先于先激活的配置文件。
通过使用 PGPT_PROFILES 环境变量来选择配置文件,该变量接受一个逗号分隔的配置文件名列表。
示例
这将首先加载 settings.yaml,然后应用 settings-local.yaml 中的设置,最后应用 settings-cuda.yaml 中的设置。
来源
设置文件可以包含在运行时展开的环境变量引用。这允许在不修改设置文件的情况下进行动态配置。
环境变量使用语法 ${VARIABLE_NAME:default_value},其中
VARIABLE_NAME 是要使用的环境变量名称default_value 是当环境变量未设置时使用的值来源
PrivateGPT 配置分为几个主要类别,每个类别控制系统的特定方面。
| 类别 | 描述 | 关键设置 |
|---|---|---|
| 服务器 | API 服务器配置 | 端口、CORS、身份验证 |
| 数据 | 数据存储和摄取 | local_data_folder, ingestion |
| UI | Web 界面设置 | enabled, path, default_mode, prompts |
| LLM | 语言模型配置 | mode, prompt_style, temperature |
| 嵌入 | 文本嵌入配置 | mode, ingest_mode, model |
| Vectorstore | 向量数据库选择 | 数据库类型 |
| Nodestore | 文档存储配置 | 数据库类型 |
| RAG | 检索配置 | similarity_top_k, reranking |
| 特定提供商 | 特定 LLM/嵌入提供商的设置 | API 密钥、模型、参数 |
| 特定数据库 | 向量数据库设置 | 连接详情、配置 |
来源
PrivateGPT 提供两种主要方式在代码中访问配置设置
依赖注入(推荐)
全局访问(为了兼容性)
设置在应用程序启动时加载,并通过依赖注入系统或全局 settings() 函数提供。
来源
要更改 LLM 提供商,请修改 llm.mode 设置
此外,请为您选择的提供商配置特定提供商的设置
启用并配置 API 身份验证
选择并配置向量存储
来源
下图说明了配置如何在 PrivateGPT 系统中流动并影响各种组件
来源
PrivateGPT 的配置系统提供了一种灵活的方式来定制应用程序的行为,以适应不同的需求和环境。通过使用 YAML 文件、配置文件和环境变量,用户可以轻松调整设置而无需修改代码,同时开发人员可以通过依赖注入或全局设置函数访问这些设置。