Gen-Searcher: Reinforcing Agentic Search for Image Generation

Paper: arXiv:2603.28767v2 Code: tulerfeng/Gen-Searcher Code reference: main @ e5078d31 (2026-04-07)

1. Motivation (研究动机)

1.1 当前图像生成模型的真实短板

这篇论文针对的不是普通 prompt following,而是“需要先查资料再生成”的知识密集型图像生成。 现有闭源和开源文生图模型可以生成高清图像,但内部知识被冻结在训练语料时间点,无法可靠回答最新事件、细粒度人物、比赛、游戏版本、地理气象或特定文化符号。 当 prompt 要求“准确的人物外观 + 正确文字 + 真实物体/场景 + 可验证事实”时,单纯把原始 prompt 喂给图像模型会同时暴露知识缺失和视觉参考缺失。 传统 RAG/搜索增强主要服务文本回答;图像生成除了需要事实文本,还需要视觉参考图,例如人物脸、队服、奖杯、地标、菜单、标识和空间布局。 因此,问题不是“把搜索结果拼到 prompt 里”这么简单,而是训练一个会决定何时搜索、搜什么、选哪张参考图、何时停止并交付 generation-ready prompt 的多轮 agent。

1.2 为什么这个问题值得做

第一,真实创作场景经常要求最新信息:赛事、明星、游戏版本、新闻地点、旅游天气、活动海报等都可能在模型训练之后才出现。 第二,知识错误会直接体现在图像中:文字数字错、人物身份错、服饰错、标志错,比文本回答里的轻微幻觉更显眼。 第三,如果 agent 能把外部证据组织成稳定的 grounded prompt 和 reference images,它可以作为上游模块增强多个下游图像生成器。 第四,搜索策略本身可以通过 SFT 和 RL 学习,而不是依赖固定手写流程;这使 test-time search 成为可训练能力。 第五,该方向把多模态 agent、搜索增强、RL post-training 和图像生成连接起来,是“Reasoning & Test-Time Scaling”在生成任务上的自然延伸。

1.3 论文想解决的具体目标

输入:一个搜索密集型图像生成 prompt,通常包含多个实体、事实、时间、地点、视觉属性或文字渲染要求。 过程:模型多轮调用 searchimage_searchbrowse,在文本证据和视觉证据之间迭代。 输出:一个更完整的 gen_prompt,以及一组用 IMG_### 标识的 reference images。 训练:先用轨迹数据 SFT 学基本工具使用,再用 agentic RL 优化长期搜索策略。 评价:构建 KnowGen benchmark,用 K-Score 同时评价事实、视觉正确性、文字准确性、faithfulness 和 aesthetics。

1.4 与普通 search-augmented generation 的差别

文本 QA 的搜索结果通常只需要支持一个自然语言答案。 图像生成的搜索结果必须同时支持画面构图、主体外观、局部细节、可读文字和下游生成器的参考图条件。 文本证据不一定能转化为图像质量;反过来,视觉参考图也可能缺少事实说明。 Gen-Searcher 的核心动机就是把这两种证据在 agent 轨迹中合并,并用双奖励让它们都对最终图像有用。

Figure 1 解读:论文开篇用多个搜索密集型样例说明目标任务。共同点是 prompt 不是只描述风格,而是要求模型拿到外部世界知识后再生成,例如最新人物、文化物件、海报文字和地点细节。

2. Idea (核心思想)

2.1 一句话核心洞察

Gen-Searcher 的核心洞察是:图像生成的“外部知识”不应只作为检索文本追加到 prompt,而应由一个多模态 search agent 主动规划、验证、选择视觉引用,并把搜索轨迹训练成可迁移的 test-time policy。 它把 image generation 之前的 research 过程显式建模为 agentic search:模型需要知道何时查事实、何时找参考图、何时浏览网页,以及何时停止。 论文的新意不只是“加搜索”,而是围绕这个目标同时构造数据、benchmark、SFT/RL 训练方案和文本/图像双奖励。

2.2 关键创新

数据:自动构造搜索密集型 prompts、agentic trajectories 和 ground-truth synthesis images,得到约 17K 高质量样本。 训练集:从中分出 Gen-Searcher-SFT-10k 和 Gen-Searcher-RL-6k,分别用于 SFT 与 RL。 Benchmark:选取 630 个 human-verified 样本组成 KnowGen,覆盖 Science & Knowledge 与 Pop Culture & News。 Agent:基于 Qwen3-VL-8B-Instruct,学习 searchimage_searchbrowse 的多轮 ReAct 式交互。 奖励:把图像结果 K-Score 作为 ,再加入评估 final answer 是否足够支持生成的 。 迁移:虽然 RL rollout 主要用 Qwen-Image / Qwen-Image-Edit,但推理时可接 Seedream 4.5 与 Nano Banana Pro。

2.3 与既有方法的本质区别

与普通 Qwen-Image baseline 相比,Gen-Searcher 不直接从原始 prompt 生成,而是先搜索事实和参考图。 与手写 workflow 相比,Gen-Searcher 通过 SFT 学轨迹分布,通过 RL 进一步优化何时搜索与如何整合证据。 与单纯 image reward RL 相比,双奖励减少了下游生成器随机性带来的高方差。 与只优化文本充分性的 agent 相比,图像奖励迫使搜索结果必须对真实合成图像有效。 与内部带搜索能力的闭源图像系统相比,论文提供了开源数据、模型、代码和 benchmark,可复现地研究该问题。

3. Method (方法)

3.1 总体框架

整体系统由四个层次组成:数据构造、KnowGen benchmark、Gen-Searcher agent、两阶段训练。 数据构造负责产生 search-intensive prompt、搜索轨迹和合成 ground truth。 KnowGen 负责把 held-out 样本整理成评估集,并定义 K-Score。 Gen-Searcher agent 负责 test-time multi-hop search,并输出 gen_promptreference_images。 训练先用 SFT 建立工具使用能力,再用 GRPO 和双奖励优化搜索策略。

Figure 2 解读:图中对比了传统图像生成与 Gen-Searcher。传统模型只依赖 frozen knowledge,遇到需要外部世界信息的 prompt 容易错;Gen-Searcher 在生成前主动搜索文本和视觉参考,把 evidence 变成 grounded prompt 与 reference images。

3.2 数据构造流水线

Figure 3 解读:数据管线分四步:先构造需要搜索的文本 prompt;再生成 agentic search trajectory,得到 grounded prompt 和 reference images;随后用 Nano Banana Pro 合成 ground-truth images;最后用 Seed1.8 与规则过滤筛掉质量差或搜索不一致的样本。

第一步 Text Prompt Construction:论文用 Gemini 3 Pro 生成多跳搜索密集型 prompt。覆盖类别包括 Anime、Architecture、Art、Astronomy、Biology、Celebrities、Chemistry、Culture、Engineering、Film、Game、Geography、History、Industry、Medicine、Physics、Politics、Posters、Religion、Sports。这些 prompt 被设计为无法通过单次浅层搜索直接解决,需要组合多个证据。

论文还把已有 deep research QA 数据集转换成 image-generation-oriented prompts。第二步 Agentic Trajectory Generation:用 agent 生成多轮搜索轨迹,轨迹中包含 search query、image query、tool response、思考和最终 grounded output。轨迹目标不是回答问题,而是产生可供图像生成器使用的 prompt 和 reference image set。第三步 Ground-Truth Image Synthesis:使用 Nano Banana Pro 合成对应图像,作为训练与评估中的 synthesis ground truth。

第四步 Data Filtering and Curation:用 Seed1.8 从是否真的需要搜索、内容正确性、prompt faithfulness、视觉美观、文字清晰度和安全性等维度打分。规则过滤还会删除 token 太长或搜索结果不一致的样本。过滤后约得到 17K 高质量样本。其中 630 个 human-verified 样本作为 KnowGen benchmark。剩余约 16K 样本拆成 Gen-Searcher-SFT-10k 与 Gen-Searcher-RL-6k。论文强调训练集与 benchmark 无重叠,以避免 benchmark 泄漏。

3.3 KnowGen benchmark 与 K-Score

Figure 4a 解读:KnowGen 的 630 个样本被分为 Science & Knowledge 与 Pop Culture & News 两大子集。前者包含科学、医学、工程、地理等可验证知识;后者覆盖影视、游戏、名人、体育、政治和新闻等更动态的现实场景。

Figure 4b 解读:示例说明 KnowGen prompt 通常同时要求事实正确和视觉正确,例如对象、日期、地点、文字、服装或标志必须匹配外部证据。它不是单纯美观评测,而是搜索 grounding 评测。

KnowGen 与传统 T2I benchmark 的区别在于:它显式要求外部搜索和证据聚合。 每个样本通常包含原始 prompt、ground-truth reference image 和用于 GPT judge 的评估输入。 评价模型时,系统把原始 prompt、GT image、model-generated image 一起交给 GPT-4.1 judge。 四个维度分别是 faithfulness、visual_correctness、text_accuracy、aesthetics。 Faithfulness:画面结构是否跟 prompt 一致,包括主体、关系、场景和格式。 Visual correctness:关键视觉属性是否符合参考图或可验证事实。 Text accuracy:图中必须出现的数字、名称、标牌和说明文字是否正确可读。 Aesthetics:整体视觉质量、构图、自然度和观感。 每个维度使用 离散分数。 K-Score 对 visual correctness 和 text accuracy 权重最高,因为这两个维度最直接对应 search-grounded generation 的目标。 这一定义很重要:如果一个模型图很好看但实体或文字错,K-Score 会明显惩罚;如果画面结构基本正确但关键事实不可验证,也会失分。

3.4 Agent 交互协议与搜索工具

Figure 5 解读:示例展示 agent 在同一任务中交替进行文本搜索和图像搜索。它先查温度、降雨概率等事实,再检索 Easter Island、Oymyakon、Salar de Uyuni 等视觉参考,最后输出包含 gen_promptreference_images 的 JSON。

Gen-Searcher 使用 ReAct 风格输出:每轮必须先 <think>...</think>,再二选一输出 <tool_call>...</tool_call><answer>...</answer>search 工具返回网页文本搜索结果,主要用于实体、事件、日期、地点和事实描述。image_search 工具返回图像结果、URL、本地路径、标题和页面 URL,主要用于人物、物体、地标、服装和场景外观。browse 工具读取网页并摘要,在搜索摘要不足或需要深入网页证据时使用。代码实现中 create_gen_image_tools() 返回的字典 key 是 image_searchsearchbrowse

agent 的 custom_call_tool() 按字典 key 调用工具。JinaBrowseTool 类内部 name="visit",但实际工具分发依赖外层字典 key,所以 prompt 中的 browse 仍能找到对应工具对象。对 image_search,代码会把结果注册到 ImageIdManager,分配全局唯一 IMG_###。模型最终只能引用 IMG_###,不能直接输出 URL 或本地路径;调用方再把这些 ID 映射回完整图像信息。默认每次 image search 至多向模型输入 5 张图。系统 prompt 要求至少调用一次 image_search,因为图像任务需要视觉 grounding。

prompt 规则要求全局工具调用上限最多 8 次;代码默认 MAX_LLM_CALL_PER_RUN=9,这相当于给 8 次工具调用后保留一次 final answer 机会。

3.5 两阶段训练

Stage 1: SFT。以 Qwen3-VL-8B-Instruct 为 base model,在 Gen-Searcher-SFT-10k 上学习多轮工具使用和 final answer 格式。 SFT 学到的是“能完成任务”的初始策略:如何发 query、如何读 tool response、如何选 reference images、如何输出 grounded prompt。 Stage 2: Agentic RL。用 Gen-Searcher-RL-6k 继续训练,让模型从多个 rollout 的最终 reward 中优化长期搜索策略。 RL 不是只优化单步 tool call,而是优化一整条 trajectory 对最终图像生成是否有帮助。 论文采用 GRPO:同一个 query 下采样一组输出,通过组内 reward 均值和标准差归一化 advantage。

双奖励定义为: 其中 使用最终生成图像的 K-Score, 评价 final answer 中的 gen_promptreference_images 是否包含足够、正确且对生成有用的信息。论文设置

GRPO advantage: GRPO objective: 直觉上, 让模型不要只赌下游生成器偶然成功; 又防止模型只写出“看起来资料充足”的文本而不关心最终图像。

3.6 源码级伪代码:Agent rollout

def run_gen_searcher_agent(question, llm, tools, max_llm_calls=9):
    messages = [
        {"role": "system", "content": SYSTEM_PROMPT_GEN_IMAGE + today_date()},
        {"role": "user", "content": question},
    ]
    img_manager = ImageIdManager()
    prediction = {}
    termination = "unknown"
 
    for round_idx in range(max_llm_calls):
        response = llm.generate(messages)
        content = response.text
 
        if "<tool_call>" in content and "</tool_call>" in content:
            messages.append({"role": "assistant", "content": content.strip()})
            call = json5.loads(extract_between(content, "<tool_call>", "</tool_call>"))
            tool_name = call["name"]
            tool_args = call.get("arguments", {})
            raw_result = await tools[tool_name].call(**tool_args)
 
            if tool_name == "image_search":
                refs = parse_image_search_results(raw_result, max_items=10)
                refs = img_manager.register_images(refs)
                tool_text = img_manager.format_image_search_response(tool_args["query"], refs)
                images = [{"image": r["local_path"]} for r in refs[:5] if os.path.exists(r.get("local_path", ""))]
                messages.append({"role": "user", "content": f"<tool_response>\n{tool_text}\n</tool_response>", "images": images})
            else:
                messages.append({"role": "user", "content": f"<tool_response>\n{raw_result}\n</tool_response>"})
            continue
 
        if "<answer>" in content and "</answer>" in content:
            ans = extract_answer_json_from_text(content)
            enriched = []
            for ref in ans["reference_images"][:5]:
                img_id = ref["img_id"]
                src = img_manager.img_map[img_id]
                enriched.append({**src, "img_id": img_id, "note": ref.get("note", "")})
            prediction = {"gen_prompt": ans["gen_prompt"], "reference_images": enriched}
            termination = "answer"
            break
 
        messages.append({"role": "user", "content": "Format error: output either one tool_call or one answer."})
 
    return {"question": question, "messages": messages, "prediction": prediction, "termination": termination}

3.7 源码级伪代码:Reward 与图像生成

def compute_gen_searcher_reward(episode):
    task = episode.task
    pred = task.get("prediction", {})
    if not pred or "error" in pred:
        return 0.0
 
    gen_prompt = pred.get("gen_prompt", "")
    ref_paths = [r["local_path"] for r in pred.get("reference_images", []) if os.path.exists(r.get("local_path", ""))]
    if not gen_prompt or not (1 <= len(ref_paths) <= 4):
        return 0.0
 
    generated = call_qwen_edit_to_generate_image(
        prompt=gen_prompt,
        reference_images=ref_paths[:3],
        timeout=int(os.environ.get("GEN_IMAGE_TIMEOUT", "1800")),
    )
    if generated is None:
        return 0.0
 
    image_reward, worldgen_json = call_gpt41_worldgen_score(
        generated_image_path=save_generated_image(generated),
        gt_image_path=task["gt_image"],
        prompt=task["question"],
        sample_id=str(task["id"]),
        api_key=os.environ["GEN_REWARD_API_KEY"],
        api_base=os.environ.get("GEN_REWARD_API_BASE_URL", ""),
        model=os.environ.get("GEN_REWARD_MODEL", "gpt-4.1"),
    )
 
    text_coef = float(os.environ.get("GEN_REWARD_TEXT_COEF", "0"))
    if text_coef > 0:
        text_reward, text_json = call_text_reward_score(task["question"], task["gt_image"], format_answer(pred), task["id"], api_key, api_base)
        return (1.0 - text_coef) * image_reward + text_coef * text_reward
    return image_reward

3.8 源码级伪代码:工具构造

def create_gen_image_tools():
    return {
        "image_search": UniversalImageSearchTool(),  # 搜参考图,保存 local_path 并返回 title/url/page_url
        "search": WebTextSearchTool(),              # Serper text search,返回网页 snippets
        "browse": JinaBrowseTool(),                # Jina read-proxy + summary model
    }

3.9 源码级伪代码:RL 训练配置

def launch_rl_training():
    config = {
        "algorithm.adv_estimator": "grpo",
        "data.train_batch_size": 8,
        "actor_rollout_ref.rollout.n": 6,
        "actor_rollout_ref.actor.optim.lr": 1e-6,
        "actor_rollout_ref.rollout.temperature": 0.7,
        "actor_rollout_ref.rollout.top_p": 0.95,
        "data.max_prompt_length": 4096,
        "data.max_response_length": 30000,
        "rllm.workflow.n_parallel_tasks": 64,
        "rllm.workflow.n_parallel_tools": 128,
        "trainer.n_gpus_per_node": 8,
        "trainer.total_epochs": 5,
    }
    return AgentTrainer(workflow_class=GenImageDeepResearchWorkflow, reward_function=gen_image_deepresearch_reward_fn_async, config=config)

3.10 Code-to-paper mapping

Code reference: main @ e5078d31 (2026-04-07) — pseudocode and mapping based on this commit

Paper ConceptSource FileKey Class/Function
ReAct search agent / final gen_prompt + reference_imagesGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/gen_image_deepresearch_agent.pySYSTEM_PROMPT_GEN_IMAGE, GenImageDeepResearchAgent.run, ImageIdManager, extract_answer_json_from_text
Workflow wrapper and episode conversionGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/gen_image_deepresearch_workflow.pyGenImageDeepResearchWorkflow.run, _result_to_episode, _should_mask_episode
Tool registryGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/gen_image_deepresearch_tools_executor.pycreate_gen_image_tools()
Web / image / browse toolsGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/tools/gen_web_tools.pyWebTextSearchTool, UniversalImageSearchTool, JinaBrowseTool
Image generation rewardGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/gen_image_deepresearch_reward.pyGenImageRewardFn.compute_reward, call_qwen_edit_to_generate_image, call_gpt41_worldgen_score
Text rewardGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/gen_image_deepresearch_reward.pycall_text_reward_score, GEN_REWARD_TEXT_COEF
RL training entryGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/train_image_deepresearch_workflow_fsdp_gen.pyAgentTrainer(... workflow_class=GenImageDeepResearchWorkflow ...)
RL launch configGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/run/gen_image_deepresearch_8B_fsdp_8gpu.shadv_estimator=grpo, rollout/group/config overrides
SFT launch configGen-DeepResearch-SFT/LLaMA-Factory/examples/train_full/gen_qwen3_sft.yamldataset=gen_sft, template=qwen3_vl, learning_rate=1e-5
KnowGen evaluator alignmentKnowGen_Eval/gpt_eval_knowgen.sh and reward moduleGPT-4.1 score prompt / K-Score formula reused in RL reward

3.11 Paper-code gap 与实现注意点

论文公式写 ,并说 。释放代码中 GenImageRewardFn.__init__ 默认 GEN_REWARD_TEXT_COEF=0,只有显式设置环境变量大于 0 时才会调用 call_text_reward_score() 并混合文本奖励。因此,如果直接按 README/脚本默认启动,源码路径更像 image reward only;复现实验中的 dual reward 需要检查运行环境是否设置 GEN_REWARD_TEXT_COEF=0.5 或同等值。

论文写 browse 工具,源码工具字典 key 为 browse,类内部名字为 visit;由于 agent 调用按字典 key 分发,这不是功能性冲突。论文说 RL group size 为 6;脚本对应 n_resp_per_prompt=6。论文说最多 10 interaction turns;源码 prompt 层要求最多 8 次工具调用,MAX_LLM_CALL_PER_RUN=9 允许再输出 final answer。论文说每 turn 返回最多 5 张图;源码 MAX_IMAGES_PER_SEARCH_FOR_MODEL=5 对齐。论文中的 image reward 使用 K-Score;

源码 call_gpt41_worldgen_score() 使用 GPT-4.1 并按 0.1 faithfulness + 0.4 visual + 0.4 text + 0.1 aesthetics 计算。

4. Experimental Setup (实验设置)

4.1 训练数据与 benchmark

SFT 数据:Gen-Searcher-SFT-10k,来自过滤后的训练 split,用于监督学习多轮搜索轨迹。 RL 数据:Gen-Searcher-RL-6k,用于 agentic reinforcement learning。 Benchmark:KnowGen,630 个 human-verified held-out 样本。 外部 benchmark:WISE,用于验证在另一个知识型图像生成基准上的泛化。 训练样本与 KnowGen benchmark 明确无重叠。

4.2 训练模型与硬件

Base model:Qwen3-VL-8B-Instruct。 训练得到:Gen-Searcher-8B。 论文训练硬件:8 × NVIDIA H800 GPUs。 SFT optimizer:AdamW。 RL optimizer:AdamW。 SFT learning rate:。 RL learning rate:。 Batch size:SFT 与 RL 均为 8。 RL rollout image generator:Qwen-Image-Edit-2509,额外部署在 16 × H800 GPUs。 Browse summary model:Qwen3-VL-30B-Instruct-A3B,额外部署在 8 × H800 GPUs。 论文说明 Qwen-Image-Edit-2509 的文字渲染优于 2511,所以用于 rollout image generation。 训练总耗时约 1 天。

4.3 推理与 rollout 设置

Group size:6。 Maximum interaction turns:10。 每轮最多返回图片数:5。 RL 最大上下文长度:36K。 模型每轮 response length:4K。 推理 decoding:temperature = 0.6,top-p = 0.9。 推理最大上下文长度:64K。 若 Gen-Searcher 因上下文过长或工具失败无法输出 final search-grounded prompt,则 fallback 到原始 prompt 生成。 对 Qwen-Image / Qwen-Image-Edit 这种区分 text-only 和 editing model 的系列:纯文本输入用 text-only model,带 reference images 时用 editing model。

4.4 Released code config 核对

SFT YAML:dataset=gen_sft。SFT YAML:template=qwen3_vl。SFT YAML:cutoff_len=32768。SFT YAML:per_device_train_batch_size=1。SFT YAML:learning_rate=1.0e-5。SFT YAML:num_train_epochs=2.0。SFT YAML:DeepSpeed config 为 ds_z3_config.json。RL shell:adv_estimator="grpo"。RL shell:train_prompt_bsz=8。RL shell:n_resp_per_prompt=6

RL shell:train_prompt_mini_bsz=8。RL shell:max_prompt_length=4096。RL shell:max_response_length=30000。RL shell:temperature=0.7top_p=0.95top_k=-1。RL shell:gen_tp=2。RL shell:actor_ppo_max_token_len_per_gpu=37000infer_ppo_max_token_len_per_gpu=37000

RL shell:rllm.workflow.n_parallel_tasks=64rllm.workflow.n_parallel_tools=128。RL shell:trainer.n_gpus_per_node=8trainer.total_epochs=5trainer.save_freq=20。Reward module:Qwen Edit payload 使用 seed=0true_cfg_scale=4.0num_inference_steps=40guidance_scale=1.0num_images_per_prompt=1

Reward module:reference image 数量要求默认 1 到 4,但真正传给 Qwen Edit 的上限是 MAX_REF_IMAGES_FOR_QWEN=3

4.5 Baselines 与评价维度

KnowGen 表中包含闭源/商业基线:GPT-Image-1、GPT-Image-1.5、Nano Banana、Nano Banana Pro、Seedream 4.0、Seedream 4.5。 KnowGen 表中包含开源基线:SD-3.5-Medium、SD-3.5-Large、Lumina-Image 2.0、FLUX.1-dev、FLUX.1-Krea、FLUX.2-klein-4B、FLUX.2-klein-9B、BAGEL、HunyuanImage-3.0、Qwen-Image、Z-Image-Turbo、Z-Image。 增强模型:Gen-Searcher-8B + Qwen-Image、Gen-Searcher-8B + Seedream 4.5、Gen-Searcher-8B + Nano Banana Pro。 WISE 表中比较 FLUX、SD、Emu3、Qwen-Image、HunyuanImage-3.0、LongCat-Image 与 Gen-Searcher-8B + Qwen-Image。 消融包含 Qwen-Image baseline、手写 workflow、SFT-only、去掉 text reward、去掉 image reward 和完整模型。

5. Experimental Results (实验结果)

5.1 KnowGen 主结果

MethodOverall K-Score关键解读
Lumina-Image 2.09.43开源基线很难处理搜索依赖细节
FLUX.1-dev10.71视觉质量不等于知识 grounding
SD-3.5-Large12.53text accuracy 和 visual correctness 仍低
HunyuanImage-3.014.15强开源模型也缺少显式搜索
Qwen-Image14.98作为主要 open-source rollout/backbone baseline
Seedream 4.531.01闭源强基线,但仍可被 Gen-Searcher 增强
GPT-Image-1.544.97闭源模型明显强于普通开源模型
Nano Banana Pro50.38最强 baseline
Gen-Searcher-8B + Qwen-Image31.52相比 Qwen-Image +16.54
Gen-Searcher-8B + Seedream 4.547.29相比 Seedream 4.5 +16.28
Gen-Searcher-8B + Nano Banana Pro53.30相比 Nano Banana Pro +2.92,表中最高

KnowGen 对现有开源图像生成器很难:多数开源 baseline Overall K-Score 在 9 到 15 左右。 Qwen-Image baseline 为 14.98。 Gen-Searcher-8B + Qwen-Image 达到 31.52,提升 16.54。 Seedream 4.5 baseline 为 31.01。 Gen-Searcher-8B + Seedream 4.5 达到 47.29,提升 16.28。 Nano Banana Pro baseline 为 50.38。 Gen-Searcher-8B + Nano Banana Pro 达到 53.30,仍有 2.92 提升,并成为表中最高。 这说明 Gen-Searcher 学到的不是只适配 Qwen-Image 的 prompt trick,而是可迁移的搜索与 grounding policy。 论文还观察到提升主要来自 visual correctness 和 text accuracy,这符合 K-Score 的设计目标。 aesthetics 有时略降,可能因为多张参考图和复杂事实约束会限制画面构图自由度。

5.2 WISE 结果

MethodCulturalTimeSpaceBiologyPhysicsChemistryOverall
FLUX.1-dev0.480.580.620.420.510.350.50
Qwen-Image0.620.630.770.570.750.400.62
HunyuanImage-3.00.580.570.700.560.630.310.57
LongCat-Image0.660.610.720.660.720.490.65
Gen-Searcher-8B + Qwen-Image0.800.710.820.760.740.750.77

WISE 上 Gen-Searcher-8B + Qwen-Image Overall 为 0.77。 Qwen-Image baseline 为 0.62,因此提升 0.15。 Chemistry 从 0.40 提升到 0.75,是最明显的类别提升。 Physics 从 0.75 到 0.74 略低,说明并非所有类别都单调提升。 结果说明 Gen-Searcher 不只适用于新提出的 KnowGen,也能迁移到已有知识型图像 benchmark。

5.3 消融实验

VariantKnowGen相对上一关键阶段的含义
Qwen-Image14.98无搜索增强
Qwen-Image + workflow22.91手写搜索流程已经有帮助,+7.93
Qwen-Image + Gen-Searcher-SFT28.15学习轨迹优于手写规则,+5.24
Qwen-Image + Gen-Searcher w.o. text reward29.59仅 image reward 有效但不最佳
Qwen-Image + Gen-Searcher w.o. image reward29.36仅 text reward 有效但不最佳
Qwen-Image + Gen-Searcher31.52双奖励完整模型最佳

从 14.98 到 22.91 说明外部搜索本身有明显价值。 从 22.91 到 28.15 说明学习轨迹比人工规则更会组织多步 evidence。 从 28.15 到 31.52 说明 RL 进一步优化了长期搜索决策。 去掉 text reward 得到 29.59,低于完整模型 1.93。 去掉 image reward 得到 29.36,低于完整模型 2.16。 两个去除项都下降,支持论文“双奖励互补”的主张。 Text reward 更直接监督信息是否充分且正确。 Image reward 更直接监督这些信息是否能转化为最终图像质量。

5.4 定性结果

Figure 6 解读:定性对比显示,Gen-Searcher 通常能通过搜索参考图改善人物、器物、建筑和海报文本等细节。不过论文也指出,当下游生成器本身无法稳定实现多主体一致性时,即使搜索内容正确,最终图像仍可能失败。

Nano Banana Pro 虽然强,但如果不能进行 image search,对细粒度视觉属性仍会出错。 Gen-Searcher 通过检索参考图弥补了这一点。 对 Qwen-Image 来说,搜索可以给出正确证据,但下游生成模型仍可能无法 faithfully realize 多角色、多物体或复杂文字。 这说明 Gen-Searcher 是上游 grounding 模块,不是万能图像合成器;最终质量仍受 generator 能力限制。 该限制也解释了为什么 aesthetics 有时会略微下降:准确约束越多,生成器需要满足的条件越强。

5.5 参数分析

Figure 7 解读: 都会降低性能,说明只依赖 image reward 或只依赖 text reward 都不够。 在 0.3 到 0.6 之间表现较稳定,论文默认使用 0.5。

:只使用 image reward,问题是最终图像质量受生成器随机性和能力限制影响大,reward 方差高。 :只使用 text reward,问题是模型可能收集了看似完整的信息,但这些信息未必真正帮助图像合成。 :性能相对稳定,说明双奖励不是极度敏感的单点调参。 这组分析也进一步支撑“文本监督 + 图像结果监督”必须结合。

5.6 结论与局限

Gen-Searcher 证明了搜索增强可以从文本 QA 扩展到图像生成。其贡献不是单个模型,而是数据、benchmark、agent 训练、双奖励和开源实现的一整套基础设施。主结果显示,对 Qwen-Image 这种强开源模型,搜索 agent 能把 KnowGen 从 14.98 提升到 31.52。迁移结果显示,同一个 Gen-Searcher 可增强 Seedream 4.5 和 Nano Banana Pro。局限一:需要外部搜索、image search、browse、summary model 和 image generator 服务,系统复杂且成本高。局限二:最终生成仍受下游图像模型控制;搜索正确不保证图像一定正确。

局限三:KnowGen 的 GT image 是 Nano Banana Pro 合成的 synthesis ground truth,不等同于真实照片或人工绘制标准答案。局限四:GPT-4.1 judge 虽与 WISE 风格对齐,但仍可能有评测偏差。局限五:公开代码默认文本奖励系数为 0,若不检查环境变量,可能无法复现论文的 dual reward 设置。实践启示:如果要复现或扩展,应优先核对 reward coefficient、工具 API、reference image 保存路径和下游生成器版本。对后续研究的启示是:图像生成的 test-time scaling 可以发生在“生成前的研究过程”,而不只是在扩散采样或后验筛选阶段。