
网页搜索里有一个很常见的失败场景用户搜“蓝色运动鞋”返回结果里有一张商品主图图上明明白白是红色跑鞋但页面标题和描述写的是“Blue Running Shoes”。传统文本相关性模型看到标题、描述、锚文本全部对齐会给出高分真人用户扫一眼缩略图就会划走。类似的情况大量出现在电商、视频封面、新闻配图和站点列表页里。标题和图文内容不一致或者真正决定用户点击的恰恰是图片里的视觉细节。这类问题推动了搜索评估方式的一次重要变化用视觉语言模型Vision-Language ModelVLM来测量相关性。它不是简单地给图片换个更强的模型而是把“看起来是否相关”变成一种可以被机器规模化判断的信号。我最近在整理网页级搜索相关性评估方案时重新梳理了这类模型的落地路径结论是VLM能解决一部分传统文本模型解决不了的问题但它的工程化难点与文本管道完全不同真正决定成败的往往不是模型能力而是评测集怎么建、成本怎么控、人工校准怎么做。1. 网页搜索里的相关性测量为什么越来越像一道视觉题1.1 文本相关性测量已经管不了“图文分离”的页面传统相关性评估的核心对象是文本。无论是基于BM25的关键词匹配还是基于BERT双塔的语义向量系统看到的都是页面里的title、description、正文片段、锚文本和URL结构。这套体系在纯文本网页时代很有效因为页面里能影响判断的信号基本都藏在文字里。但今天的网页已经不是“文本的容器”。电商商品页会把核心信息放到图片里一张白底产品图就能说清楚颜色、形状、材质资讯站点的封面图决定用户对内容的第一印象平台内搜索结果展示的是缩略图、视频封面、图标组合。文本可以描述图片也可以与图片严重不一致。更麻烦的是很多页面的文本是为了SEO和投放准备的并不等于用户真实想看到的内容。一个页面可能故意把关键词堆进标题正文却没有对应的信息也可能图片是高清大图OCR提取出的文字却只有十几个词。搜索引擎的相关性测量如果只吃文本就会把大量“文本相关但视觉不相关”的结果提前推到用户面前。VLM的价值恰恰出现在这个断层里。它们能将查询词和图像内容放在同一个语义空间里比较看到用户描述的“蓝色”是否与图片实际颜色一致看到“北欧风沙发”的材质和线条是否符合这类风格的典型特征。这不是简单的图像分类而是跨模态语义对齐。1.2 用户和搜索引擎对“相关”的定义正在被多模态内容重塑用户对“相关”的感知从来都不是纯文本的。搜索“露营装备”用户期望看到的是帐篷、折叠椅、户外炉具的图片而不是一篇文章里提到“露营”两个字但配图全是酒店房间。搜索“复古摩托车”图片里的车型、配色、坐垫样式直接影响结果是否可用。多模态内容占比越高相关性测量的定义就越偏视觉。搜索引擎目前已经普遍支持图片搜索、视频搜索、边看边搜搜索结果页里也大量混排图片/视频/商品卡。这种混排场景中用户会同时用文本和视觉线索判断“这一条结果和我找的东西像不像”。如果评估系统只依赖文本就相当于让一个只能看文字的人去给一本漫画书做校对。有人可能会说可以用OCR把图片转成文本再交给文本模型。OCR能解决一部分问题但它丢掉了太多信息布局、颜色、纹理、物体位置、风格、品牌质感。而且OCR本身也有错误图文混排的页面里提取结果会非常碎。VLM是直接从图像特征和语义特征做交互不需要中间转译所以在“看”这个环节上更贴近人的判断方式。1.3 VLM在这里补上的是“感知对齐”不是“语义匹配”传统文本相关性和VLM相关性本质上是两种信号。文本相关性判断的是“标题/正文里的词汇和查询词是否语义一致”VLM相关性判断的是“视觉呈现出来的内容是否与查询词描述一致”。后者在主观体验上更接近用户在看结果页时的第一反应。这也是为什么我建议不要把这个话题当一个纯图像分类任务来看。VLM要处理的不是“这张图属于哪个类别”而是“这张图是否满足某个查询文本背后的视觉预期”。它需要理解“蓝色”是一个颜色属性“北欧风”是一种设计语言“适合通勤”是一种使用场景。这类知识在VLM预训练阶段已经大量吸收所以不需要每次从头训练。不过模型能感知不代表生产系统能直接用。要把“感知”变成“可评估的分数”就需要在评测集、Prompt设计、输出规范和工程管线上做大量配套工作。2. VLM做相关性测量机制上并不神秘2.1 输入一个查询和一组视觉证据输出一个判断VLM测量相关性的常见范式很直接把用户查询文本和一个候选结果网页截图、商品图、缩略图、图文组合拼接成模型输入让模型输出相关性分数或相关/不相关二分类标签。输出还可以附带简要理由例如“页面图片是红色跑鞋与查询中的蓝色不一致”。这个范式与人工评估员的工作流程非常接近评估员拿到一个Query和一条结果先看标题再看内容图片最后给出相关、部分相关或无关的标签。VLM只是把这个过程自动化了。输出的粒度可以灵活设计比如0-4分制、二分制、或者是相关度描述加结构化JSON。这种设计的关键在于“视觉证据”的选取。通常不是把整个网页原图直接丢给模型而是从页面上裁剪出主体区域或者提取多张关键图片再配合OCR文字和页面文本片段。这样既能减少无关噪声又能让模型在多个模态间交叉验证。输入组合越贴近用户真实看到的结果模型的判断越有意义。2.2 真正关键的是把视觉证据转化为可解释文本很多早期方案直接把图片喂给一个图像分类模型输出“是/不是”。问题在于模型给了一个“否”但我们不知道它为什么否决。是颜色不对物体不对还是页面布局太乱导致模型没看清楚VLM的优势恰恰在于它能把判断过程和视觉证据用自然语言表达出来。模型可以说“查询词是‘蓝色运动鞋’图片中的主体是红色跑鞋颜色不匹配因此判断为不相关。”这种解释作为中间产物有几个实际用途第一工程师可以抽样检查模型是否在关注正确的区域第二可以训练一个小型的文本分类器来消化这些解释降低线上推理成本第三在人工抽检时解释文本能辅助评估员快速判断标注是否合理。所以VLM在相关性测量里不只是“分类器”它同时是“证据采集器”。采集到的证据可以被后续模块复用也可以作为训练远程监督信号。这一点是单纯的CLIP余弦相似度或图像分类模型很难替代的。2.3 为什么这能扩展到Web-Scale先离线打分再蒸馏/辅助在线模型提到Web-Scale很多人的第一反应是“每天几十亿次请求VLM推理肯定扛不住”。直接让VLM在线处理全量搜索结果确实不现实。但相关性测量任务本身并不需要全量实时推理。通常的做法是先把VLM用来离线标注采样数据。比如从历史搜索日志里抽取一批Query-URL对用VLM打上一个多模态相关性分数再把这个分数作为训练信号去训练一个更轻量的在线相关模型。在线模型可以只使用文本、用户点击、URL结构等廉价特征在低延迟环境下尽量模仿VLM的判断。这样一来VLM只处理可控规模的样本而不是处理所有线上流量。还可以在召回阶段用VLM筛选候选图片或者在重排阶段对Top结果做小规模多模态精排。关键不在“全量用VLM”而在“让VLM的评价能力通过蒸馏和迁移渗透到整个系统”。这也是Web-Scale场景里更现实的路径。3. 从Demo到可用的最小流程3.1 构造一个有代表性的Query-URL样本集不要把VLM当玩具直接用它去批量标注全网页面。第一步永远是构造一个“小而真”的样本集。建议从搜索日志中选取高频Query覆盖不同类型具体商品词、风格描述词、内容资讯词、导航类词。每个Query再采样若干条结果至少几十到上百条构成一个带Query、URL、页面图片、页面文本的评估集。这个样本集的价值有两个。第一它用于验证VLM的基线表现。先抽几百条数据让模型打一遍分人工抽样看是否合理。第二它用于校准Prompt和输出格式。在真实网页的复杂输入下模型可能出现格式错乱、漏判、过度自信等问题小样本集可以快速暴露这些情况。样本集本身需要标注。如果预算允许请人工标注一部分Query-URL对作为golden set。如果暂时没有资源可以先用规则生成一些“明显相关/明显不相关”的简单样本作为冒烟测试。最怕的是上来就全量处理最后根本无法判断结果好坏。3.2 设计Prompt和输出格式先跑通单条VLM在相关性任务上最不稳定的不是视觉能力而是“听指令”的能力。Prompt要同时完成三件事定义任务、定义输入、定义输出格式。一个常见写法是你是一个搜索相关性评估专家。请根据查询词和页面截图判断这条搜索结果是否相关。 查询词{query} 页面截图image 请从整体内容判断如果页面视觉主体与查询词明显不一致则判为不相关。 输出JSON格式 {score: 0或1, reason: 简要说明判断依据}其中score可以换成0-4连续分。关键是格式约束。JSON输出比自由文本好解析同时要在Prompt里显式要求只输出JSON不输出其他内容。跑通单条时要重点检查三件事模型是否真的在看图片输出是否能稳定解析reason是否和score一致。我遇到过reason说“颜色不匹配”score却给了1相关的情况。这不是模型不会看而是Prompt的语义不够清晰或者解码温度太高导致逻辑不一致。先单条验证到可复现再开始批量。3.3 批量推理并发、缓存、失败重试批量推理不是简单写个for循环。要考虑以下几个点并发控制VLM服务通常有吞吐限制尤其是用线上API时并发过高会触发限流或超时。缓存相同Query-URL对可能出现多次。不同Query对应的URL也可能重复建议用URL或图片hash做缓存避免重复计算。失败重试图片加载失败、超时、输出解析失败都需要单独处理。不要把失败样本静默扔掉要记录原因。断点续跑批量任务可能跑几小时甚至几天建议把处理结果和未处理列表分开保存崩溃后可以继续。我用过最简单的方案数据表里加一个status字段处理完更新为done失败更新为error并记录错误信息。跑完后按status筛选只重试error。这比写一堆检查脚本更可靠。3.4 离线指标与一致性检验批量跑完之后先别急着部署。要做几个一致性检验自一致性同一条输入跑两三次看输出是否稳定。VLM有随机性temperature高时尤其明显。人工抽样一致性从结果中随机抽50到100条让评估员对比VLM的分数和判断计算简单的一致率或Cohens Kappa。分组一致性按Query类别、页面来源、图片类型分组分别看准确率。有些类别可能特别差比如长文本页面或图标密集页面。只有当这些指标达到可接受范围后才适合把VLM的输出用于更下游的任务。如果一致性很差先不要调模型而是先检查输入图片质量和Prompt是否清晰。4. 工程化落地时最容易被忽略的三类问题4.1 成本和速度约束全量不可行要设计采样和蒸馏VLM推理的成本远高于文本模型。处理一张图片通常要消耗大量视觉token一次推理可能相当于几千个文本token。如果每天处理上百万条URL费用和延迟都会成为瓶颈。所以在Web-Scale场景里VLM几乎不可能直接成为在线打分模块。需要把它放在“标注器”的位置而不是“评分器”的位置。先对样本打分再把样本用于训练一个轻量模型或者把它输出的文本理由转换成文本特征供在线模型使用。这个蒸馏过程会损失一部分精度但能换来可接受的成本和延迟。设计采样策略时要确保样本覆盖足够的长尾Query和困难负例。不要只采样高频Query否则训出来的模型只会在高频词上表现不错遇到长尾词又退回文本匹配的老路。4.2 输出不稳定需要约束生成和重复采样VLM的输出并非始终干净。有时它会在JSON外面多加一段解释有时会输出中英混杂的字段名有时会把分数写成字符串“0.8”而不是数字。解析失败是一个常见问题。工程上可以做三件事第一在Prompt里严格限定输出格式并给出一个示例。第二使用解码约束工具强制生成合法JSON或者设置更低的temperature比如0到0.2。第三写一个容错解析器能从脏文本中提取第一个JSON块提取不成功就重试。还有一个技巧对同一输入跑多次取多数投票或平均分。实验发现对于边界样例重复采样能提高稳定性但代价是推理成本成倍上升。更推荐的做法是先用低温度跑一次如果reason中出现了不确定表达如“可能”“看起来像”“无法判断”再标记为待人工复核而不是盲目重复采样。4.3 与现有相关性管道集成VLM不是替换而是补充不要试图用VLM替换掉现有的文本相关性管道。现有的BM25、双塔、BERT模型在大量场景下依然高效且稳定。VLM更适合作为一层额外的信号来源专门用来捕捉文本模型看不到的视觉差异。一种常见的集成方式是把VLM输出作为一个特征输入到LTRLearning to Rank模型中。比如把VLM的0/1分数、reason的TF-IDF向量或者VLM在某个prompt下对“颜色一致性”的置信度加入到排序特征里。这样既能保留文本模型的能力又能让视觉信号参与最终排序。另一种方式是把VLM用于离线评估其他相关性模型。比如你有一个需要定期评估的文本相关模型可以让VLM对评估集重新打分比较两者在哪些Query类型上出现分歧据此定位模型盲区。这个用法不直接影响线上但对迭代很有价值。4.4 常见问题排查先看输入、再看输出、最后看匹配如果VLM打分结果看起来不合理我一般按这个顺序排查看输入图片图片是否成功下载是否被缩放或裁剪是否因为反爬机制拿到的是占位图或验证码图片本身就是错的后面全白搭。看Prompt与图片组合查询词是否被错误拼接图片尺寸是否过大导致模型只看到局部多图输入时模型有没有看漏关键图看输出解析模型输出的score和reason是否对应JSON解析时有没有字段错位看模型版本和加载方式不同VLM对图片分辨率的处理差异很大低分辨率下很容易漏掉颜色、文字等细节。大多数“VLM效果差”的问题最终都会回溯到输入数据质量而不是模型本身不够强。5. 相关性的主观边界VLM能当评估员不该独自当裁判5.1 “相关”本身不是一个稳定客观的标签同一个Query不同用户、不同时间段、不同设备下的期望可能完全不同。“热门手机”在数码爱好者眼里可能是旗舰参数在普通用户眼里可能是销量榜单。“新鲜”在生鲜搜索里强调保质期在内容搜索里强调发布时间。VLM虽然能理解常识但它不掌握每个垂直领域、每个用户群体的个性化标准。所以VLM输出的相关性分数更适合作为“通用相关性”的近似估计。如果要针对特定人群、特定场景做个性化还需要叠加用户行为数据不能只靠VLM。相关性的定义最好由业务方和评测团队一起明确再转化为Prompt里的规则和示例。5.2 与人工评估、点击信号、用户反馈融合VLM可以替代一部分重复性标注但不能完全替代人工。我建议的协作方式是VLM先做粗筛把明显相关、明显不相关的样本快速标出来。人工只审核那些边界样本、VLM低置信度样本以及reason中透露“它其实没看懂”的样本。点击数据、停留时长、购买行为等隐式反馈可以作为VLM标记的辅助信号用于最终排序而不是单独作为相关性的golden label。这种“机器粗标、人工精标、行为验证”的组合能最大化利用VLM的批量处理优势同时保留对主观性的纠偏能力。5.3 VLM适用与不适用场景适合用VLM做相关性测量的场景电商商品搜索主图内容与标题描述不一致的比例高。视频/图片类搜索封面或缩略图对点击率影响大。资讯推荐配图风格和内容题材需要匹配。页面摘要、卡片展示视觉信息本身就是结果的一部分。不适合的场景纯文本问答、代码搜索、学术文献搜索图片不是关键信号。对延迟和成本极度敏感的线上轻量场景VLM不适合实时介入。涉及用户隐私或敏感图片的内容需要谨慎使用。即使适合也建议先用小样本验证收益再决定是否投入。5.4 一个可复用框架采样、校准、批量、回流把前面的经验收束成一个四步闭环采样从真实搜索日志中抽取Query和候选结果构造覆盖高频和长尾的小样本集。校准用几百条样本调试Prompt、输出格式、输入图片预处理方式直到人工抽检一致率可接受。批量在控制成本、做好缓存和重试的前提下对更大规模的数据集进行预测和蒸馏。回流把VLM打分结果、人工复核结果、模型分歧样本全部回流到评测集和训练集中持续迭代。这个框架的好处是它把“VLM相关模型”从一次性的实验变成了可持续积累的数据资产。每轮迭代都会让下一轮更稳定而不是每次重新设计流程。6. 给想入场的开发者的几点建议6.1 从垂直场景切入不要一上来做全网通用评估“通用网页相关性评估”听起来很大但落地时最好从单一内容形态开始。比如先只做商品页、先只做视频封面、先只做新闻配图。垂直场景的视觉模式更集中Prompt容易收敛人工审核也更容易建立标准。把垂直场景做成一个可复用的模板再复制到其他类型会比一次性通吃所有网页稳妥得多。6.2 不要只盯着SOTA模型先看数据和Prompt是否可靠VLM的公开评测榜单每年都在刷新。但相关性测量是一个高噪音的任务模型之间的差距可能被评测集构造方式完全淹没。我更建议先花时间把Query样本集、图片预处理、输出解析和人工审核流程建好然后跑两个不算最前沿但开源的VLM对比一下效果。通常只要Prompt和输入质量到位中等规模的VLM已经能产生足够有用的信号。6.3 关注数据泄漏和模型幻觉数据泄漏在搜索评测里特别隐蔽。如果训练VLM的语料里已经包含了大量搜索结果页面和Query组合模型可能“背过答案”导致在测试集上表现虚高。落地时要避免使用与训练集分布过于相似的样本最好在构造Query时引入真实搜索日志里的新长尾词。幻觉方面VLM有时会脑补图片里不存在的细节。比如一张纯色商品图模型在reason里写“图片中有一个白色标志”但这可能是幻觉。为了减少影响可以在Prompt里要求模型只基于图片可见内容判断并在人工抽检时重点检查reason是否与图片实际内容相符。6.4 未来从静态截图到动态交互结果当前很多VLM相关方案处理的是“页面截图”或“首屏缩略图”。但搜索结果的形态还在演进视频片段、轮播图、ICON、富媒体卡片、跨模态混合结果都会越来越常见。接下来值得关注的方向包括视频关键帧摘要、页面动态交互结果、以及结合浏览时序的相关性评估。VLM在这类任务上还有不少空白但已经能看到可行的技术路径。对做搜索和推荐系统的开发者来说VLM不应该只是一个“热点标签”它会成为相关性评估工具箱里一个长期存在的新组件。关键是把它放对位置它负责感知你负责校准它负责规模你负责质量。把这两件事做好Web-Scale下的多模态相关性测量就不再是概念而是一套可以迭代的工程能力。