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 (研究动机)

当前强 T2I 模型已经能生成高保真、照片级图像,但它们的知识主要冻结在预训练参数里;遇到新近事件、公众人物、特定地标、产品外观、奖杯徽章、场馆结构等真实世界约束时,模型需要的是可更新的外部事实和视觉参照,而不是只靠 prompt-following。

论文要解决的具体问题是:把图像生成前的知识获取变成一个可训练的多模态 search agent。这个 agent 不只做一次文本检索,而是能多轮 searchimage_searchbrowse,把文本证据和参考图像汇总成 generation-ready prompt,再交给固定图像生成器。

这个问题值得做,是因为 search-grounded generation 能把“我知道某个实体长什么样 / 当前信息是什么”从生成模型参数里解耦出来:生成器可以保持固定,外部世界变化由检索与证据聚合处理;同时 visual reference search 弥补了纯文本搜索难以描述细粒度外观的短板。

2. Idea (核心思想)

核心洞察:知识密集型图像生成的瓶颈不是单纯的图像质量,而是生成前是否获得了足够、正确、可视觉落地的证据。Gen-Searcher 因此把 T2I 改写为“先搜索/浏览/找图,再生成”的 agentic pipeline,并用 SFT + GRPO 训练这个搜索策略。

相对静态 RAG,它不依赖固定知识库;相对手写 workflow,它把 search query、证据筛选、参考图选择和最终 prompt 组织都纳入可学习策略;相对只带文本搜索的闭源模型,它显式检索 visual references。

Figure 1 解读:图中展示 Gen-Searcher 面向真实世界知识密集 prompt 的定位:用户只给出高层目标,模型需要先查实体、事件、地点或风格细节,再把多源证据转成可执行生成提示和参考图像。它强调的是 test-time reasoning/search,而不是改造底层 diffusion/AR 图像生成器。

3. Method (方法)

3.1 总体框架

Gen-Searcher 初始化自 Qwen3-VL-8B-Instruct,输出不是最终图像,而是一个包含 gen_promptreference_images 的 JSON answer。下游 image generator(论文训练时主要用 Qwen-Image / Qwen-Image-Edit-2509 rollout service)保持固定;RL 只优化 search agent,让它更会收集证据、选择参考图、组织最终 prompt。

直觉上,这相当于把“生成模型必须凭空知道世界”转化为“agent 先把世界事实和视觉参照查清楚”。图像生成器仍可能随机失败,所以训练信号不能只看最终图像;论文后面引入 text reward 正是为了给 evidence gathering 本身更稳定的监督。

3.2 数据构造与 KnowGen

Figure 2 解读:数据流水线分四步:先构造需要深度搜索的文本 prompt,再由 Gemini 3 Pro 搭配搜索工具生成 agentic trajectories;随后用 Nano Banana Pro 合成 ground-truth images;最后由 Seed1.8 和规则过滤掉不需要搜索、搜索结果不一致、文本过长或生成质量差的样本。

论文最终得到约 17K 高质量样本:其中 630 个 human-verified 样本组成 held-out benchmark KnowGen,其余约 16K 分成 Gen-Searcher-SFT-10kGen-Searcher-RL-6k,并保证训练集与 benchmark 无重叠。

Figure 3 解读:KnowGen 覆盖多类真实世界知识任务,评估重点不是普通 prompt following,而是模型能否通过外部证据恢复正确的视觉属性、人物/物体身份、可读文本、场景关系和当前信息。

3.3 工具与推理轨迹

公开代码中的工具入口在 Gen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/gen_image_deepresearch_tools_executor.pycreate_gen_image_tools() 注册三类工具:searchimage_searchbrowse。论文描述里 browse 的网页摘要由 Qwen3-VL-30B-A3B-Instruct 生成;公开 README 说明开源版把原始 search / image_search 替换为 Serper 服务,因此复现性能可能受工具后端影响。

Figure 4 解读:推理轨迹是 ReAct 风格的多轮过程:每轮先 <think>,再二选一输出 <tool_call><answer>。agent 可根据已有 evidence 继续搜索文本、检索参考图、浏览网页,直到最终输出排序后的 reference image list 和 grounded prompt。

def gen_searcher_rollout(agent, question, tools, max_llm_calls=9):
    messages = [agent.system_prompt, question]
    image_bank = {}
    for round_idx in range(max_llm_calls):
        response = agent.rollout_engine.generate(messages)
        if has_answer(response):
            answer = parse_answer_json(response)
            refs = enrich_reference_images(answer["reference_images"], image_bank)
            return {"gen_prompt": answer["gen_prompt"], "reference_images": refs}
        if has_tool_call(response):
            call = parse_tool_call_json(response)
            observation = tools[call["name"]](**call["arguments"])
            image_bank.update(extract_img_ids(observation))
            messages += [response, format_tool_response(observation)]
            continue
        messages.append(format_error_feedback())
    return force_final_answer(messages)

3.4 两阶段训练与双奖励

第一阶段 SFT 使用 Gen-Searcher-SFT-10k,学习多轮工具调用、解释检索反馈、选择有用参考图和构造最终 prompt。第二阶段在 Gen-Searcher-RL-6k 上用 GRPO 优化 agentic search trajectories;图像生成器不更新。

奖励由 image reward 与 text reward 混合:

其中 使用 KnowGen 的 K-Score; 由 GPT-4.1 以五档 判断最终文本是否包含足够、正确、与生成相关的信息。GRPO 内部用组内 reward 标准化得到优势:

def compute_gen_searcher_reward(prediction, sample, text_coef=0.5):
    image = call_qwen_edit_to_generate_image(
        prompt=prediction["gen_prompt"],
        reference_images=prediction.get("reference_images", []),
    )
    image_reward = call_gpt41_worldgen_score(
        prompt=sample["prompt"], gt_image=sample["gt_image"], generated=image,
    )
    text_reward = call_text_reward_score(
        prompt=sample["prompt"], gt_image=sample["gt_image"], answer=prediction,
    )
    return (1.0 - text_coef) * image_reward + text_coef * text_reward
def grpo_update(policy, old_policy, ref_policy, prompts, group_outputs, rewards):
    advantages = normalize_within_group(rewards)
    ratios = policy.prob(group_outputs, prompts) / old_policy.prob(group_outputs, prompts)
    clipped = torch.clamp(ratios, 1 - eps, 1 + eps) * advantages
    policy_term = torch.minimum(ratios * advantages, clipped)
    kl_penalty = beta_kl * kl_div(policy, ref_policy)
    loss = -(policy_term - kl_penalty).mean()
    loss.backward()
    optimizer.step()

3.5 源码映射与 paper-code gap

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.pyGenImageDeepResearchAgent, SYSTEM_PROMPT_GEN_IMAGE, final answer parsing / image-id enrichment
Workflow wrapper, termination masking, async reward executionGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/gen_image_deepresearch_workflow.pyGenImageDeepResearchWorkflow, _extract_action_from_response, _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 + text/image reward blendingGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/gen_image_deepresearch_reward.pyGenImageRewardFn, call_qwen_edit_to_generate_image, call_text_reward_score, call_gpt41_worldgen_score
RL launch configGen-DeepResearch-RL/rllm/vision_deepresearch_async_workflow/run/gen_image_deepresearch_8B_fsdp_8gpu.shadv_estimator=grpo, batch / rollout / lr overrides
Reward coefficient / servicesGen-DeepResearch-RL/rllm/.env.gen_imageGEN_REWARD_TEXT_COEF=0.5, BROWSE_SUMMARY_MODEL=Qwen3-VL-30B-A3B-Instruct

源码核对到的一个重要差异:gen_image_deepresearch_reward.pyGEN_REWARD_TEXT_COEF 默认是 0,只有在 .env.gen_image 显式设置 GEN_REWARD_TEXT_COEF=0.5 时才与论文的 对齐;因此复现实验必须加载该环境文件。README 还说明开源版 search/image_search 使用公开 Serper 服务替代原始内部工具,可能导致与论文结果存在工具后端差距。

4. Experimental Setup (实验设置)

Datasets / Benchmarks:训练数据为 Gen-Searcher-SFT-10k 与 Gen-Searcher-RL-6k;评估包括作者提出的 KnowGen(630 human-verified samples)和外部 WISE benchmark。

Metrics:KnowGen 使用 GPT-4.1 judge 计算 K-Score,维度包括 faithfulness、visual correctness、text accuracy、aesthetics;当 prompt 不要求可读文本时,text accuracy 不计入平均。WISE 汇报 Cultural、Time、Space、Biology、Physics、Chemistry 及 Overall。

Baselines:KnowGen 覆盖 GPT-Image-1/1.5、Nano Banana / Nano Banana Pro、Seedream 4.0/4.5、FLUX.1/2、HunyuanImage-3.0、Qwen-Image,以及 Gen-Searcher 接入 Qwen-Image / Seedream 4.5 / Nano Banana Pro。WISE 额外比较 LongCat-Image 等模型。

Training config:论文报告 Gen-Searcher-8B 用 8 张 NVIDIA H800 训练,base model 为 Qwen3-VL-8B-Instruct;SFT 与 RL 都用 AdamW,SFT lr=,RL lr=,batch size=8。RL rollout 额外部署 Qwen-Image-Edit-2509 于 16 张 H800,browse summary model Qwen3-VL-30B-Instruct-A3B 于 8 张 H800;group size=6,最大交互 10 turns,每轮最多 5 张返回图,最大 context 36K,每轮 response 4K,训练约 1 天。公开 launch script 对应 train_prompt_bsz=8n_resp_per_prompt=6max_prompt_length=4096max_response_length=30000temperature=0.7top_p=0.95actor_rollout_ref.actor.optim.lr=1e-6trainer.total_epochs=5。论文测试时 decoding 使用 temperature=0.6、top-p=0.9、最大 context 64K。

5. Experimental Results (实验结果)

5.1 KnowGen 主结果

ModelOverall K-Score
Qwen-Image14.98
Gen-Searcher-8B + Qwen-Image31.52
Seedream 4.531.01
Gen-Searcher-8B + Seedream 4.547.29
Nano Banana Pro50.38
Gen-Searcher-8B + Nano Banana Pro53.30
GPT-Image-1.544.97

Gen-Searcher + Qwen-Image 相比 Qwen-Image 提升 16.54 K-Score;接入 Seedream 4.5 也提升 16.28,说明搜索 agent 学到的证据聚合策略能迁移到不同图像生成器。Nano Banana Pro 本身已经很强,但接入 Gen-Searcher 仍从 50.38 到 53.30,说明 visual references 与多轮证据聚合还能补充闭源强模型。

Figure 5 解读:定性对比中,未搜索模型常能生成“看起来合理”的图,但会错过人物、事件、标志、文字或物体细节;Gen-Searcher 的优势在于把外部证据转换成具体视觉约束,减少幻觉式补全。

5.2 WISE 与消融

ModelWISE Overall
FLUX.1-dev0.50
Qwen-Image0.62
HunyuanImage-3.00.57
LongCat-Image0.65
Gen-Searcher-8B + Qwen-Image0.77

在 WISE 上,Gen-Searcher + Qwen-Image 从 0.62 提升到 0.77,说明该方法不只针对 KnowGen 过拟合;在相对简单的知识型生成 benchmark 上也有效。

VariantKnowGen
Qwen-Image14.98
Qwen-Image + workflow22.91
Qwen-Image + Gen-Searcher-SFT28.15
Qwen-Image + Gen-Searcher w.o. text reward29.59
Qwen-Image + Gen-Searcher w.o. image reward29.36
Qwen-Image + Gen-Searcher31.52

消融显示,手写 workflow 已能带来 +7.93,但 SFT 和 RL 继续显著提升;去掉 text reward 或 image reward 都会下降,验证双反馈必要性。参数分析中, 都变差,而 区间较稳定,论文默认

Figure 6 解读: 控制 text reward 与 image reward 的权重。只看 image 会被生成器随机性和能力上限污染;只看 text 会鼓励“文字证据看似充分但未必能生成好图”的策略。中间权重最好,符合双奖励设计动机。

局限性:方法依赖外部搜索、图搜、网页摘要、GPT-4.1 judge 与图像生成服务;开源代码用 Serper 替代原始搜索工具,复现实验要关注工具后端差异。最终图像质量仍受固定 generator 约束,因此 Gen-Searcher 更像一个 search/test-time reasoning layer,而不是直接提升图像生成器本体能力。