
非结构化文档和复杂文档用户指南
本节包含有关如何在项目级别(即整体提取)、字段组级别和单个字段级别编写良好提示指令的最佳实践。
- 清晰简洁 - 使用清晰、直接和明确的语言。避免使用可能导致模型混淆的过度复杂的指令。使用简单的语言,句子保持简短。
- 一致性 - 保持字段、字段组和指令之间的术语一致,以避免混淆。
- 提供上下文 - 为模型提供相关上下文,以了解任务的常规作用域。这可能包括行业信息、文档类型或整体数据格式,因为模型需要了解其处理的任务。如果您在提示词中提供更多上下文,即可提高模型持续正确预测字段的概率。
- 迭代 - 由于优化提示词是一个迭代流程,因此保留草稿及其相应结果的记录可以为未来的调整和改进提供宝贵的洞察。编写提示词、测试和编辑。重复此流程,直到获得所需的提取。
- 避免使用负面的指令 - 请勿输入类似于:请勿遗漏文档的任何部分的指令。请将其替换为:确保涵盖文档的所有关键部分,例如 x、y、z。
- 避免重复性语言 - 重复性语言可能导致模型指令的冗余、混乱和模糊。
- 注意矛盾信息 - 确保项目、字段组及字段级指令在待提取信息内容、提取格式与信息所在位置方面不相互矛盾。这会混淆模型,并导致结果不一致。
- 示例加强 - 尽可能使用正确响应的示例加强提示指令。这些实例可以引导模型实现预期结果。
最佳实践 | 详细信息 | 重要性 | 正确的示例 | 示例不正确 |
---|---|---|---|---|
定义行业和文档类型 | 简要描述行业和从中提取信息的文档类型。然后,指定文档类型的关键特征和预期结构,以指导提取。 | 这为数据提取流程提供了重要的上下文。 | 指令:从经纪对账单中提取信息,常见于金融服务行业。经纪对账单通常由几个部分组成:账户概述、账户摘要、账户持仓和账户交易活动。
|
指令:从文档中提取以下字段。 解释:此项目指令示例不会使模型受益。它没有提供有助于指导模型的任何重要上下文或关键特征。 |
请指定您是否希望在一个文件中出现多次文档。 | 指令文档是否包含相同数据的多个实例,并为每个提取实例提供指导。在单个文件中可能包含多个文档的用例中,请识别唯一标识符,并将其作为字段包含在每个字段组中。 | 这将有助于后处理,实现更高效的自动化。 | 指令:一个文档文件中可能有多个经纪账户。经纪账户可以通过每个字段组中唯一的账户号码字段进行识别。提取每个账户的账户信息、账户持仓和账户活动字段组。
|
指令:从每个账户文档中提取数据的所有实例。
解释:此指令示例欠佳,因为它没有指定如何确定一种文档类型是否在文件中多次出现。 |
最佳实践 | 详细信息 | 重要性 | 正确的示例 | 示例不正确 |
---|---|---|---|---|
将您想要提取的相似数据点分组到字段组中。 | 将相关字段组织到逻辑组中。 | 这有助于简化提取并最大限度地减少错误。 | 账户所有者的姓名、地址和婚姻状态可以全部归入“账户所有者信息”字段组下。 |
字段组:账户信息
字段:账户持仓、交易日期、账户所有者
解释:此分组可能适用于用户只想提取这三个字段的情形。但是,如果存在持有股票代码符号和成本基准等其他字段,则此组的设计或结构不会是最有效的。 |
字段组上下文 | 解释每个字段组如何对文档的总体含义和用途做出贡献。 | 这有助于模型了解提取的上下文。 | 指令:本节介绍了经纪对账单账户持仓明细的关键要素,包括证券名称、买入日期、买入数量、成本基准以及总支付金额。这些详细信息有助于确定经纪对账单中的当前持仓。 |
指令:从文档中提取以下字段。
解释:提示指令缺乏上下文且未对模型提供详细指令。它既没有指令需要提取的信息类型,也没有强调其重要性。
|
在字段组提示词中充分利用文档内信息的位置与结构特征。 | 指定各字段数据的可能位置(如表格、页眉、正文等),为提取提供指导。
注意:如果您正在处理的信息集中出现在文档的同一部分中,请在提示词中指出该部分。
| 这有助于模型为每个字段专注于文档的正确部分。 | 指令:此部分的字段级数据最有可能在文档标题下第一页的报告标头中找到。 |
指令:从文档的开头提取信息。
解释:提示词模糊,无法为模型提供足够详细的信息,无法查看文档中的具体位置。 |
使用带字段的字段组的模型表 | 将字段组视为表格,每个列都作为该组中的唯一字段。这种方法是有效数据建模的关键,因为它可以确保清晰的差异化,最大限度地减少数据重复并提高数据一致性。 | 这种方法可以对数据进行逻辑结构化、系统化排列,从而提高数据查询和分析的效率。 |
字段组:客户 字段:名称、地址、电话号码 |
字段组:客户名称、客户地址、客户电话号码 字段:名称、地址、电话号码 解释:此示例不必要地将每项客户详细信息分到自己的字段组中,使数据管理变得复杂,并容易出现不一致。 |
创建父和子字段组 | 关系以大于 > 的符号表示。 父字段组可以拥有多个子字段组。
| 利用字段组显示文档中数据之间的关系是维护分层数据组织的最佳方式。 |
字段组:经纪对账单 字段:帐户所有者、帐户类型 字段组名称:经纪对账单 > 资产分配 字段:资产类型,例如股票、债券、现金、总资产百分比 字段组名称:经纪对账单 > 投资 字段:投资名称、拥有数量、每股价格、投资总值 |
字段组:帐户所有者 字段:名称、投资名称、帐户类型、股份数量、股票、债券 字段组:账户所有者 > 地址 字段:街道、城市、州、邮政编码 字段组:帐户所有者 > 联系信息 字段:电话号码、电子邮箱
解释:该层次结构设计不当,因其在同一父层级下混列无关字段,且子字段组(地址与联系信息)与父字段(投资名称、持股数量、股票、债券)缺乏逻辑关联。这可能会导致 AI 模型混淆,因为它无法反映文档中数据的自然组织。 |
对于包含多个文档的文件,请使用键字段 | 选择文档中的唯一标识符,以便您对数据进行区分。在每个字段组中包含此字段。您无需将此字段的指令从一个字段组更改为另一个字段组。 | 包含此键字段可用于在文档中分离信息,并可在处理提取数据时消除混乱。 | 字段:账户号码、社会安全号、保单编号 |
字段:日期、姓名 解释:列出的字段名称无法成为有效的关键字段,因为它们并不唯一。日期和名称都可以重复。 |
最佳实践 | 详细信息 | 重要性 | 正确的示例 | 示例不正确 |
---|---|---|---|---|
请仔细选择字段名称 | 为符合用户预期的字段选择清晰、可识别的名称。如果存在在所有文档变体中使用的通用名称,请务必将其包含在内。 | 精确的字段名称确保提取准确并减少歧义。 | 字段:事故日期 |
字段:日期
解释:日期是通用术语,不会提供有关日期所指的任何上下文。这可能导致数据提取不准确,因为 AI 模型可能会提取文档中出现的任何日期。 |
指令应明确详细 | 通过明确指令您希望模型提取的内容,来启动模型。指定要提取数据的确切格式和结构。 | 清晰详细的提示会引导模型以您预期的格式提取您所需的内容。 | 指令:从文档中提取所有顾问的列表,采用逗号分隔列表的格式,并按字母顺序排列。 |
指令:获取所有顾问
解释:提示词模糊,无法为模型提供有关预期结果及其格式的明确指令。这有可能导致提取信息不一致,从而使结果流程处理更加困难。
|
在指令中提供示例 | 提供示例输入和相应的预期输出,以阐明预期结果。 | 这有助于模型准确了解您正在寻找的内容。 | 指令:从文档中提取交易日期。日期应采用 MM/DD/YYYY 格式。例如,如果文档声明交易已于 2021 年 1 月 1 日完成,则提取日期应为 01/01/2021。如果交易日期是按 MM/YYYY 格式声明的,请将其提取为当月的第一天。例如,如果日期显示为 05/2021,请将其提取为 05/01/2021。
|
指令:从文档中获取交易日期。
解释:上述提示词没有那么有效,因为它没有提供有关如何处理文档中不同日期格式的明确指令。这种缺乏清晰度的情况可能导致日期提取的不一致,使解释和分析数据的任务变得更加复杂。 |
每个字段的指令仅围绕一个核心要点 | 为提高准确性,请避免尝试在单个字段中提取大量连续数据,以防止提示词过载。每个字段级应专注于提取一项数据。 | 这也有助于降低后处理的难度。 |
字段 1:提取账户号码。 字段 2:提取交易日期。 字段 3:提取帐户余额。 |
指令:一起提取账号、交易日期和账户余额。 解释:提示词中包含多个指令,这些指令要求模型同时提取不同类型的数据。这种方法可能会导致提取结果混乱,并使后期处理变得困难。 |
最佳实践 | 详细信息 | 重要性 | 正确的示例 | 示例不正确 |
---|---|---|---|---|
选择符合目的的数据类型 | 考虑您希望提取的数据格式,并确保其与下游用例一致,以优化提取以实现自动化。
| 选择适当的数据类型可以实现准确的格式设置并简化下游处理。 |
字段名称:交易量 数据类型:数字 |
字段名称:电话号码 数据类型:数字 解释:将电话号码使用“数字”数据类型无益。虽然电话号码由数字组成,但它不是数字值,这意味着您不会对其进行算术,将其描述为数字字符串更好。因此,使用“精确文本”数据类型将是适当的选择。 |
在字段类型中仅包含字段类型的特定指令。 |
在提供数据提取指令时,必须针对每个字段类型提供指令。如果有适用于特定类型所有字段的常规指令,用户可以在字段类型级别提供这些指令,以避免重复。例如,如果所有货币数量字段都需要使用美元,请在字段类型级别指定。
但是,某些数据集可能需要现有字段类型(日期、文本、货币数量等)无法覆盖的唯一字段。在这些情况下,您可以创建新的自定义字段类型。为这些新字段编写指令时,请指定数据格式,以确保提取的数据符合预期目的。这些做法提高了提取数据的准确性和一致性。 |
字段类型:日期 指令:从文档中提取与事务关联的所有日期。日期应标准化为
YYYY-MM-DD 格式。 |
字段类型:货币数量 指令:从发票行项目表格下的“价格”列中提取项目价格。 指令:该指令专门用于从特定字段(“价格”列)提取货币数量,与任何其他基于货币数量的字段无关。 |
- 为您想要提取的所有信息创建一个字段,但请勿包含任何指令。
- 选择 2 到 3 个文档的示例,并对每个文档进行预测。这些文档应反映您构建模型的文档中存在的变化。
- 将模型的提取与您的预期进行比较。对于表现较差的字段,请使用之前列出的最佳实践起草提示词,因为这将作为您的基准提示词。
- 使用先前测试过的 2-3 份样本文档重新运行预测模型,并验证数据提取性能是否得到优化。
- 如果预测不正确或不完整,请改进提示,以添加必要的详细信息,以提高模型的提取性能。如果预测与您的预期一致,请扩大文档的样本大小。逐步增加这些数字至关重要。从 2 到 3 到 10,然后移动到 20、30 等。继续操作,直到您相信模型的预测是正确的。
- 如果指令已更改,请重新评估之前查看的文档,以确保预测依然准确。
- 对模型性能感到满意后,请重新访问第一个文档并开始标注。至少标注 10 个文档,以便通过 “度量” 选项卡获取有重要的字段性能指标。此功能使您能够评估整个项目和字段级别的提取性能。
- 监控性能指标,以了解大规模提示词的调整情况。提示迭代流程应主要在字段级别进行,在这里的调整将对性能较差的特定字段产生更有针对性和更直接的影响。如果字段组的得分表现不佳,那么调整项目和字段组指令可能会更有效,因这类指令会影响多个字段。