本页介绍了 Document AI 布局解析器及其与 RAG 引擎的搭配使用方式。
Document AI
Document AI 是一个文档处理和文档理解平台,可从文档中获取非结构化数据,并将这些非结构化数据转换为适合存储在数据库中的字段。结构化数据可让您理解、分析和使用数据。
Document AI 基于 Vertex AI 中的多款产品构建而成,并采用生成式 AI 技术,可帮助您构建可扩缩的端到端云端文档处理应用。无需具备专门的机器学习专业知识,即可使用这些产品。
Document AI 布局解析器
布局解析器会从文档中提取内容元素,例如文本、表格和列表。然后,布局解析器会创建内容感知数据块,以便生成式 AI 和发现应用从中检索信息。
当用于检索和 LLM 生成时,系统会在分块过程中考虑文档的布局,这有助于提高语义一致性并减少内容中的噪声。分块中的所有文本都来自同一布局实体,例如标题、副标题或列表。
如需了解布局检测所使用的文件类型,请参阅按文件类型进行布局检测。
在 Vertex AI RAG 中使用布局解析器
ImportRagFiles
API 支持布局解析器,但存在以下限制:
- 输入所有文件类型的文件大小上限(20 MB)。
- 每个 PDF 文件的页数上限为 500 页。
启用 Document AI API
您必须为项目启用 Document AI API。如需详细了解如何启用 API,请参阅 Service Usage 文档。
Enable the Document AI API.
开启布局解析器
如需开启布局解析器,请按以下步骤操作:
您的 RAG 知识库(语料库)
如果您没有 RAG 语料库,请创建一个 RAG 语料库。例如,请参阅创建 RAG 语料库示例。
如果您已经有 RAG 语料库,则在使用布局解析器导入文件时,系统不会重新导入未使用布局解析器导入的现有文件。如果您想对文件使用布局解析器,请先删除这些文件。例如,请参阅删除 RAG 文件示例。
使用布局解析器导入文件
您可以使用布局解析器导入来自各种来源的文件和文件夹。
REST
该代码示例展示了如何使用布局解析器导入 Cloud Storage 文件。如需了解更多配置选项(包括从其他来源导入文件),请参阅 ImportRagFilesConfig
参考文档。
在使用任何请求数据之前,请先替换代码示例中使用的以下变量:
- PROJECT_ID:您的项目 ID。
- LOCATION:处理请求的区域。
- RAG_CORPUS_ID:RAG 语料库资源的 ID。
- GCS_URIS:Cloud Storage 位置列表。例如:
"gs://my-bucket1"
、"gs://my-bucket2"
。 - LAYOUT_PARSER_PROCESSOR_NAME:指向创建的布局解析器处理器的资源路径。例如:
"projects/{project}/locations/{location}/processors/{processor_id}"
。 - CHUNK_SIZE(可选):每个分块应具有的词元数。
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import
请求 JSON 正文:
{
"import_rag_files_config": {
"gcs_source": {
"uris": "GCS_URIS"
},
"rag_file_parsing_config": {
"layout_parser": {
"processor_name": "LAYOUT_PARSER_PROCESSOR_NAME"
}
},
"rag_file_transformation_config": {
"rag_file_chunking_config": {
"fixed_length_chunking": {
"chunk_size": CHUNK_SIZE
}
}
},
}
}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json 的文件中,然后运行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"
Powershell
将请求正文保存在名为 request.json 的文件中,然后运行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。如需了解详情,请参阅 Python API 参考文档。
替换代码示例中使用的以下变量:
- PROJECT_ID:您的项目 ID。
- LOCATION:处理请求的区域。
- RAG_CORPUS_ID:RAG 语料库资源的 ID。
- GCS_URIS:Cloud Storage 位置列表。例如:
"gs://my-bucket1"
、"gs://my-bucket2"
。 - LAYOUT_PARSER_PROCESSOR_NAME:指向创建的布局解析器处理器的资源路径。例如:
"projects/{project}/locations/{location}/processors/{processor_id}"
。 - CHUNK_SIZE(可选):每个分块应具有的词元数。
from vertexai import rag
import vertexai
PROJECT_ID = "PROJECT_ID"
corpus_name = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"
# paths = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]
# Supports Cloud Storage and Google Drive links
layout_parser_processor_name = "LAYOUT_PARSER_PROCESSOR_NAME"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
response = rag.import_files(
corpus_name=corpus_name,
paths=paths,
transformation_config = rag.TransformationConfig(
chunking_config=rag.ChunkingConfig(
chunk_size=512, # Optional
chunk_overlap=100, # Optional
),
),
max_embedding_requests_per_min=900, # Optional
parser=rag.LayoutParserConfig(
processor_name=layout_parser_processor_name,
max_parsing_requests_per_min=120, # Optional
)
)
print(f"Imported {response.imported_rag_files_count} files.")
# Example response:
# Imported 2 files.
检索查询
当用户提问或提供问题时,RAG 中的检索组件会搜索其知识库,以查找与查询相关的信息。
如需查看根据查询文本从语料库中检索 RAG 文件的示例,请参阅检索查询。
预测
预测结果会使用检索到的上下文生成有依据的回答。如需查看示例,请参阅生成。