graphOTTER小记
这是我第一篇阅读有关于tableQA的论文,因此记录一下阅读感受和学习一下这方面的内容。
读这篇文章的第一个感觉是作者以一个Agent的角度完成了对表格的推理,正常大模型对表格的理解是隐式的,依靠训练数据预测推理答案,在表格数据量小的时候基本可以正确回答,但在数据很大,表头复杂的情况下,模型注意力容易分散,没办法准确得到答案。
以数学建模比赛为例,出题老师为了限制学生通过大模型一次直出答案,一般会使用数据量非常庞大的excel来作为附件,在去年模型能力还没有达到能通过工具处理大量表格数据时,确实很大程度上限制了模型的能力。
为了解决这个问题,论文作者提出了graphOTTER,在我理解看来是作者首先对表格进行了预处理,变成了类似元组的数据结构,然后通过无向图关联起不同数据的行列关系,比如我在查询张三的数学成绩时,先通过llm的语义理解和gte-base向量检索模型来最小化搜索范围节点,初始化reasoning trace,然后通过行和列的交集过滤掉其中的无关信息,不断更新trace,得到一些备选数据(因为仅仅这样一般无法确定唯一答案,张三和数学的行列关系可能是学生/科目这个元素,所以这里还需要llm作判断和取舍)。
在处理好表格数据后,加上操作表格的harness,让模型能通过react循环一步步显式推导出问题答案。
不过我还有一点论文创新方法以外的疑问,文章使用的qwen模型并不支持原生的functioncalling,而gemini1.5是支持的,虽然文章作者在实验时都是通过prompt来让模型结构化输出json,但如果遇到数据过大,搜索节点节点过多的情况,模型可能出错。