ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

开放世界信息抽取中LLM不确定性澄清机制:QDrawer解析

开放世界信息抽取中LLM不确定性澄清机制:QDrawer解析 1. 这篇论文在解决什么问题1.1 开放世界信息抽取模型最容易露馅的场景信息抽取Information Extraction, IE任务说白了就是让模型从非结构化文本里把实体、关系、事件这些结构化信息抠出来。传统做法都是封闭集合假设训练集里有哪些实体类型、哪些关系类型推理时就只能在这张表里挑。但现实世界根本不是这样新闻里不断冒出新人名、新产品名、新事件类型数据库里永远有没见过的类别。这种训练时没见过、推理时必须处理的场景就叫开放世界Open-World信息抽取。LLM 出现之后大家第一反应是这事好办多了大模型见过海量文本对开放类别的泛化能力天然强。但实际用起来会发现一个特别尴尬的情况——模型在不确定的时候经常硬着头皮给答案。你问它这段文本里发生了什么事件它可能用一段语义模糊的话糊弄过去你让它抽取关系它可能无中生有地给你编一个根本不在原文里的实体对。这在封闭集合时代是不可想象的因为当时的模型遇到未知类别会明确拒绝。到了 LLM 时代不知道和不想答的边界反而模糊了模型对自己的不确定性几乎没有任何感知它的默认行为就是生成一个看起来合理但实际不可靠的输出。1.2 澄清交互的价值从一次抽取到多轮对话那怎么办最直觉的思路是让模型学会说我不确定我需要问一下。这其实是人类处理不确定信息时的标准策略——读一段文字遇到歧义、缺信息、指代不明的地方先问清楚再往下做。这篇论文QDrawer全称很长核心意思是在对的时间问对的问题开放世界信息抽取中人类与模型的不确定性就是把这种澄清机制引入开放世界信息抽取。它的核心命题特别朴素当模型对某个抽取结果没有把握时不应该继续输出错误答案而是应该主动向人类提问、获取反馈、修正自己的抽取结果。这里的关键词有两个维度。First是对时机的判断模型什么时候该问、什么时候不该问。如果每个不确定的地方都问用户会被烦死如果一次都不问那和普通的 LLM 抽取管线就没区别了。Second是对问题质量的把控问的问题要直击要害让人能快速回答而不是泛泛地说这段文本里有什么。换句话说QDrawer 想解决的是两个rightright time该问的时候问、right question问对问题。论文标题里还有半句是 Human and Model Uncertainty意思是要同时考虑人类的认知不确定性标注者自己都拿不准和模型的不确定性模型本身置信度低两个维度联合起来决定是否澄清、澄清什么。1.3 适合谁读这篇论文如果你想做 LLM 应用开发尤其是智能体、对话式数据标注、知识库构建这类方向这篇论文的思路对你非常有参考价值。它不只是一篇理论性的学术研究更像是一个可以迁移到工程场景的方法框架模型在什么情况下应该知道自己不知道、如何把不确定性量化成决策信号、如何生成高质量澄清问题、如何把澄清获得的信息融回抽取结果。做自然语言处理研究的人则可以重点关注它的问题设置和评估方式。开放世界信息抽取本身是一个很有现实意义的问题设定但大多数工作都在研究怎么提升模型在未知类别上的表现很少有人研究让模型主动求助人类。QDrawer 把主动学习和澄清问题生成这两个方向结合到了一起在任务设计上是有新意的。2. 核心方案拆解QDrawer 的该问就问机制2.1 整体框架三个模块协同工作从我读论文的理解来看QDrawer 的整体框架可以拆成三个核心模块基础抽取器Base Extractor这是最底层的 LLM 抽取模块负责从文本中生成候选的实体、关系或事件结构。不确定性评估器Uncertainty Evaluator对抽取结果进行自我审视量化模型对每个抽取结论的置信程度同时估计人类在回答相关问题时的可能性。澄清决策与生成器Clarification Decision Generation在不确定性到达阈值时决定当前最值得提出的澄清问题触发一次人机交互。用一个场景来理解就非常直观。假设我们让模型从一段会议记录里抽取决策事件原文是张总提到下个季度要调整预算但具体数字还没定要等财务那边给出新的预测。一个普通的 LLM 抽取管线很可能会直接输出调整预算下季度。但实际上这段文本里有两个关键信息缺口第一调整预算的幅度和方向不明确是加预算还是砍预算第二下个季度的具体时间范围不明确是 Q3 还是 Q4QDrawer 的做法是在模型生成这个候选事件后不确定性评估器发现预算调整方向这个槽位的置信度很低于是触发澄清向用户提问请问预算调整的方向是增加还是减少这个流程看起来不复杂但难点在于决策机制的设计。LLM 本身是一个生成模型它的输出天然是概率性的怎么把这个概率转化为该不该问的二值决策QDrawer 在这里引入了人类不确定性的校准这是个非常实际的角度。做过数据标注的人都知道标注者之间的一致性IA A往往是评估任务难度的关键指标如果一个事件抽取任务连标注者都意见分歧那模型在这个样本上不懂装懂的概率就特别高。QDrawer 的思路是如果人类的标注都存在系统性分歧那么模型在这个实例上的低置信度就不仅仅是模型缺陷而是任务本身具有歧义性此时主动澄清是更合理的策略。2.2 不确定性估计模型怎么知道自己不知道不确定性估计是 QDrawer 的灵魂。LLM 不像传统分类器那样能直接给出一个 softmax 概率分布它是一个逐 token 生成的自回归模型。常用的做法是让模型多次采样生成结果然后看这些结果之间的一致性。如果采样 5 次模型每次都生成预算增加那置信度就较高如果采样 5 次输出分别涉及增加减少不确定未提及等不同内容那就说明模型在这个实例上极不稳定值得触发澄清。按论文里常见的做法这个一致性可以基于实体跨度span层面的重叠度来计算。具体步骤是让模型在同一温度参数下采样 N 次比如 N5每次生成完整的抽取结果将所有采样结果中的实体/关系/事件结构抽取出来计算这些结构之间的两两重叠度可以用 token-level 的精确匹配也可以用语义相似度对每个抽取槽位单独计算置信度低于阈值的槽位被标记为待澄清。这个方案的优点是可解释性强你能具体知道是哪个槽位出了问题是事件类型识别不准还是事件参数缺失还是实体边界识别飘忽不定。缺点是推理成本会线性上升采样 5 次等于 5 倍的 token 消耗。论文里应该有对采样轮次和收益的权衡实验工程落地时这个参数也值得专门调一调。我在实际项目中试过类似方案一个很深的体会是采样一致性比 logits 置信度靠谱得多。原因是 LLM 在微调阶段被训练成尽量输出最合理的单一路径即使是错误答案它的内部概率分布也可能很尖锐。但如果你让它多采样几次语言模型的解码随机性会暴露它在不同语义空间之间的徘徊。这就像一个人回答问题时语气很笃定但你让他换个说法再说一遍他说的内容出现矛盾那就说明他心里其实没底。2.3 澄清问题生成问什么、怎么问触发澄清之后下一个问题是怎么生成高质量的澄清问题。QDrawer 的思路可以理解成一个双层结构第一层根据不确定性评估的结果定位到具体槽位比如预算调整方向生成一个自然语言问题直接问用户这个槽位的取值第二层把用户的回答作为约束回填到抽取结果中。比较关键的细节是问题模板与自由生成的平衡。如果完全用模板比如请问{槽位}是什么优点是稳定、可控缺点是有些复杂的歧义不是单一槽位能覆盖的。如果完全让 LLM 自由生成问题问题可能表达得更自然但容易偏离当前抽取上下文。我猜测论文中使用的是一种介于两者之间的做法把当前抽取结果序列化成一份短的上下文摘要附带上不确定的槽位列表让 LLM 基于这个上下文生成问题。在工程实现里生成澄清问题还有一个非常实际的要求问题的覆盖面要小。一个用户能快速回答的问题最好只有一个明确的语义焦点。比如请问预算调整是增加还是减少就比请问预算调整的具体内容是什么好得多。前者用户能一口答出后者可能导致用户反问你指的是哪方面——这样就陷入了澄清的递归陷阱。2.4 什么情况下不触发澄清避免提问疲劳有同学可能会问既然模型不确定就提问那所有低置信度的样本都触发澄清流程是不是就没完没了了论文里肯定设计了避免过度提问的机制这是工程落地时最不能忽略的一点。我理解 QDrawer 的澄清决策是一个权衡函数它要考虑的不只是模型是否自信还包括澄清的预期收益。如果这个抽取结果本来就是低优先级的次要信息即使它置信度不高也不值得打断用户一次如果用户正在标注一个需要严格精确的事件类型那么任何一处不确定性都可能影响最终知识库质量这时宁可多问也不能放过。这个权衡可以用一个简单的概念来理解澄清成本打断用户一次与澄清收益修正一个潜在错误的比值。论文里很可能使用了阈值控制或强化学习来学习这个决策策略。工程中如果不想做那么复杂一个可用的替代方案是把澄清环节设计成异步模式所有低置信度槽位先打上待确认标签批量打包后在界面上统一呈现给用户让用户一次性确认多个问题。3. 实验设计与核心发现3.1 任务设定与数据基线开放世界信息抽取的数据集通常包含两类评估场景一类是封闭集合的Closed-World所有抽取目标类型在训练时都出现过另一类是开放集合的Open-World评估时会出现训练阶段从未见过的实体类型和关系类型。QDrawer 的论文实验大概率基于一个开放事件抽取或开放关系抽取数据集并且在部分设定下模拟了人类标注者存在噪声的场景。有一个点值得关注如果实验模拟了多种类型的人类反馈准确回答、部分准确回答、无法回答等那么他们对澄清交互效果的评估会比较全面。这在实际标注场景中非常真实标注者不是全知全能的有时候他们会给出错误回答如果模型完全信任人类的反馈反而会引入新的噪声。所以一个健壮的澄清模块应该是参考人类反馈但不盲从——把澄清结果作为约束条件同时结合模型自身的重评估。3.2 关键对比维度从阅读论文时的关注重点来看实验部分一般会围绕几个维度展开QDrawer 与无澄清基线的对比核心指标是抽取的精度/召回率/F1。这里最想看到的是加入澄清机制后模型的精确率是否有明显提升以及召回的损失是否能被控制在可接受范围内。与固定轮次澄清策略的对比有些基线做法是无论置信度如何每个样本固定追问 K 个问题。QDrawer 的优势在于动态决策在简单样本上零提问、在复杂样本上集中提问总提问数应该更少且收益更高。不同澄清问题质量之间的消融是模板式提问效果好还是自由式提问效果好这是一个很有工程参考价值的对比。不确定性估计策略的消融采样一致性、内部 token 概率、单一置信度等不同估计方式对最终澄清决策质量的影响。3.3 实验发现对我的启发读完这篇论文的实验设计我有一个比较明确的感受开放世界环境下的信息抽取与其说是在比谁的知识更广不如说是在比谁知道自己的边界在哪里。传统 IE 系统在封闭集合上跑得很好因为它们的所有行为空间都被限制死了LLM 在开放集合上泛化能力很强但代价是模型经常自信地犯错。QDrawer 提供了一条中间路线模型继续发挥它在开放世界上的泛化能力但在拿不准的时候主动调用人类这个外部知识源来消解不确定性。这个思路放到今天的 Agent 应用里尤其有价值。现在的 Agent 系统经常面临工具调用、代码生成、数据库查询等复杂场景模型在决策链条的前端一旦答错后面所有步骤都会跟着错。如果 Agent 能在决策早期引入一个澄清检查点在模型置信度低的时候向用户确认意图整体的任务成功率会有质的提升。4. 从论文到工程落地时最容易踩的坑4.1 澄清轮次深度不要允许无限递归工程落地时大家最关心的事情之一就是成本。每触发一次澄清就意味着一次额外的用户交互一次 LLM 调用一次上下文更新。如果模型对澄清的回答又产生了新问题然后再问再产生新问题整个流程就会陷入死循环。我在自己的项目里遇到过一个真实案例让 Agent 抽取出差行程信息模型不确定会议地点是线上还是线下于是问用户用户回答看情况模型又不确定看什么情况继续追问用户回答如果谁谁谁参加就线下模型又不知道该人物是谁……这个追问链可以无限延展。建议是设置一个最大澄清深度比如单条抽取任务最多不超过 3 次澄清。一旦达到上限就退化为普通 LLM 的默认行为把当前置信度最高的结果作为最终输出并在结果中标记存在未确认信息。这样做的好处是既保证了大多数场景下的准确性又防止了极少数难缠样本拖垮整个管线。4.2 上下文管理澄清问题必须携带上下文快照在开放世界信息抽取中澄清交互是多轮的每一轮都需要把前几轮的澄清结果作为上下文传入模型。最简单的做法是把所有历史对话拼接在 prompt 里但这会导致两个问题上下文越来越长、模型注意力被稀释早期抽取的错误在后续轮次中被当成既成事实。一个更稳的做法是设计一个结构化的槽位状态表slot state table。初始状态是 LLM 的第一轮抽取结果每个槽位带有值、置信度、来源模型预测/人类回答。当用户澄清了一个槽位后只更新该槽位的值和来源标记其他槽位保持不变。每一轮重新调用模型时把这份状态表序列化进 prompt而不仅仅是把对话历史塞进去。这样模型的注意力就能集中在当前仍不确定的槽位上而不是被已经确认的信息分散。4.3 评估指标的陷阱不要只看 F1如果只是用 F1 来评估澄清机制你可能会得出一个错误的结论。原因很简单澄清机制消耗了人类交互成本如果最终 F1 只提升了两三个点但对每一个样本都要打扰用户一次那这个方案在工程上就是负收益。更合理的评估方式是引入交互成本维度。比如可以看每个百分点的 F1 提升需要消耗多少次澄清交互或者看在高置信度子集上、低置信度子集上分别的准确率差异。如果你的模型在低置信度子集上进行澄清后准确率提升明显而在高置信度子集上依然保持高准确率那说明这个澄清策略是有效的。在给团队展示效果时把置信度 vs 准确率的校准曲线画出来会比单纯报一个 F1 数字更有说服力。4.4 人类反馈的噪声问题不做校验就是给自己挖坑论文标题明确提到 Human and Model Uncertainty——人类的回答也有不确定性。在实际落地时你面对的标注员或终端用户可能因为各种原因给出不准确的回答打字错误、理解偏差、或者干脆就是在赶时间随便点了一下。所以我在工程实现里通常会做一层反馈校验用户的回答进入系统后先和自己的抽取模型做交叉验证。如果用户说预算增加但模型从原文里找不到任何支持增加的证据那就把这一条标记为待人工复核而不是直接作为最终结果入库。这套逻辑本质上是在澄清机制之上再增加一道保险丝防止模型错 人类错双重错误叠加成更严重的错误。5. 如果要复现这个思路最小可行方案长什么样5.1 系统架构一个简单的四步管线从零开始复现 QDrawer 不需要一上来就做一个完整的人机交互系统。我建议按一个最小可行方案MVP起步跑通之后再逐步加功能初始化抽取用 LLM 对目标文本进行第一轮信息抽取输出结构化的实体/关系/事件列表置信度评估对每个候选结果做多次采样计算采样一致性生成每个槽位的置信度分数澄清决策根据置信度分数与阈值比较选出低于阈值的槽位生成澄清问题反馈融合接收用户反馈更新槽位状态表按需进行第二轮抽取或直接输出最终结果。这个四步流程是 QDrawer 的骨架。它的好处是每个模块都可以独立开发和调优。如果你发现置信度评估不准可以单独替换采样策略如果你发现澄清问题质量不高可以单独优化问题生成提示词如果你发现用户反馈融合后效果变差也可以只调整状态更新逻辑。5.2 提示词设计一个可以直接用的参考模板下面是一段我在类似场景里试过、效果还不错的提示词结构供参考。你是一个专业的信息抽取助手。请从以下文本中抽取{事件/实体/关系}列表。 文本 {input_text} 已知信息可能来自上一轮对话 {slot_state_table} 抽取要求 1. 对每个抽取结果输出一个置信度分数0-1表示你对这个结果的确信程度 2. 如果置信度低于 0.7请列出你需要向用户澄清的具体问题 3. 问题必须指向具体槽位形成提问{问题}待澄清槽位{槽位名}的格式。 输出格式 {结构化 JSON}实际使用中把置信度阈值设在 0.7 左右是一个比较折中的选择。阈值太高比如 0.9模型几乎每条都会触发澄清用户交互成本很高阈值太低比如 0.5模型的不确定性没有得到有效过滤。这个值建议在开发集上做一次小规模网格搜索不需要太精细找到大致拐点即可。5.3 从单轮到多轮的演进路线MVP 阶段可以先做单轮澄清模型问一次用户回答一次输出最终结果。这个阶段不要加复杂的状态管理和多轮循环专注把不确定性评估和澄清问题生成两个核心模块调优。跑通之后再考虑多轮澄清。多轮的价值在于处理链式置信度不足的场景模型先澄清了事件类型基于用户回答再澄清事件参数。这时才需要引入前面提到的槽位状态表以及最大澄清轮次的限制。最后如果想让系统更智能可以尝试用强化学习来学习澄清策略——用用户满意度或最终抽取准确率作为奖励信号让模型学会自主判断什么时候该问、什么时候不该问。这部分论文里应该做了相应实验但从工程复现的角度来说优先级排在最后因为它的训练链路复杂调优成本高且收益相对于一个精心调过的阈值策略来说提升可能有限。6. 这篇论文背后的本质模型需要学会求助6.1 澄清机制本质上是一种元认知能力很多人把 QDrawer 理解成一个交互式信息抽取工具我觉得这只是表面。它真正的价值在于把模型对自身认知状态的自省引入到了信息抽取任务里。所谓元认知就是知道自己知道什么、不知道什么。人类在解决复杂问题时会不断进行这种自我监控这个信息够不够那个结论的前提成立吗如果我在某一步不确定我应该查资料、问人还是凭经验猜LLM 目前最欠缺的恰恰是这层能力——它知道很多但它不知道自己什么时候在胡编。QDrawer 通过外部机制多次采样一致性给模型添加了一层模拟的元认知能力。它不改变模型自身的推理方式而是在模型的输出外增加一道质检员专门负责识别哪些输出不可靠、哪些信息缺口需要弥补。这个思路的迁移价值非常大不只是信息抽取任何基于 LLM 的生成任务包括代码生成、报告撰写、数据分析都可以外加一层不确定性质检与主动澄清机制。6.2 人类与模型不确定性的联合建模标题里的 Human and Model Uncertainty 是我认为最值得咀嚼的表达。过去大多数涉及人类反馈的机器学习工作都把人类的标注当作 ground truth默认人不会错。但 QDrawer 把人类的不确定性也当作一种需要考虑的信号这是很务实的态度。现实情境下一个信息抽取任务如果连三个人类都标注出三个版本那就说明这段文本本身存在底层歧义。这种歧义是模型无法通过提升参数量来消除的只能通过澄清来具体化语境。比如他很快完成了任务——他指谁需要上文。任务是哪个任务需要语境。这些歧义的消解靠的是对话而不是计算。所以在设计澄清系统时不能只把人类当作一个答案来源还要把人类的迟疑、犹豫、不确定性也纳入决策信号。如果用户在回答澄清问题时明显迟疑比如修改了三次回答系统应该识别到这个问题本身没有标准答案而不是一次又一次地盯着同一个槽位追问。6.3 QDrawer 能用到哪些更广阔的领域最后简单梳理一下 QDrawer 思路可以迁移的方向。对话式知识图谱构建目前的 KG 构建大量依赖预定义的 schema 模型遇到开放世界的新闻文本、事件数据schema 匹配经常失败。加上澄清机制之后标注员可以在 schema 未知的情况下先让模型抽取再通过对话迭代完善 schema效率会高很多。智能体任务规划Agent 在执行一个复杂任务时经常因为最初对目标理解有偏差导致整条任务路径失效。如果在 Agent 的规划器里嵌入一个澄清检查点在目标描述模糊时先向用户确认可以避免大量无效的工具调用。这背后的核心逻辑和 QDrawer 一模一样——在对的时间问对的问题。低资源场景的信息抽取在数据量小的垂直领域比如医疗、法律模型可靠性天然不足。澄清交互可以充当人工知识注入的通道每澄清一次相当于为模型增加了一条高质量监督信号。长期积累下来这些澄清记录本身就是一份很有价值的 annotated 数据集。7. 写在最后的经验之谈如果有人问我读完 QDrawer 这篇论文最值得带走的一件事是什么我的答案是不要试图让 LLM 变得更全能而是要学会给 LLM 装上一个刹车。在信息抽取、在 Agent 任务里一个知道自己不行并愿意求助的系统在真实场景中的可靠性要远比一个假装无所不知的系统高得多。我自己在实际项目里调试这类澄清式系统时最深的体会是用户一点都不介意回答问题用户介意的是被问一些蠢问题。如果你问的是预算调整是增加还是减少这种聚焦到点的问题用户会觉得很专业如果你问的是你能告诉我这段文本到底在讲什么吗这种空泛的问题用户大概率会直接放弃使用这个系统。所以澄清问题的质量才是决定整个交互体验的胜负手。建议读论文的同行把重点放在它的不确定性估计方法和实验设计上前者教会你如何给 LLM 的可靠性打分后者教会你如何证明一个交互式系统真的比非交互式系统好。至于澄清问题生成的具体实现大可以结合自己的业务场景设计出比论文更灵活的提示词策略。最后再分享一个我在多次尝试后觉得特别实用的小技巧。给澄清系统做评测时别只在干净的测试集上跑。往输入文本里掺入一些故意引入歧义的句子制造一些信息缺失的场景再看看系统的澄清策略是否真的在关键位置停下来。一个好的澄清系统不只是能跑通整个流程更要在改写过的、颠三倒四的、充满干扰信息的真实文本面前依然保持清醒。这比任何纸面上的 F1 提升都有说服力。
返回列表