跳至正文
来两杯美式
返回

多模态检索建库:分布对齐比换模型更重要

By 来两杯美式
发布于

上一篇把闭集多模态检索和开放域 RAG 拆开,并写清了第一版非目标:查询热路径上默认不做 VLM 读图、不做云端精排。标注员在「纸品陈列审核 09 月批次」里框出的目标,往往只有一百到两百像素宽;候选侧却是平台下发的清晰标准图。若建库只把标准图向量化就上线,后面换再大的视觉编码器,也常常是在错分布上较劲。

本篇只谈建库与分布对齐:索引里到底存什么、预处理怎么做、哪些昂贵步骤可以离线做。召回与融合在第 3、4 篇展开。

多模态检索建库总览:标准图、SaaS 参考图与确认回流图进入多参考图索引,经 letterbox、clear/lowres 分布对齐、离线 VLM 建档和源内容哈希幂等重算,支撑后续召回

一、标准图与查询图:不是同一种「图」

业务导入的 SKU 标准图,通常是白底或棚拍、分辨率够、包装完整。标注员粘贴的查询图,则是 SaaS 画面里的一小块:压缩、反光、遮挡、透视变形,像素总量可能只有标准图的十分之一。

视觉编码器学的是「整张图进网络前的张量分布」。查询与索引若长期处在不同尺度、不同清晰度、不同裁切策略下,向量空间里的距离会系统性偏移——表现为:文字通道偶尔救场,但纯图检索 Top 列表飘忽,且和人的肉眼判断对不上。

POC 里一个典型对比:同一批次里,sku_101 的标准主图很清晰,而查询侧是端架上一卷纸的局部;sku_207 规格文字在糊图里几乎不可读,但用户手输「12 卷」后文字通道能拉上来。这说明问题不总是「模型不够大」,而是索引侧有没有为糊查询准备可对齐的参考。

因此建库的第一原则:先让索引里有一部分向量和查询图处在相近分布,再讨论换 DINO、换 SigLIP 或加通道。

二、一个 SKU,多张参考图

闭集批次约三百个 SKU,但每个 SKU 在索引里不是「一张图一条向量」这么简单。实践中至少三类来源:

来源含义建库侧重
标准图主数据 image 字段下发的商品图清晰、完整,适合 OCR 与 VLM 建档
SaaS 参考图平台附带的 reference_images与标准图同等写入索引,常更接近审核画面
确认回流图标注员确认后沉淀的查询截图分布最接近真实查询,宜优先参与视觉召回

检索时按 SKU 聚合:同一 SKU 下多张参考图、多个版本各自算相似度,取最大值作为该 SKU 在该通道的得分,并记录「命中哪张参考图」——后面展示证据时要用。

确认回流如何进入库、如何和会话关联,属于人机闭环与数据飞轮,放在第 5 篇细讲。建库阶段只需记住:多参考图不是数据冗余,而是为分布对齐预留挂点;没有回流图时,更要靠预处理把标准图「降一档」。

三、letterbox:极端长宽比别中心裁剪

把任意比例图片送进方形输入,常见两种做法:中心裁剪,或 letterbox(等比缩放后补边成方形)。

层条、竖版海报、细长价签在纸品陈列里很常见。中心裁剪会切掉包装上的关键色块或规格区;对结构相似通道(偏形状与布局)尤其致命。POC 里统一采用 letterbox 补边:保留完整画面,空白边用固定色填充,查询侧与建库侧同一套规则。

查询路径同样 letterbox 后编码,避免「索引用裁切、查询用补边」这种隐蔽的不一致。用户已在 SaaS 外自行框选目标,系统不再做自动多主体检测——这和第一篇非目标一致。

四、clear + lowres:唯一保留的标准图增强

除 letterbox 外,我们对每张参考图生成两个视觉版本:

  1. clear:下载后的清晰版,经 letterbox,用于尽量保留商品细节;承担 OCR、VLM 建档,以及「高质量」视觉向量。
  2. lowres:在 clear 基础上降采样到约一百六十像素量级再 letterbox 回方形,刻意模拟查询截图的模糊与小尺寸。

两个版本分别算视觉向量(例如结构编码与跨模态编码各一套)。查询图本身已经够糊,不再在查询侧做 lowres 副本或多种裁切;对齐压力在索引侧。

这是 POC 里刻意收敛的增强:不做花哨的数据增广流水线,只做这一条「向查询分布靠拢」的腿。若 lowres 通道召回明显提升,而 clear 通道只在高清查询时有用,说明瓶颈在分布,而不是立刻换更大的 backbone。

五、VLM 只建档,不进查询热路径

清晰参考图上的文字、配色、版式,用本地 OCR 只能覆盖一部分;离线阶段可以用 VLM 根据「参考图 + 结构化名称」生成开放式描述与属性 JSON,写入可搜索文本,供后续文本语义通道使用。

这与第一篇非目标表直接对应:VLM 仅在建库异步任务中调用,失败可降级,不阻塞其他通道;查询时不默认把糊截图再送 VLM 转写——延迟、不稳定和噪声都会落在高频路径上。需要文字线索时,优先标注员在输入框补几个字。

云端调用内容限定为公开商品图与名称字段;密钥只放环境变量。建档结果要落库原始响应,便于日后换模型重算时对比,而不是只留一句摘要。

确认回流类参考图通常跳过 OCR 与 VLM:它们的价值在视觉分布本身,不必再让模型「描述一张本来就是为了检索而存的糊图」。

六、幂等:源内容哈希不变则跳过重算

批次一天一换,但 SKU 主数据常跨批次复用。重复导入同一参考图 URL、或中断后重启建库 worker,不应反复下载、反复调 VLM。做法是对图片字节内容算哈希,派生向量时记录 source_hash;哈希未变则跳过该图在该模型版本下的重算。

示意逻辑可以收成一行判断:

def should_recompute(source_hash: str, recorded_hash: str | None) -> bool:
    return recorded_hash != source_hash

工程上还要处理:模型升级(版本号变)、variant(clear / lowres)维度、单图部分步骤失败后的断点续跑。POC 阶段目标是 异步可恢复——某 SKU 的 VLM 超时,不影响同批次其他 SKU 的视觉向量先就绪,检索页显示建库覆盖率即可。

七、建库之后才是召回

分布对齐解决的是「索引和查询是否在说同一种视觉语言」。多参考图解决的是「同一 SKU 在陈列里长什么样都有样本」。在这一层打牢后,第 3 篇再谈多通道召回:结构、语义、文字匹配各守一条失败模式;第 4 篇谈加权 RRF 与弱匹配降级。

若你正在调效果,建议顺序是:先核对 letterbox 与 lowres 是否生效 → 再看多参考图覆盖率 → 最后才换编码器。这和闭集场景里「批次内三百候选、人要看见证据」的产品形状是一致的。

本系列

  1. 闭集多模态检索:为什么不是再做一个 RAG
  2. 多模态检索建库:分布对齐比换模型更重要
  3. 多通道召回:每种失败模式配一条检索路径
  4. 加权 RRF:多通道怎么融、弱匹配怎么降级
  5. 人机闭环:确认如何把检索变成可迭代资产
  6. 闭集检索评测与「刻意不做」清单

分享这篇文章:
通过邮件分享这篇文章✓ 链接已复制
›查看系列全部文章
  1. 01.做 AI 助手,最怕一上来就建知识库
  2. 02.RAG 入门:为什么大模型需要查资料再回答
  3. 03.RAG 核心原理:检索、向量与嵌入——计算机如何理解语义
  4. 04.RAG 实战:核心组件、调优与问题排查
  5. 05.RAG 为什么回答流程问题会漏步骤?原因和改进方案(附完整源码)
  6. 06.企业级 RAG 怎么落地?不只是向量检索和大模型(附完整源码)
  7. 07.RAG 检索不准?先别换模型,把问题问对再说
  8. 08.RAG 答非所问?从索引到生成,打通最后一公里
  9. 09.别再把聊天记录当记忆了:AI Agent 的四种记忆到底怎么分?
  10. 10.我手搓了一个 AI Agent 记忆框架,才发现“长期记忆”不是存聊天记录
  11. 11.精选数据与垂直 AI:AI 时代的护城河在哪
  12. 12.闭集多模态检索:为什么不是再做一个 RAG
  13. 13.多模态检索建库:分布对齐比换模型更重要
  14. 14.多通道召回:每种失败模式配一条检索路径
  15. 15.加权 RRF:多通道怎么融、弱匹配怎么降级
  16. 16.人机闭环:确认如何把检索变成可迭代资产
  17. 17.闭集检索评测与「刻意不做」清单
  18. 18.RAG 回答清单问题总漏项?topK 截断与同文档切片补全(附核心代码)

上一篇
多通道召回:每种失败模式配一条检索路径
下一篇
闭集多模态检索:为什么不是再做一个 RAG