AI追问一个问题要花掉一美元,问题出在哪?

你有没有想过,为什么现在的AI智能体,明明看起来无所不能,一旦让它去翻阅大量文档回答复杂问题,账单就会突然变得吓人?
哈佛大学的研究团队做过一个实验:让AI回答"哪些NBA球员获得过IBM奖,他们职业生涯场均篮板是多少"这类问题,单单一个问题,就消耗了将近一百万个token,花费接近一美元。而这还只是个相对轻松的测试题。真实世界里,一个金融分析师想知道"哪些公司在财报电话会议上抱怨供应链问题,但年报里库存却在增长",或者一个卫生部门想核对"哪些供应商同时出现在食品召回通知和餐厅检查报告里",这种问题往往要翻遍成百上千份文件。账单只会更离谱。
这篇论文提出了一个思路,能把这类问题的成本砍掉一半以上,同时几乎不损失准确率。它的名字叫"智能体式数据裂解"(agentic data cracking),听起来有点抽象,但背后的逻辑其实很朴素。今天我们就来聊聊,这套系统到底是怎么想的。
知识都埋在没整理过的文件里
先说说这个问题到底难在哪儿。
世界上大部分有价值的知识,并不是整整齐齐地存在数据库表格里的。它们散落在网页、企业文件、合同、SEC财报、财报电话会议记录、PDF报告这些"非结构化数据"里。
非结构化数据:没有预先定义好格式和字段的信息,比如一篇文章、一段录音转写、一份合同,和数据库里那种"姓名、年龄、地址"整整齐齐的表格数据正好相反。
想回答一个稍微复杂点的问题,比如"哪些演员同时和希区柯克、马丁·斯科塞斯合作过",你得先翻遍希区柯克的维基百科页面找出他导演的所有电影,再翻每部电影的页面找演员表,斯科塞斯那边同样操作一遍,最后把两份演员名单做个交集。这个过程里,证据是一点一点从大量文档里抠出来的,中间还要不断构建"这部电影的演员是谁""这个人还演过什么"这样的中间信息,一步步传递给下一步。论文把这种模式叫做"数据推理"(data reasoning)。
现在的AI智能体已经能干这活了,规划步骤、打开文档、提取事实、执行代码,样样精通,回答质量比只靠死记硬背的模型或者简单检索要好得多。但代价是,每次都要把大文档整个塞进上下文窗口,反复读取,成本随着问题的复杂度、涉及的实体数量、文档数量线性甚至指数级增长。研究者们统计过,如果提前把所有需要的事实都手工整理进数据库,同样的问题成本能降低28倍。这个差距,就是"结构化"能带来的红利。
问题是,你不可能提前把所有文档里的所有信息都结构化。一份文档里可能藏着成千上万个实体、属性和关系,但一个具体的工作负载可能只用得上其中几十个。全部提取出来,等于是在做一次没有尽头的解码任务,性价比极低。而且你压根不知道用户接下来会问什么,提前准备也无从下手。
这就好比你搬进一栋新公寓,面对满屋子还没拆封的箱子。你可以选择把所有箱子全部拆开分类摆好,但那可能要花一整个月,而你接下来可能只会用到厨具和几件衣服。更现实的做法是,用到什么就拆什么,拆的时候顺手把相关的东西也摆出来,因为下次大概率还会用到它们。如果不这样做,要么是把时间都浪费在整理用不上的东西上,要么就是每次找东西都要翻箱倒柜,两头都不划算。
边读边整理:查询本身就是最好的向导
论文提出的解决方案,思路上其实借鉴了数据库领域一个叫"数据库裂解"(database cracking)的老技术。
数据库裂解:一种自适应的数据库索引技术,核心思想是不预先建立完整索引,而是根据实际查询请求,逐步、增量地组织数据,越用越有序。
传统数据库裂解处理的是已经存在的结构化数据,重新整理一下顺序就行。但这篇论文面对的是完全没有结构的原始文档,得凭空造出结构来。具体怎么做呢?
每当主推理智能体因为要回答问题而打开了一份文档,系统就会立刻派出一个"裂解子智能体",从已经加载好的上下文里分叉出来,几乎不花额外成本地对这份文档做一次深挖。它不是只提取当前问题需要的那一条信息,而是带着"接下来可能还会有什么相关问题"的猜测,把附近其他看起来有用的实体、属性、关系也一并挖出来,存进一个专门的知识库里。
这里有个关键的技术细节:为什么这个"顺手挖掘"几乎不花额外成本?因为文档已经被读进AI的上下文窗口了,这个过程在AI推理里叫"预填充"(prefill),也是整个流程里最贵的部分。既然预填充的钱已经花了,缓存也已经生成了,那么在这个基础上让AI再多想一步、多写一点结构化输出,只是多花一点"解码"(decode)的钱,相对便宜得多。
预填充:AI处理输入文本、把它读进模型内部理解的这个阶段,这一步通常是token消耗和成本的大头,尤其是输入的文档很长的时候。
解码:AI根据已经理解的内容生成输出文字的阶段,相对预填充而言,消耗的计算量通常小得多。
这就像你去图书馆借一本很厚的参考书。跑一趟图书馆本身很费时间(这是"预填充"的成本),但既然书已经借到手里摊开在桌上了,你顺手多翻几页、多抄几条可能用得上的笔记,只多花几分钟(这是"解码"的成本)。如果每次都专门跑一趟图书馆只为了抄一条笔记,效率太低;但如果你借书的时候不做任何笔记,下次要用到相关内容又得再跑一趟。裂解子智能体做的,正是"书已经在手上,顺手多记点"这件事。
论文管这些挖掘出来的信息叫"裂解对象"(cracked object),它们不是随便记下来的碎片,而是有严格格式的:谁、和谁是什么关系、值是多少、这个关系是"唯一的"还是"一份清单"、来自哪份文档的哪个位置。这套格式保证了每条信息都可以被验证、被追溯来源,不会变成AI瞎编的幻觉。
读的时候先查目录,查不到再翻书
光是把信息挖出来还不够,怎么让后续的问题真正用上这些挖出来的信息,也是个技术活。
论文设计了一个叫"目录"(catalogue)的机制。每当主推理智能体准备打开一份文档之前,系统会先给它看一份"这份文档里已经挖出过哪些结构化信息"的清单,告诉它有哪些主题、哪些关系是现成可查的。如果所需信息刚好在里面,智能体直接发起一次"结构化读取",用很少的token拿到答案,完全不用再打开、再读一遍原始文档。如果目录里没有想要的东西,它才老老实实打开文档,从头读起。这时候,新一轮的裂解子智能体又会顺势启动,继续往知识库里添砖加瓦。
目录:这里指系统维护的一份索引清单,记录每份文档已经被提取出了哪些结构化信息,供主智能体在打开文档前先查一遍,判断有没有现成答案可用。
这套读写机制像极了图书馆的检索卡片系统。你要找一本书之前,先查目录卡片,卡片上写着这本书讲什么、在哪个书架。如果目录里已经有你要的内容摘要,你根本不用去书架翻书;如果没有,你才去书架把书抽出来读。而且读完之后,图书管理员会顺手把这本书里其他可能有用的知识点也整理进卡片系统,方便下一个读者查。如果没有这套目录卡片系统,每个人来了都得把整本书翻一遍,哪怕问题只是"这本书出版于哪一年"这种一句话就能回答的小事。
值得说一句的是,这套系统始终留了一条退路:一旦结构化读取没查到想要的东西,它会老老实实退回去打开原始文档,绝不会因为"目录里没写"就编造答案。这个保守的兜底策略,恰恰是准确率没有明显下降的关键原因。
实测效果:便宜一半,准头没丢
说了这么多设计思路,实际效果到底怎么样?研究团队在两个场景里做了测试。
第一个是FanOutQA,一个专门考察"多跳、多文档"问答能力的公开测试集,问题横跨从最高法院大法官到NBA球员的各种主题。这类基准测试有个特点:每个问题基本上不会重复用到同一份文档,缺乏现实世界里那种"相关问题反复查同一批资料"的规律。为了模拟真实场景里的这种关联性,研究者给每道测试题配了一道由AI生成、人工核实的"相关但不同"的前置问题,两道题涉及重叠的实体,但问的是不同的属性,答案也互不相干。
第二个场景是一个围绕导演希区柯克的"电影调查"案例研究,先问20个关于希区柯克电影生涯的问题热热身,再评测10个相关的正式测试问题,模拟一场逐渐深入的调查式提问过程。
结果相当亮眼。在FanOutQA上,平均预填充token从18.9万降到8.7万,每题平均成本从0.26美元降到0.12美元,降幅过半,而准确率几乎没有变化,用LLM裁判打分的准确率从43.0%变成42.0%,统计上没有显著差异。在希区柯克案例研究里,因为前面已经积累了20道相关问题的"热身",效果更明显:平均成本从0.81美元降到0.27美元,降了整整三倍。
更有意思的是成本节省的分布情况。把每道题的省钱比例从低到高排序,处在后10%(省得最少)的那批问题,裂解系统的花费大约是原来的1.24倍,也就是说这些问题因为完全没有可复用的信息,反而白白多花了一点"猜测"的成本。但排在前10%(省得最多)的那批问题,成本直接降到原来的九分之一。中位数上看,原本每题花0.246美元,裂解系统只要0.072美元,整体便宜了3.4倍。
这个分布告诉我们一件很实在的事:这套系统不是万能的,它赌的是"相关问题会反复出现"这个前提。如果每个问题都是孤零零的、和别的问题毫无关联,裂解只会增加一点点无谓的开销;但只要工作负载里存在哪怕一点点关联性,比如同一个用户连续追问同一个话题,或者同一家公司的多份文件被反复调阅,收益就会迅速累积起来。
论文数据 | FanOutQA基准 | 希区柯克案例研究
---|---|---
基线平均预填充token | 18.9万 | 56.5万
裂解后平均预填充token | 8.7万 | 16.1万
基线每题成本 | 0.26美元 | 0.81美元
裂解后每题成本 | 0.12美元 | 0.27美元
准确率变化 | 43.0%→42.0% | 未单独报告
中位数成本降幅 | 3.4倍 | -
第10百分位成本降幅 | 9倍 | -
这套机制和"缓存"到底有什么不一样
可能有读者会问,这不就是缓存吗,AI系统里不是早就有类似技术了?
这里需要澄清一个容易混淆的点。传统的语义缓存(semantic cache)解决的是"同一个问题被问了两次"的场景,如果新问题和历史问题足够相似,直接返回历史答案。而现在流行的KV缓存复用技术,解决的是"同一份文档被反复读取"时避免重复计算的问题,但这种缓存和具体的模型深度绑定,换个模型缓存就失效了,而且占用的存储空间往往比原始文本大得多。
裂解出来的知识则完全不同,它是用大白话或者结构化字段写下来的,占用空间小,不依赖任何特定模型,哪怕以后公司换了个更先进的AI模型来处理问题,这批裂解出来的知识依然能直接复用。这就好比你用手机备忘录记下的读书笔记,无论你以后换安卓还是苹果手机,这份笔记依然管用;但如果你依赖的是某个特定App生成的、只能在这个App内部读取的缓存文件,换了平台可能就全部作废了。这个差异,正是论文强调裂解出的"知识资产"能够持续增值、跨代际复用的原因。
论文管这种持续积累的价值叫"数据护城河",随着系统被越来越多用户使用,积累的结构化知识会越来越丰富,后来的问题命中已有结构的概率也越来越高,整个系统会越用越便宜、越用越聪明。
写在后面
读完这篇论文,最触动我的是一个反直觉的判断:研究者没有去纠结"怎么让AI一次性把文档读得更透",而是干脆承认了一件事,你不可能提前知道用户会问什么,所以与其死磕全量结构化,不如让每一次真实的提问都变成一次免费的"顺路勘探"。
这背后其实藏着一种对AI系统成本结构的清醒认识:贵的不是"多想一点",贵的是"重新翻一遍书"。一旦文档已经被打开、被读进上下文窗口,这笔钱已经花出去了,之后再多想一步的边际成本其实很低。这个洞察听起来简单,但把它转化成一套完整的读写协议、目录索引、验证机制,是需要相当扎实的工程判断力的。
论文里那个"第10百分位省9倍、第90百分位反而贵1.24倍"的数据分布也挺值得琢磨。它诚实地告诉你,这套系统不是包治百病的灵丹妙药,它的效果完全取决于你的问题之间有多大的关联性。如果你的工作场景里问题彼此毫不相干,这套机制反而会拖后腿。这种不回避局限性的实验呈现方式,比一味鼓吹"降本增效"要让人信服得多。
论文最后也坦承了一些没解决的问题,比如目前只支持简单的按主体、按关系读取,还没法支持计数、聚合、多表关联这类更复杂的查询;文档如果被修改了,怎么更新已经裂解出的知识也还是个开放问题。这些留白恰恰说明,这只是"自适应数据结构化"这个方向的第一步,而不是终点。
一个自然而然冒出来的问题是:如果这套机制被大规模部署在企业内部系统里,运行个一两年,那些私有的、从未公开训练过的公司文档会沉淀出一个什么样的知识网络?到那个时候,公司积累的可能不再只是文档本身,而是无数个AI智能体反复追问后留下的、结构化了的集体记忆。
Q&A
Q1:智能体式数据裂解是什么?
A:这是一种让AI在回答问题、打开文档的过程中,顺手把文档里其他可能有用的信息也提取出来存好的技术,这样后续相关问题就能直接查表回答,不用再重新打开文档,从而大幅降低AI处理长文档问题的成本。
Q2:智能体式数据裂解能省多少钱?
A:在FanOutQA测试集上能降低53%的成本,同时准确率基本不变;在模拟真实调查场景的案例研究中,成本降低了3倍;如果问题之间关联性强,最多能省到原来的九分之一。
Q3:智能体式数据裂解和普通的AI缓存有什么区别?
A:普通缓存只有原题重复出现才有用,而这套机制存的是从文档里提取的结构化知识,哪怕是完全不同的新问题,只要涉及相关实体,也能复用之前挖掘出的信息,而且这些知识不依赖特定AI模型,换模型依然能用。