照片搜索里,CLIP 召回之后再让大模型 rerank,到底值不值?

500 张真实照片、Open Images 官方标注做 ground truth、CLIP 真跑、百炼 qwen3.6-35b-a3b 真判。 下面每一个数字都是跑出来的,包括不利于这个结论的那些。

左右对照:同一次搜索,rerank 前 vs 后

左边是 CLIP 按相似度排出的前 30 张(相册现在的做法)。右边是把这 30 张逐张交给大模型判定后, 重排并把判定为「不匹配」的直接不展示。绿框=标注确认有猫,红框=标注确认没有猫。

预置搜索词
召回模型
试你自己的 真调 CLIP + 百炼,约 10–20 秒;同一 IP 每小时 5 次

CLIP 召回原序

语义缓存-rerank优化后

标注确认有猫 标注确认没有猫 置灰打叉=被大模型判定为不匹配、不再展示 鼠标悬停看模型给的判定理由

评测语料

按真实相册的形态构造:猫是少数。三档难度全部由官方标注客观切分,不含我的主观判断。

指标

只统计与 ground truth 语义严格等价的搜索词。「橘猫」「家里的宠物」这类更窄或更宽的词只供体验、不计分。 用「有没有猫」去判「是不是橘猫」的对错,会得出完全错误的结论。

大模型到底修好了什么

CLIP 的错误高度结构化,不是随机的:混进来的几乎全是「猫的形象」——画、雕塑、邮票、包装图案。 向量相似度分不出「真猫」和「猫的图案」,这不是靠换更大的 CLIP 能解决的。

代价

rerank 只作用于 top-30,与库大小无关:库从 500 张涨到 50 万张, 这部分成本不变,变的是 CLIP 检索那一段(向量检索,毫秒级)。

这个 demo 不能证明什么

rerank 提升不了召回率。它只能重排 CLIP 已经捞出来的那 30 张。CLIP 没捞进来的猫(小目标、被遮挡、藏在灌木丛里的), rerank 一张也救不回来;上表 P@30 前后完全不动,正是这个原因。要提召回得改召回侧,加 rerank 没用。

它也会误伤。「一只猫的照片」那一栏,过滤把召回集里的真猫也删掉了几张。精度换召回,这笔账要按产品场景算。