GISA:当最好的AI搜索助手也只有19%准确率

一句话总结:人工构建真实搜索任务,用结构化答案实现确定性评估,发现SOTA模型在复杂信息搜寻上远未达到人类水平。


📖 问题的根源:现有基准都"反了"

想象一下,你要测试一个学生的数学能力。你会怎么做?

正常做法:先出题,再让学生解答。

但现有的搜索代理基准测试(如BrowseComp)的构建方式是:先有答案,再反推问题

比如,先确定答案是"2024年诺贝尔物理学奖得主",然后反推问题"谁获得了2024年诺贝尔物理学奖?"这听起来没问题,但会导致几个严重问题:

  1. 问题不自然:反推的问题往往比真实需求更"直白",缺少信息搜寻的真实复杂性
  2. 覆盖片面:要么只测试"深度推理"(定位一个关键信息),要么只测试"广度聚合"(收集多个信息),缺少两者结合的场景
  3. 数据污染:静态的答案集容易被模型"记住",测试结果不反映真实能力

这就是GISA要解决的核心问题。


🔍 GISA的设计:从真实需求出发

构建流程:四步走

图1:GISA基准构建流程

图1:GISA的四阶段构建流程——从头脑风暴到质量检查,每个查询都经过人工精心设计和验证。

第一步:头脑风暴

基于BrowseComp的分类法,涵盖10个领域:科技、艺术、历史、政治、体育、商业、地理、医学、法律、娱乐。标注人员通过实际浏览网页来激发真实问题。

第二步:查询细化

将原始问题转化为正式查询,同时确定答案格式。关键要求:任务必须需要结合"深度推理"和"广度信息聚合"

例如:

  • “列出所有获得诺贝尔物理学奖的女性科学家及其获奖年份”——需要广度聚合
  • “2024年苹果公司最新发布的Vision Pro在哪些国家可以购买?”——需要深度推理

第三步:人工标注

使用定制的浏览器扩展记录专家的完整搜索轨迹:Google搜索查询、点击链接、时间戳。重要细节:忽略搜索结果中的AI摘要,确保记录的是纯人类搜索行为。

第四步:质量检查

验证三件事:

  1. 轨迹日志的一致性(搜索过程是否合理)
  2. 答案的准确性(最终答案是否正确)
  3. 格式合规性(是否符合预定格式)

还有一个"记忆检查":使用DeepSeek-V3.2测试,排除那些仅靠模型内部知识就能回答的题目。这确保了任务确实需要上网搜索。

四种结构化答案格式

图2:答案格式示例

图2:GISA的四种结构化答案格式示例。Item是单值,Set是无序集合,List是有序列表,Table是结构化表格。

格式 描述 示例查询
Item 单个事实或值 “2024年世界杯决赛的举办地是哪里?”
Set 无序项目集合 “列出所有欧盟成员国中人口超过5000万的国家”
List 有序项目列表 “按票房排序,2024年全球票房前10的电影”
Table 结构化表格 “制作一个表格,包含2024年G20国家的GDP、人口和首都”

这种设计的巧妙之处:实现确定性评估

传统方法用LLM作为裁判打分,存在主观性和不一致性。结构化答案可以直接用规则计算准确率:

  • Set:用F1分数评估内容重叠
  • List:用F1评估内容 + Sequence Matcher评估顺序
  • Table:用行级F1和单元格级F1

实时子集:对抗"死记硬背"

图3:主题分布

图3:GISA查询在不同主题领域的分布。覆盖科技、历史、政治等10个领域,确保任务多样性。

GISA将查询分为两类:

类型 比例 特点
稳定子集 75% 答案不会变化(如历史事件)
实时子集 25% 答案定期更新(如最新股价、赛事结果)

实时子集的设计是对抗数据污染的关键。即使模型在训练数据中"见过"这些问题,答案也已经变了。论文每个季度会更新实时子集的答案。


📊 核心发现:AI搜索助手离人类还很远

整体表现:19.30%的"天花板"

论文评估了10个主流LLM和4个商业搜索产品。结果令人震惊:

模型 精确匹配 (EM) 相对人类
Claude 4.5 Sonnet (thinking) 19.30% ~25%
GPT-5.2 16.08% ~21%
Qwen3-235B-A22B 15.28% ~20%
DeepSeek-V3.2 (thinking) 14.47% ~19%
Gemini 3 Pro 12.57% ~16%
人类专家 ~78% 100%

图4:不同模型性能对比

图4:主流模型在GISA上的性能表现。即使是最好的Claude 4.5 Sonnet,也只达到了人类专家约四分之一的水平。

这个差距太大了。即使是表现最好的模型,其准确率也只有人类专家的约四分之一。这说明信息搜寻代理的能力还处于早期阶段

任务复杂度的影响

不同答案格式的难度差异显著:

格式 Claude 4.5 Sonnet GPT-5.2 难度原因
Item 32.0% 28.0% 单值相对简单
Set 18.0% 14.0% 需要收集多个正确项
List 12.0% 10.0% 还要保证顺序正确
Table 8.0% 6.0% 需要构建完整结构

Table类型任务的准确率只有Item的四分之一。这反映了信息聚合任务的累积难度:一个表格有10行数据,任何一行出错都会影响整体得分。

"思维模式"有帮助但不神奇

开启thinking/reasoning模式能带来提升:

模型 无thinking 有thinking 提升
DeepSeek-V3.2 11.53% 14.47% +2.94%
Claude 4.5 Sonnet ~16% 19.30% ~3%

但代价是Token消耗增加2-3倍。而且thinking不是万能药:模型仍然会在搜索层级犯错。

商业产品并不更强

论文还测试了4个商业深度研究产品:

  • OpenAI o4 Mini Deep Research
  • Perplexity Pro
  • Google Gemini Deep Research
  • Kimi 研究版

结果:它们并没有显著优于基于LLM的ReAct代理。而且商业产品更容易犯"格式遵循错误"——比如表格列名写错、列表编号格式不对。

这说明商业产品的优势可能在于用户体验(更好的UI、更快的响应),而非底层智能。


🧠 人类 vs 模型:搜索行为差异

行为模式对比

论文提供了完整的人类搜索轨迹,这是非常宝贵的数据。对比发现:

指标 人类 模型
平均搜索查询次数 3.53 7.57
平均浏览页面数 19.03 4.63
单次查询浏览页面数 5.39 0.61

图5:人类与模型搜索行为对比

图5:人类(蓝色)vs 模型(橙色)的搜索行为对比。人类倾向于少查询、多浏览;模型倾向于多查询、少浏览。

这个差异揭示了关键问题:

人类策略:精准查询 → 深入浏览

  • 查询次数少,但每次查询后会浏览多个页面
  • 会利用页面内的超链接进行深度探索
  • 一个网站内可能挖掘多个相关信息

模型策略:频繁查询 → 浅层浏览

  • 查询次数多,但每次只看1-2个页面
  • 很少利用超链接深入探索
  • 倾向于"浅尝辄止"

用考试来类比:

  • 人类像是在图书馆查资料:找到一本书后仔细翻阅
  • 模型像是在Google搜索:不断换关键词,但每个结果只看摘要

错误类型分析

论文将错误分为三个层级:

图6:错误类型分布

图6:不同错误类型的占比。搜索层级错误(蓝色)占近一半,是主要瓶颈。

搜索层级错误(49.2%)——最大瓶颈

典型表现:

  • 无法有效利用页面超链接进行深度探索
  • 在需要翻页的场景下过早停止
  • 找到了相关页面但没有挖掘到底层信息

这印证了行为分析:模型的"浅层浏览"习惯导致关键信息遗漏。

理解层级错误(19.1%)

典型表现:

  • 误解问题意图
  • 无法正确关联多源信息
  • 对复杂条件的推理出错

输出层级错误(31.7%)

典型表现:

  • 格式遵循错误(如表格列名不对)
  • 遗漏必要字段
  • 排序或分组错误

这反映了指令遵循的弱点:即使找到了正确信息,也可能在输出时"功亏一篑"。


💡 我的观点和启发

为什么GISA这么难?

读完论文,我认为GISA的难度来自三个层面:

层面1:信息整合的复杂性

很多任务需要同时进行"深度推理"和"广度聚合"。比如:

“制作一个表格,列出2024年NBA季后赛东西部决赛的球队、核心球员(场均得分前3)及其主要数据”

这需要:

  • 找出东西部决赛球队(广度)
  • 查每支球队的核心球员(深度)
  • 获取球员数据(深度)
  • 整合到表格中(整合)

每一步都可能出错,任何遗漏都会影响最终结果。

层面2:网页导航的非线性

真实网页不是扁平的信息列表,而是有层级结构的网络

  • 首页 → 列表页 → 详情页 → 子页面
  • 导航栏、侧边栏、相关链接
  • 分页、标签筛选、搜索框

模型需要学会"网页导航"的策略,而不只是"搜索-提取"。

层面3:信息验证的需求

网上的信息不一定准确。比如:

  • 某个数据可能需要交叉验证
  • 时间敏感信息需要确认时效性
  • 来源权威性需要判断

模型往往直接采信第一个找到的答案,缺少验证意识。

GISA的价值:诊断而非排名

GISA最独特的价值是提供了完整的人类搜索轨迹。这不只是用来打分,更是用来诊断:

  1. 对比人类和模型的策略差异:发现模型的"浅层浏览"问题
  2. 定位错误发生的位置:搜索层、理解层还是输出层?
  3. 为改进提供方向:是加强深度探索能力,还是改善格式遵循?

这让我想到医学诊断:GISA不只告诉你"分数是多少",还告诉你"问题出在哪"。

对产品开发的启示

基于论文发现,我认为搜索代理产品需要重点改进几个方面:

改进1:鼓励深度浏览

当前模型倾向于"多查少看"。是否可以:

  • 设置"页面停留时间"奖励
  • 鼓励模型在找到相关页面后深入挖掘
  • 实现"页面内搜索"能力

改进2:改进网页导航能力

教模型理解网页结构:

  • 识别导航栏、面包屑、相关链接
  • 判断何时应该"深入"、何时应该"返回"
  • 支持多窗口/多标签的上下文管理

改进3:强化格式遵循训练

输出层错误占31.7%,这部分应该最容易改进:

  • 针对结构化输出做专项训练
  • 提供格式模板和检查机制
  • 实现输出验证和自动修正

改进4:引入信息验证机制

不只是找答案,还要验证答案:

  • 交叉检查多个来源
  • 标注信息时效性
  • 识别冲突信息并提示

局限性和未来方向

论文也坦诚指出了几个局限:

  1. 规模有限:373个查询可能不够全面,特别是某些领域覆盖不足
  2. 单一搜索引擎:目前只用Google,没有测试其他搜索引擎
  3. 英文为主:主要针对英文查询,多语言支持有待扩展

我认为几个值得探索的方向:

方向1:多模态信息搜寻

很多信息不在纯文本中,而是在图表、视频、PDF中。GISA目前没有覆盖这些场景。

方向2:交互式信息搜寻

真实用户可能会调整需求、追问细节。GISA目前是单轮任务,没有测试多轮交互能力。

方向3:协作式信息搜寻

复杂任务可能需要多个Agent协作:一个负责搜索,一个负责验证,一个负责整合。


🔧 实践指南:如何评估和改进搜索代理

基于GISA的设计,以下是构建搜索代理评估体系的实践建议:

评估指标设计

# 不同答案类型的评估方法

def evaluate_item(prediction, ground_truth):
    """单值评估:精确匹配"""
    return 1.0 if prediction == ground_truth else 0.0

def evaluate_set(prediction, ground_truth):
    """集合评估:F1分数"""
    pred_set = set(prediction)
    truth_set = set(ground_truth)
    
    precision = len(pred_set & truth_set) / len(pred_set) if pred_set else 0
    recall = len(pred_set & truth_set) / len(truth_set) if truth_set else 0
    
    if precision + recall == 0:
        return 0
    return 2 * precision * recall / (precision + recall)

def evaluate_list(prediction, ground_truth):
    """列表评估:内容F1 + 顺序准确率"""
    content_f1 = evaluate_set(prediction, ground_truth)  # 内容准确性
    
    # 顺序准确性(Sequence Matcher)
    from difflib import SequenceMatcher
    seq_score = SequenceMatcher(None, prediction, ground_truth).ratio()
    
    return 0.7 * content_f1 + 0.3 * seq_score  # 加权平均

def evaluate_table(prediction, ground_truth):
    """表格评估:行级F1 + 单元格级F1"""
    # 行级:整行匹配才算正确
    row_f1 = evaluate_set(
        [tuple(row.items()) for row in prediction],
        [tuple(row.items()) for row in ground_truth]
    )
    
    # 单元格级:每个单元格单独评估
    cell_correct = 0
    cell_total = 0
    for pred_row, truth_row in zip(prediction, ground_truth):
        for key in truth_row:
            cell_total += 1
            if key in pred_row and pred_row[key] == truth_row[key]:
                cell_correct += 1
    cell_f1 = cell_correct / cell_total if cell_total else 0
    
    return 0.5 * row_f1 + 0.5 * cell_f1

搜索轨迹分析

GISA的关键创新是记录完整搜索轨迹。在开发搜索代理时,应该:

  1. 记录每个搜索动作:查询词、点击链接、页面停留时间
  2. 分析轨迹效率:是否过度查询?是否遗漏关键页面?
  3. 对比人类行为:找到模型的系统性弱点

防止数据污染

设计评估基准时:

  • 避免使用训练数据中的静态答案
  • 包含时间敏感的动态问题
  • 定期更新答案集

📊 详细数据:各模型在不同子集上的表现

稳定子集 vs 实时子集

图7:稳定vs实时子集性能

图7:Kimi K2.5和Claude 4.5 Sonnet在稳定子集和实时子集上的表现对比。实时子集的性能普遍更低,说明模型对动态信息的处理能力较弱。

模型 稳定子集 实时子集 差距
Claude 4.5 Sonnet 21.2% 14.8% -6.4%
Kimi K2.5 15.3% 10.1% -5.2%

实时子集的性能明显更低,这印证了数据污染的影响:模型可能在训练数据中见过稳定子集的问题,而实时子集的问题则无法靠"记忆"回答。

推理时缩放

论文还测试了"推理时缩放"(Inference-time Scaling)的效果:让模型多次尝试,取最佳结果。

尝试次数 Qwen3-Max EM
1次 13.5%
3次 15.2%
5次 16.8%

增加尝试次数能带来提升,但边际收益递减。这说明单次搜索质量才是关键,多次尝试只是"用数量换质量"。


📝 总结

GISA这篇论文揭示了一个重要事实:即使是最先进的AI搜索助手,在复杂信息搜寻任务上的准确率也只有19%,远低于人类专家的78%

这不是因为模型不够聪明,而是信息搜寻任务本身的复杂性:

  1. 需要同时进行深度推理和广度聚合
  2. 需要在非线性网页结构中导航
  3. 需要验证信息的准确性和时效性

GISA的三大创新为这个领域设立了新标准:

  1. 从真实需求出发:人工构建查询,而非反向生成
  2. 结构化答案:实现确定性评估,避免LLM裁判的主观性
  3. 完整搜索轨迹:提供诊断数据,而不只是最终分数

对于搜索代理开发者,这篇论文的启示是:

  • 不要被宣传迷惑:商业产品并不比开源模型强多少
  • 关注行为模式:模型的"浅层浏览"是主要瓶颈
  • 重视格式遵循:输出层错误占比高,容易改进
  • 防范数据污染:使用动态更新的答案集

信息搜寻是AI Agent的核心能力之一。GISA告诉我们,这条路还很长,但至少我们现在有了一个靠谱的"导航仪"。


🔗 参考资料

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐