结合使用生成式 AI 的自定义提取器
借助生成式 AI 训练和提取功能,您可以:
- 使用零样本和少样本技术,利用基础模型获得高性能模型,而无需或几乎无需任何训练数据。
- 随着您提供越来越多的训练数据,您可以使用微调进一步提高准确性。
生成式 AI 训练方法
您选择的训练方法取决于您拥有的文档数量以及您可以投入到模型训练中的精力。您可以通过以下三种方式训练生成式 AI 模型:
训练方法 | 零样本 | 少样本 | 微调 |
---|---|---|---|
准确性 | 中 | 中等偏高 | 高 |
工作量 | 低 | 低 | 中 |
建议的训练文档数量 | 0 | 5 到 10 个 | 10 到 50 人以上 |
自定义提取器模型版本
自定义提取器可使用以下模型。如需更改模型版本,请参阅管理处理器版本。
1.0 版和 1.3 版支持置信度分数,而 1.1 版和 1.2 版不支持。
模型版本 | 说明 | 稳定版 | 美国/欧洲境内的机器学习处理 | 在美国/欧盟进行微调 | 发布日期 |
---|---|---|---|---|---|
pretrained-foundation-model-v1.0-2023-08-22 |
专门针对文档使用场景的候选模型,已达到生产环境级别,由专用视觉模型和基础模型提供支持。 |
是 | 否 | 仅限美国 (GA) | 2024 年 1 月 9 日 |
pretrained-foundation-model-v1.1-2024-03-12 |
此候选版本由 Gemini 1.0 Pro LLM 和新开发的技术(包括专用语言和视觉模型)提供支持。 此版本及更高版本包含复选框检测等高级 OCR 功能。建议用于使用更高的令牌限制或试用较新型号的设备。 |
否 | 是 | 美国、欧盟(预览版) | 2024 年 5 月 3 日 |
pretrained-foundation-model-v1.2-2024-05-10 |
采用 Gemini 1.5 Pro LLM 和新开发的技术(包括专用语言和视觉模型)的候选版本,已准备好投入生产环境。 建议使用此模式以获得最佳质量、使用支持的最大令牌数限制、在识别实体时采用最佳质量,或试用较新的模型。 |
是 | 是 | 美国、欧盟(预览版) | 2024 年 5 月 27 日 |
pretrained-foundation-model-v1.3-2024-08-31 |
由 Gemini 1.5 Flash LLM 提供支持的正式版候选版本。 适合希望尽可能缩短延迟时间的用户。 | 是 | 是 | 美国、欧盟(预览版) | 2024 年 8 月 23 日 |
如需更改项目中的处理器版本,请参阅管理处理器版本。
开始前须知
如果尚未启用,请启用结算功能和 Document AI API。
构建和评估生成式 AI 模型
创建处理器并按照最佳实践定义要提取的字段,这一点非常重要,因为它会影响提取质量。
- 依次前往 Workbench > Custom extractor > Create processor > Assign a name。
- 依次选择开始 > 创建新字段。
导入文档
训练模型:
- 选择 build,然后选择创建新版本。
- 输入名称,然后选择创建。
评估:
- 前往评估和测试,选择您刚刚训练的版本,然后选择查看完整评估。
- 现在,您会看到整个文档和每个字段的 F1 得分、精确率和召回率等指标。
- 确定效果是否符合您的生产目标。如果不符合,请重新评估训练集和测试集。
将新版本设为默认版本:
- 前往管理版本。
- 选择以展开选项,然后选择设为默认。
您的模型现已部署。发送到此处理器的文档将使用您的自定义版本。您可以评估模型的性能,以检查模型是否需要进一步训练。
评估参考
评估引擎可以执行完全匹配或模糊匹配。对于完全匹配,提取的值必须与标准答案完全匹配,否则会被计为错失。
存在细微差异(例如大小写差异)的模糊匹配提取内容仍会计为匹配。您可以在评估屏幕上更改此设置。
微调
使用微调时,您可以使用数百或数千个文档进行训练。
创建处理器并按照最佳实践定义要提取的字段,这一点非常重要,因为它会影响提取质量。
使用自动标记功能导入文档,并将文档分配给训练集和测试集。
确认或修改文档中的标签。
训练模型。
- 选择构建标签页,然后选择创建新版本。
试用提供的默认训练参数或值。如果结果不理想,请尝试以下高级选项:
训练步骤(介于 100 到 400 之间):控制在调整期间对一批数据优化权重的频率。
- 过低表示训练可能会在收敛之前结束(欠拟合)。
- 如果过高,则表示模型在训练期间可能会多次看到同一批数据,这可能会导致过拟合。
- 步骤越少,训练时间越短。模板变化较少的文档可以设置较高的计数,模板变化较多的文档可以设置较低的计数。
学习率乘数(介于 0.1 到 10 之间):用于控制模型参数在训练数据上的优化速度。它大致相当于每个训练步骤的大小。
- 学习率越低,模型权重在每个训练步骤中的变化就越小。如果过低,模型可能无法收敛到稳定的解决方案。
- 高速率表示变化幅度较大,如果过高,则可能表示模型会跳过最优解,而收敛到次优解。
- 训练时间不受学习率选择的影响。
为其命名,选择所需的基础处理器版本,然后选择创建。
评估:前往评估和测试,然后选择您刚刚训练的版本,再选择查看完整评估。
- 现在,您会看到整个文档和每个字段的 F1 得分、精确率和召回率等指标。
- 确定效果是否符合您的生产目标。如果不符合,则可能需要进一步的培训文档。
将新版本设为默认版本:
- 前往管理版本。
- 选择以展开选项,然后选择设为默认。
您的模型现已部署,发送到此处理器的文档现在使用您的自定义版本。 您想要评估模型的性能,以检查其是否需要进一步训练。
使用基础模型自动添加标签
基础模型可以准确提取各种文档类型的字段,不过您也可以提供额外的训练数据,以提高模型针对特定文档结构的准确率。
Document AI 使用您定义的标签名称和之前的注解,通过自动添加标签功能可以更加轻松快捷地为文档大规模添加标签。
- 创建自定义处理器后,请前往开始标签页。
- 选择创建新字段。
为标签提供一个具有描述性且独一无二的名称。这将提高基础模型的准确性和性能。
为了提高提取准确性和性能,请为系统应提取的实体类型添加说明(例如为每个实体添加背景信息、数据洞见和先验知识)。
前往构建标签页,然后选择导入文档。
选择文档的路径以及要将文档导入到哪个集合。 选中自动标记选项,然后选择基础模型。
在构建标签页中,选择管理数据集。
看到导入的文档后,选择其中一个。
模型的预测结果现在以紫色突出显示。
- 查看模型预测的每个标签,并确保其正确无误。
如果缺少字段,请一并添加。
查看完文档后,选择标记为已加标签。文档现已可供模型使用。
确保文档位于测试集或训练集中。
三级嵌套
自定义提取器现在提供三级嵌套。此功能可更好地提取复杂表格。
您可以使用以下 API 调用确定模型类型:
这些请求的响应是 ProcessorVersion
,其中包含 v1beta3 预览版中的 modelType
字段。
步骤和示例
我们使用以下示例:
选择开始,然后创建字段:
- 创建顶级层级。
- 在此示例中,使用了
officer_appointments
。 - 选择这是父级标签。
- 选择出现情况:
Optional multiple
。
选择添加子字段。现在,您可以创建第二级标签:
- 为此等级标签创建
officer
。 - 选择这是父级标签。
- 选择出现情况:
Optional multiple
。
- 为此等级标签创建
从第二级
officer
中选择添加子字段。为第三层嵌套创建子标签。设置架构后,您可以使用自动标记功能从包含三层嵌套的文档中获取预测结果。
数据集配置
必须使用文档数据集才能训练、追加训练或评估处理器版本。 Document AI 处理器会像人类一样从示例中学习。数据集有助于提升处理器性能稳定性。训练数据集
如需改进模型及其准确性,请使用您的文档训练数据集。该模型由包含标准答案的文档组成。- 如需进行微调,您至少需要 10 个文档才能训练版本
pretrained-foundation-model-v1.0-2023-08-22
的新模型,16 个文档才能训练版本pretrained-foundation-model-v1.1-2024-03-12
的新模型,1 个文档才能训练版本pretrained-foundation-model-v1.2-2024-05-10
和pretrained-foundation-model-v1.3-2024-08-31
的新模型。 - 对于少样本,建议使用 5 个文档。
- 对于零次学习,只需架构即可。
测试数据集
测试数据集是模型用来生成 F1 得分(准确性)的数据集。它由包含标准答案的文档组成。为了了解模型正确预测的频率,系统会使用标准答案将模型的预测结果(从模型中提取的字段)与正确答案进行比较。测试数据集应至少包含 10 个文档(用于微调版本pretrained-foundation-model-v1.0-2023-08-22
)、16 个文档(用于版本 pretrained-foundation-model-v1.1-2024-03-12
),以及 1 个文档(用于 pretrained-foundation-model-v1.2-2024-05-10
和 pretrained-foundation-model-v1.3-2024-08-31
)。
包含房源说明的自定义提取器
借助属性说明,您可以通过描述已标记字段的样子来训练模型。您可以为每个实体提供更多背景信息和数据洞见。这样,模型便可通过匹配与您提供的说明相符的字段进行训练,从而提高提取准确性。您可以为父级实体和子级实体指定房源说明。
良好的房源说明示例包括房源值的位置信息和文本模式,这有助于消除文档中可能造成混淆的潜在来源。清晰明确的房源说明可为模型提供规则,无论具体文档结构或内容如何变化,都能确保更可靠、更一致的提取结果。
更新处理器的文档架构
如需了解如何设置房源说明,请参阅更新文档架构。
发送包含房源说明的处理请求
如果文档架构已设置说明,您可以按照发送处理请求中的说明发送处理请求。
使用房源说明微调处理器
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:处理器的位置,例如:
us
- 美国eu
- 欧盟
- PROJECT_ID:您的 Google Cloud 项目 ID。
- PROCESSOR_ID:自定义处理器的 ID。
- DISPLAY_NAME:处理器的显示名称。
- PRETRAINED_PROCESSOR_VERSION:处理器版本标识符。如需了解详情,请参阅选择处理器版本。例如:
pretrained-TYPE-vX.X-YYYY-MM-DD
stable
rc
- TRAIN_STEPS:模型微调的训练步骤。
- LEARN_RATE_MULTIPLIER:模型微调的学习速率乘数。
- DOCUMENT_SCHEMA:处理器的架构。请参阅 DocumentSchema 表示法。
HTTP 方法和网址:
POST https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process
请求 JSON 正文:
{ "rawDocument": { "parent": "projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID", "processor_version": { "name": "projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/DISPLAY_NAME", "display_name": "DISPLAY_NAME", "model_type": "MODEL_TYPE_GENERATIVE", }, "base_processor_version": "projects/PROJECT_ID/locations/us/processors/PROCESSOR_ID/processorVersions/PRETRAINED_PROCESSOR_VERSION", "foundation_model_tuning_options": { "train_steps": TRAIN_STEPS, "learning_rate_multiplier": LEARN_RATE_MULTIPLIER, } "document_schema": DOCUMENT_SCHEMA } }
如需发送请求,请选择以下方式之一:
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-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process"
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-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process" | Select-Object -Expand Content