当你在多个 AI 模型上运行同一次富集时,Entity Enricher 可以将结果融合为单一的高置信度输出。融合会检测各模型输出之间的冲突,并使用确定性规则或由 LLM 驱动的仲裁来解决它们。
冲突检测器会比较所有模型输出中的每个字段。所有模型一致的字段将原样通过。模型存在分歧的字段会被标记为需要解决的冲突。
| 类型 | 比较方式 | 一致意味着 |
|---|---|---|
| 标量 | 标准化精确匹配(去除首尾空格、转小写、四舍五入) | 归一化后所有值均相等 |
| 多语言 | 以本次运行的主语言为准;翻译差异仅触发按语言的合并 | 主语言中的文本相同——翻译的措辞变体不算作分歧 |
| 数组 | 对项目的主语言视图进行集合比较(与顺序无关) | 无论顺序或翻译措辞如何,均为相同项目 |
| 对象 | 只要标识字段能证明两个模型描述的是同一事物,就按属性处理——否则整个对象算作一处冲突 | 所有嵌套属性均匹配 |
| Null / 空 | null、空字符串或空数组值表示弃权,而非主张 | 已填充的值胜出,且不计为冲突 |
确定性规则会在每次融合时运行,凡是模型自身取值能够证明的内容都由规则直接裁定。规则只能倾向于某个答案的情况——相互矛盾的取值、各模型描述不一致的嵌套对象、只有一个模型产出的条目——则交由裁决方处理。在侧边栏中选择仲裁模型,即决定了谁来充当裁决方:规则本身,还是某个 LLM。
系统会根据每个字段的数据类型应用确定性规则。绝大多数情况下完全无需调用 LLM——解析即时且免费。唯一的例外是各模型给出的数值差异极大的情况,任何规则都无法公正裁决;详见下文。
| 字段类型 | 规则 | 理由 |
|---|---|---|
| 字符串 | 多数投票;平局时取最长值 | 通常细节越多越好 |
| 数字 | 最接近中位数的模型值 | 对异常值稳健,绝不生成虚构的平均值 |
| 布尔值 | 多数;平局时取 true | 保守默认值 |
| 多语言 | 按语言进行多数投票,合并各语言 | 各语言独立解析 |
| 数组 | 键感知合并:项目按其键字段分组,拼写变体归并在一起,匹配的项目按字段合并 | 每个逻辑实体对应一行,不丢失任何数据 |
| 对象 | 标识一致时按字段处理;否则整体采用某一个模型的对象 | 把描述不同实体的两个对象混合,会凭空造出第三个两个模型都未返回的对象 |
| Null 与值 | 优先选择已填充的值 | 数据缺失比任何值都更糟 |
决胜规则:票数相同时,价格更高的模型给出的值胜出(以价格作为能力的代理指标),其次按模型名称的字母顺序排定。若整个对象被作为原子整体采纳,则完整度——即已填充叶子节点的数量——排在两者之间:在无从证明哪个实体为真时,优先选择更强的模型,再选择承载信息更多的答案。
只有当两个模型描述的是同一事物时,逐字段合并嵌套对象才是安全的。当标识字段无法证明这一点时——键不同,或根本没有键而底层确实存在分歧——该对象将被视为单个冲突,并原样采用其中一个模型的版本。否则融合就会拼出一个怪物:把这个模型的地址装到那个模型的公司上。有一个后果是有意为之的,但值得了解:胜出方连同其空白一并被采用,因此胜出方留空的字段仍为空——这可能会让该实体卡在数据库准入关卡。相应原因会随本次运行的校验警告一并给出。
“最接近中位数”适用于模型四舍五入方式不同的情形,却不适用于模型相互矛盾的情形——0 与 1854 之间的差距不是舍入差异。当各值的相对离散度达到 20% 时,该字段会升级交由 LLM 仲裁器处理,仲裁模型通过组织常规的模型选择流程自动选定,该调用与其他调用一样计费。这些字段会在融合审计记录中标记为自动升级,因此凡是消耗了 token 的合并,都会说明是哪些字段引起的。
当你在侧边栏中选择仲裁模型后,规则无法裁定的问题会交给该 LLM。它能看到实体的身份、每个字段的描述,以及以你的主要增强语言显示的各模型取值——它通过指认来作答,绝不会自行写出取值。
提问是逐层进行的:先是实体本身,然后每个匹配的数组条目各自单独调用一次,并以自身身份作为上下文(“本歌剧的第一幕”)——仲裁方已丢弃的条目不会再被提问。提示词的共用部分会在首次调用时被缓存,因此更深层的调用可以并行执行,成本只是其中的一小部分。
回退:如果仲裁模型失败(超时、出错),基于规则的判定依然生效,因此你始终能得到结果——记录中会注明实际采用的方法。
冲突解决后,系统会构建单个合并结果,并将其作为“仲裁”记录存储在数据库中。每个合并结果都包含审计追踪,以便你追溯每个冲突的解决方式。
每条合并结果都包含记录融合过程的元数据:
在历史页面的“概览”标签中,任何已合并的记录都会显示同样的审计轨迹。数组内部作出的判定——匹配条目的某个字段、被保留或被丢弃的条目——同样会列出,因此被舍弃的内容与被保留的内容一样清晰可见。经 LLM 仲裁的记录会将其仲裁方标为所用模型;而基于规则的合并则改为列出所合并的各个模型,因为它完全没有调用 LLM,也不含提示词、token 和成本。
融合完成后,结果面板中的“合并”选项卡会显示:
在批量富化中,当你选择两个或更多模型时会自动进行融合。你无需手动点击“合并结果”—— 一旦某个实体的所有模型都成功,融合就会运行,合并结果会与各模型的单独输出一并显示。若某次运行中有模型失败,系统会刻意不进行融合:合并剩余结果会把不完整的答案悄悄当作一致结论发布出去。请先恢复缺失的模型 —— 重试其失败的专长领域后,运行一旦重新完整,就会自动融合。
fusion_started、conflicts_detected 和 fusion_completed 事件。