菜单

摄取服务

相关源文件

Ingest Service 是 PrivateGPT 的核心组件,负责文档的处理和存储。它将各种文件格式转换为向量嵌入,并将其存储以供在聊天会话、补全和块查询期间进行检索。本文档涵盖了 Ingest Service 的架构、功能和用法。

有关如何在对话中使用已摄取文档的信息,请参阅 Chat Service

架构概述

Ingest Service 作为 RAG(检索增强生成)工作流程中准备文档以供检索的关键组件,融入了更广泛的 PrivateGPT 架构中。

来源:private_gpt/server/ingest/ingest_service.py26-49 此图显示了 Ingest Service 在整个架构中的位置及其与其他组件的关系。

组件和实现

Ingest Service 实现为一个单例类,通过多个组件协调文档摄取。

来源:private_gpt/server/ingest/ingest_service.py26-49

Ingest Service 中涉及的关键组件是

  1. IngestService - 提供文档摄取方法的主要服务类
  2. LLMComponent - 提供语言模型功能。
  3. VectorStoreComponent - 管理向量数据库以进行相似性搜索
  4. EmbeddingComponent - 提供嵌入模型以将文本转换为向量表示
  5. NodeStoreComponent - 存储文档节点和元数据
  6. StorageContext - 封装存储组件(向量存储、文档存储、索引存储)
  7. IngestComponent - 处理实际的摄取过程

摄取流程

Ingest Service 通过几个步骤处理文档,为检索做准备。

来源:private_gpt/server/ingest/ingest_service.py50-83 private_gpt/server/ingest/ingest_router.py31-81

API 参考

Ingest Service 通过 FastAPI 公开了几个 REST API 端点

端点方法描述
/v1/ingest/filePOST摄取文件并为其处理上下文
/v1/ingest/textPOST摄取文本并为其处理上下文
/v1/ingest/listGET列出所有已摄取文档及其 ID 和元数据
/v1/ingest/{doc_id}DELETE删除特定的已摄取文档

来源:private_gpt/server/ingest/ingest_router.py31-105

请求与响应格式

Ingest 端点使用以下数据模型

来源:private_gpt/server/ingest/ingest_router.py13-28

批量摄取

该系统提供了一个用于从文件夹批量摄取文档的脚本

来源:scripts/ingest_folder.py15-77

要使用批量摄取,您可以运行

--watch 标志可以自动摄取添加到文件夹的新文件。

来源:fern/docs/pages/manual/ingestion.mdx23-25

支持的文件格式

Ingest Service 支持多种文件格式

类别格式
文档.pdf, .docx, .pptx, .ppt, .pptm, .hwp
图像.jpg, .png, .jpeg
音频/视频.mp3, .mp4
数据.csv, .json
基于文本的.txt, .md, .epub, .ipynb, .mbox, .html

某些文件格式可能需要安装额外的依赖项。

来源:fern/docs/pages/manual/ingestion.mdx102-136

摄取配置和优化

Ingest Service 的性能可以通过配置设置进行优化

配置描述选项
embedding.ingest_mode摄取处理模式simple, batch, parallel, pipeline
embedding.count_workers并行处理的工作人员数量整数(默认值:2)
data.local_ingestion.enabled启用/禁用本地摄取布尔值
data.local_ingestion.allow_ingest_from允许摄取的文件夹路径列表或 * 表示全部

对于内存密集型操作,您可以使用 mock 配置文件,以避免在摄取期间加载 LLM。

来源:fern/docs/pages/manual/ingestion.mdx46-90

内部实现

IngestService 类使用必要的组件进行初始化,并使用向量存储和节点存储创建 StorageContext。

对于文件摄取,服务在需要时创建临时文件,处理文档,并返回已摄取文档的信息。

来源:private_gpt/server/ingest/ingest_service.py26-49

与 RAG 管道集成

文档被摄取后,可以通过 RAG 管道在聊天会话、补全和块查询期间检索它们。

来源:private_gpt/server/ingest/ingest_router.py42-55

结论

Ingest Service 是 PrivateGPT 的一个基本组件,它能够为上下文感知型 AI 应用程序进行文档处理和存储。通过将文档转换为向量嵌入并将其与元数据一起存储,它使得在与语言模型交互期间能够检索相关的文档块。