从局部修补到可量化提升:使用 ai_extract 与 MLflow Prompt Registry 提高文档抽取准确率

从局部修补到可量化提升:使用 ai_extract 与 MLflow Prompt Registry 提高文档抽取准确率

💡 原文英文,约2400词,阅读约需9分钟。
📝

内容提要

本文讨论如何系统提升 ai_extract 文档抽取准确率。核心观点:单字段修补可能引发其他字段回归,需建立可重复评估流程。建议用 schema 描述约束字段规则、全局提示处理文档级逻辑,复杂表格用 precision mode,引用定位错误来源。用 MLflow Prompt Registry 版本化提示与 schema,固定测试集评估准确率、覆盖率与波动,人工把关上线。Genie Code 可自动化评估与迭代循环。

🔎

延伸解读

单字段修补为何可能拖累整体

文章用实际案例说明:仅修改 revision 字段的 schema 后,该字段错误减半,但所有字段的总错误数反而增加 9%。原因是模型将整个 schema 视为整体,局部调整可能引发其他字段回归。因此,评估抽取改进不能只看目标字段,必须用固定测试集衡量全局准确率与覆盖率,否则容易把“局部改善、整体变差”的改动误判为成功。

schema 与全局提示的分工原则

文章建议:若规则只定义一个字段,就放进 schema 描述;若规则涉及如何理解整份文档,则放进全局提示。例如枚举值用 enum 约束,数字用数值类型,而忽略页脚等 FORBIDDEN-SOURCES 规则应放在提示中。这样可避免全局提示变成零散例外清单,也让字段级契约更易检查。此外,大小写、分隔符等确定性转换应交由 SQL 或代码处理,而非依赖模型。

precision mode 与引用、置信度的配合

对于重复行项目、复杂表格和多页布局,ai_extract 2.1 的 precision mode 能减少过度抽取(本应为空却返回值),在提示和 schema 不变时测试中错误减少 24%。引用可定位字段级边界框,帮助区分抽取错误与标注分歧;置信度适合作为人工复核的排序信号,而非自动质量门槛,因为高置信度结果仍可能出错。三者互补,需先诊断失败类型再调整配置。

版本化与评估门槛:从改动到上线的证据链

文章强调用 MLflow Prompt Registry 同时版本化提示和 schema,通过 @prod、@candidate 等别名切换,无需改代码即可上线或回滚。评估需冻结测试集,跟踪准确率、覆盖率和多次运行的波动(噪声下限),候选改进需超过 2σ 才视为显著。最终上线仍应人工把关,因为聚合指标可能掩盖单字段严重回归,也可记录例外理由以支持特殊业务约定。

❓

Q&A

为什么在文档抽取中只修改单个字段的提示或schema可能会导致整体效果变差?

因为模型会将schema作为一个整体来阅读,修改一个字段的描述可能影响其他字段的抽取,导致回归。例如,修复revision字段后,总错误数反而增加了9%。

ai_extract的schema和全局提示分别应该用来处理什么规则?

schema用于定义单个字段的规则(如枚举、类型、描述),全局提示用于处理文档级别的逻辑(如忽略页脚等禁止来源)。原则是:如果规则定义单个字段,放在schema中;如果规则定义如何解释文档,放在提示中。

在什么情况下应该使用ai_extract的precision mode?它有什么效果?

当文档结构复杂(如重复行项、复杂表格、多页布局)导致字段对齐困难时使用。precision mode能减少过度抽取(模型在应为空的地方返回值),在重复结构上效果最明显。测试中,它单独使用减少了24%的错误。

如何利用引用(citations)和置信度分数来改进抽取质量?

引用提供字段级边界框,可映射回源文档,帮助区分抽取错误和标注分歧,从而采取不同修复措施。置信度分数可作为排序信号,优先审查低置信度字段,但不能作为自动质量门控,因为高置信度结果也可能错误。

MLflow Prompt Registry如何帮助管理提示和schema的版本?

它允许将提示和schema作为可配置定义进行版本化,独立于管道代码。通过别名(如@prod、@candidate)加载活动版本,无需代码部署即可推广或回滚更改。同时版本化提示和schema,确保所有抽取逻辑都被跟踪。

在评估抽取改进时,为什么需要同时关注准确率和覆盖率?

仅看准确率可能忽略缺失预测:如果只计算模型和审核者都提供值的字段,模型在困难字段留空会显得更准确。覆盖率(非空真实字段中模型返回预测的比例)能揭示这种偏差。准确率上升但覆盖率下降时需调查。

如何确定一个抽取改进是真正有效而非随机波动?

在固定测试集上多次运行生产配置(至少3-5次),计算平均准确率和标准差(σ)作为噪声底线。候选改进需超过2σ才视为有意义,否则视为不确定。同时需检查各字段是否有严重回归。

Genie Code在文档抽取优化流程中能自动化哪些步骤?

Genie Code可以构建Lakeflow作业(包括ai_parse_document、ai_classify、ai_extract),并自动化评估与爬山循环:针对标注表评估抽取、识别弱字段、迭代改进schema和指令、重新运行评估并展示前后对比。它还能设置置信度阈值和路由低置信度行进行审查。

🏷️

标签

➡️

继续阅读