检索瓶颈是查询不是索引:FHS 把间接证据拆成多假设查分类表,Recall@1 居首

Factorized Hypothesis Search for Evidence-to-Taxonomy Retrieval

Linhai Ma, Ethan F. Wei, Xueqing Peng, Yan Wang, Lingfei Qian, Víctor Gutiérrez-Basulto

cs.CL, cs.AI

2026-08-07

The FinAI 的 FHS 把表格/临床证据拆成 6 维多假设并行查分类表再融合验证,金融标签与临床编码 Recall@1 均居非 oracle 方法之首。

这篇在解决什么

把观测到的东西映射到一个大型概念库(金融的 US-GAAP 有 1.7 万条概念,临床的 ICD-10-CM 有 7.1 万条编码),这类任务随处可见。标准做法是「检索-重排」,它在输入直接说出目标概念时很有效。可现实里输入常常是间接证据:一个表格单元的语义取决于它的行、列、数据类型和上下文,一段临床指代的含义取决于症状、标本和周围病程。论文把这种错位叫 retrieval readiness gap(检索就绪鸿沟)。

作者用一组 oracle 探针把这个鸿沟量化得很清楚:把金标概念自己的标签加定义当成查询去检索,top-10 命中率是 100%;可换成原始证据直接检索,金标进了 top-200 的有 75.2%,进 top-10 的只有 24.0%。结论很硬:索引不是瓶颈,查询才是。目标通常能被够到,只是排得太深。一个自然的做法是把上下文改写成一条查询(HyDE 那类),但这假设语义本身是确定的、只是要润色措辞;而这里的核心恰恰是语义本身有歧义,一条证据往往有多种合理解读,过早押注一种就会把检索带偏。

方法

FHS 维护多个对命名语义维度的部分解读,叫 factorized hypothesis(分解式假设)。每个假设在 6 个维度上(Family、Role、Event、Qualifier、Scope、Temporal)给值,证据撑不住的维度留空,而不是硬猜。空着不花钱:渲染器会跳过、打分也排除,而猜错一个值会进到查询里把检索拽向错误区域。

一次生成调用里,每个假设产出两条查询:label-form(标签式)按解析到的维度值程序化拼接、用索引标签的同款分词,definition-form(定义式)由 LLM 写成自然语言。所有假设的检索排名用 reciprocal rank fusion 融合成候选池。最后是一个候选级 verifier:对每个假设取一个结构多样的候选窗口,让 LLM 在每个维度上对每个候选给 support/no-support/abstain,再把支持度与检索分合成、重排头部。分解式表征同时成了查询生成与候选验证的共享 schema,这是它跟无结构自由文本采样的根本区别。

几个关键取舍:用未改动的生成器做随机采样,而不是逼假设互不相同,因为强制多样性会降低每个假设的质量、反而掉覆盖率;并行一轮就够了,作者实现了一个 FHS-Seq 做顺序精修对照,结果多轮精修大幅改了 top-50 候选池却没提升 Recall@50、还更费算力;definition 式比 label 式重要得多(去掉 def 式 Recall@1 掉 0.034,去掉 label 式几乎不动)。

结果

金融标签(2024 US-GAAP)上,FHS 的 Recall@1 是 0.185,比最强基线(retrieval-feedback refinement 的 0.141)高 0.044;MRR 从 0.238 升到 0.257,最终准确率从 0.234 升到 0.255。临床编码(CodiEsp,ICD-10-CM)上,Recall@1 从最强基线的 0.201 提到 0.264,MRR 从 0.298 提到 0.352,准确率 0.322 到 0.330。两个域里 FHS 都是头部排序最强。

排序越深,故事越微妙:在金融标签上,retrieval-feedback refinement 的 Recall@50 能到 0.660,高于 FHS 的 0.543。也就是说迭代能扩大候选集合,却换不来更好的头部排序或更好的最终预测。消融印证了这一点:把分解式路径换成同样规模的自由文本 ensemble,Recall@1 从 0.185 掉到 0.116、MRR 从 0.257 掉到 0.194,但 Recall@50 反而升到 0.583。分解换的是精度,不是覆盖率。

为什么重要

对任何要把间接证据映射到大型概念库的任务(金融 XBRL 打标、临床 ICD 编码、schema 匹配、实体链接),FHS 给出了一个清晰的诊断视角:先分清瓶颈在索引还是在查询。它的解法是让模型同时持有多种竞争解读、再让候选去对每条解读自证,而不是反复打磨一条查询。代码与数据公开。

局限与存疑

作者承认:两个域的语义维度都是从已有分类表的结构与元数据里来的,换到一个没有这种结构的库上,得自己定义或归纳一套 schema,自动化归纳留作未来工作;所有 LLM 部件统一用 Qwen3-32B,没测跨模型家族与规模的差异。补两条:Recall@1 的绝对值仍然不高(0.185、0.264),这是个本身极难的任务,迭代类方法在深位召回上反而更强;oracle 选择行的上限只比 FHS 高一点(Recall@1 0.222),这也解释了为什么顺序精修帮不上忙,但同时说明当前假设生成还有改进空间。

术语

原文与代码

相关论文

全部论文解读