本页面概述了支持PrivateGPT的核心服务,解释了它们的目的、架构和交互方式。PrivateGPT中的服务是通过API暴露特定功能的高级功能组件。它们实现了文档摄取、聊天功能和文本摘要等各种特性的业务逻辑。
PrivateGPT围绕一组服务构建,这些服务既提供了常见任务的高级抽象,也为高级用例提供了低级原语。这些服务通过RESTful API暴露,该API遵循并扩展了OpenAI API标准。
服务架构概述
来源: README.md95-107
PrivateGPT遵循其服务的统一架构模式,在API层和业务逻辑之间有清晰的划分
服务架构模式
来源: README.md98-107 private_gpt/server/recipes/summarize/summarize_router.py1-86
每个服务包括
*_router.py),使用FastAPI定义API端点*_service.py),实现业务逻辑服务架构利用依赖注入来维护组件之间的松耦合,从而更容易替换特定的实现(例如,从一个LLM提供商切换到另一个)。
这些服务抽象了实现RAG(检索增强生成)管道的复杂性,为常见任务提供了现成的功能。
Ingest Service管理文档摄取管道,处理文档以便后续检索和用作上下文。
主要功能:
API 端点:
POST /v1/ingest/file:摄取文件POST /v1/ingest/text:摄取纯文本GET /v1/ingest/list:列出已摄取的文档DELETE /v1/ingest/{doc_id}:删除已摄取的文档来源: fern/openapi/openapi.json194-340 README.md30-31
Chat Service(聊天服务)提供会话功能,并可选择性地从摄取的文档中检索上下文。
主要功能:
API 端点:
POST /v1/chat/completions:提供带可选RAG的聊天补全来源: fern/openapi/openapi.json59-108 README.md32-33
Completions Service提供文本补全功能,可选择性地检索上下文。
主要功能:
API 端点:
POST /v1/completions:提供带可选RAG的文本补全来源: fern/openapi/openapi.json8-58 README.md32-33
Summarize Service(摘要服务)从文本或文档生成简洁的摘要。
主要功能:
API 端点:
POST /v1/summarize:摘要文本,可选择性地从已摄取的文档中获取上下文来源: private_gpt/server/recipes/summarize/summarize_router.py1-86 fern/openapi/openapi.json342-381 fern/docs/pages/recipes/summarize.mdx1-20
这些服务为高级用户提供了低级原语,用于实现自定义RAG管道。
Chunks Service根据语义相似性从摄取的文档中检索相关块。
主要功能:
API 端点:
POST /v1/chunks:根据查询检索相关块来源: fern/openapi/openapi.json110-149 README.md36-37
Embedding Service生成文本的向量表示,用于语义操作。
主要功能:
API 端点:
POST /v1/embeddings:为文本输入生成嵌入来源: fern/openapi/openapi.json384-424 README.md36
这些服务协同工作以实现RAG管道,创建一个有上下文的AI系统
RAG管道和服务交互
此图显示了服务如何交互以实现检索增强生成(RAG)管道
来源: README.md81-87
每个服务都通过FastAPI路由器暴露其功能,该路由器
Summarize路由器的示例
来源: private_gpt/server/recipes/summarize/summarize_router.py28-86
服务层实现了每个特性的业务逻辑,包括
服务通常通过构造函数注入接收其依赖项,这允许灵活的配置和更轻松的测试。
PrivateGPT服务遵循几个设计原则
这些原则使代码库更易于维护、扩展和理解。
来源: README.md88-95
PrivateGPT的服务提供了一套全面的功能,从常见任务(摄取、聊天、摘要)的高级抽象到低级原语(块检索、嵌入生成)的高级用例。这些服务遵循一致的架构模式,在API层和业务逻辑之间有清晰的划分,并利用依赖注入进行灵活的配置。这些服务共同实现了RAG管道,从而实现了可以利用本地文档的上下文感知AI功能。