综合介绍
NV Ingest(NVIDIA Ingest) 是一套早期访问的微服务,专为解析数十万复杂、混乱的非结构化 PDF 和其他企业文档而设计。它能够将这些文档转换为元数据和文本,以便嵌入到检索系统中。NVIDIA Ingest 支持解析 PDF、Word 和 PowerPoint 文档,利用 NVIDIA NIM 微服务来查找、上下文化和提取文本、表格、图表和图像,以供下游生成应用使用。该服务能够并行化处理,将文档拆分为页面,分类内容(如表格、图表、图像、文本),并通过光学字符识别(OCR)将其提取为定义良好的 JSON 架构。NVIDIA Ingest 还可以选择性地管理嵌入内容的计算,并将其存储到向量数据库 Milvus 中。
帮助文档:https://docs.nvidia.com/nv-ingest/
功能列表
- 支持解析 PDF、Word 和 PowerPoint 文档
- 利用 NVIDIA NIM 微服务查找、上下文化和提取文本、表格、图表和图像
- 并行化处理文档,将其拆分为页面并分类内容
- 通过 OCR 提取内容并转换为 JSON 架构
- 支持多种文档类型的提取方法,以平衡吞吐量和准确性
- 支持各种预处理和后处理操作,包括文本拆分和分块、转换和过滤、嵌入生成和图像卸载到存储
- 可选择性地管理嵌入内容的计算和存储到向量数据库 Milvus 中
使用帮助
安装流程
- 克隆 NVIDIA Ingest 仓库:
git clone https://github.com/NVIDIA/nv-ingest.git
- 进入项目目录:
cd nv-ingest
- 安装依赖项:
pip install -r requirements.txt
- 配置环境变量:
source setup_env.sh
- 启动服务:
docker-compose up
使用流程
- 提交文档解析任务:
- 通过 API 提交包含文档负载和解析任务的 JSON 作业描述。
- 示例 JSON 作业描述:
{ "document_payload": "base64_encoded_document", "ingestion_tasks": ["parse_text", "extract_metadata"] }
- 检索解析结果:
- 通过 API 检索作业结果,结果为包含提取对象元数据、处理注释和时间/跟踪数据的 JSON 字典。
- 示例 API 调用:
curl -X GET "http://localhost:5000/api/results/{job_id}"
- 支持的文档类型和提取方法:
- PDF 文档:支持通过 pdfium、Unstructured.io 和 Adobe Content Extraction Services 进行提取。
- Word 文档:支持通过 Microsoft Office API 进行提取。
- PowerPoint 文档:支持通过 Microsoft Office API 进行提取。
- 图像:支持通过 OCR 进行提取。
- 预处理和后处理操作:
- 文本拆分和分块:将长文本拆分为较小的块,以便更好地处理和分析。
- 转换和过滤:对提取的文本进行转换和过滤,以提高数据质量。
- 嵌入生成:计算提取内容的嵌入,以便在向量数据库中存储和检索。
- 图像卸载到存储:将提取的图像卸载到外部存储,以便进一步处理和分析。
详细操作流程
- 提交文档解析任务:
- 通过 API 提交包含文档负载和解析任务的 JSON 作业描述。
- 示例 JSON 作业描述:
{ "document_payload": "base64_encoded_document", "ingestion_tasks": ["parse_text", "extract_metadata"] }
- 检索解析结果:
- 通过 API 检索作业结果,结果为包含提取对象元数据、处理注释和时间/跟踪数据的 JSON 字典。
- 示例 API 调用:
curl -X GET "http://localhost:5000/api/results/{job_id}"
- 支持的文档类型和提取方法:
- PDF 文档:支持通过 pdfium、Unstructured.io 和 Adobe Content Extraction Services 进行提取。
- Word 文档:支持通过 Microsoft Office API 进行提取。
- PowerPoint 文档:支持通过 Microsoft Office API 进行提取。
- 图像:支持通过 OCR 进行提取。
- 预处理和后处理操作:
- 文本拆分和分块:将长文本拆分为较小的块,以便更好地处理和分析。
- 转换和过滤:对提取的文本进行转换和过滤,以提高数据质量。
- 嵌入生成:计算提取内容的嵌入,以便在向量数据库中存储和检索。
- 图像卸载到存储:将提取的图像卸载到外部存储,以便进一步处理和分析。