一、文字搜索和图片搜索不是一回事
文字搜索靠关键词与向量;图片搜索靠特征相似。
把两者放在一起,就成了多模态检索——听起来很大,其实卡在很具体的地方。
二、它是怎么工作的
大致三步:
- 把图片和文字分别编码成向量。
- 把两者放到同一个向量空间。
- 比距离,找出最近的。
关键在第二步:如果映射得好,一张图的向量就能和一个句子的向量靠得很近。
三、三个能做好的事
一、用文字找图。 一句“雨后的红色自行车”,能在图库里找到。
二、用图找相似图。 上传一张,找到风格或内容相近的。
三、图文混合问答。 给一张图和一句话,让它回答。
四、三个做不好的事
一、精确计数。 “图里有几个杯子”这类,模型经常数错。
二、细小文字。 图里的字号很小、背景很花时,认不清。
三、空间关系。 “左边那个手里拿着什么”,模型会混。
五、为什么做不好
因为向量压缩时丢掉了细节。
一张 1024 像素的图,编码成一个固定长度的向量,必然舍弃信息。
要精确,就得放大局部重新识别。
六、实际用法建议
三个:
- 不要靠它做 OCR。需要准的文字识别,用专用工具。
- 需要计数的,先让它描述,再让自己数。
- 找图可以信,分类不定可以信。
七、一个容易忽略的细节
不同语言的提示词,检索效果可能不同。
用中文描述一张英文背景的图,不如用英文试试。
这不是模型偏见,是训练数据分布。
八、扩展阅读
想理解检索与索引的实现,可以看工程方向的文章。
BackendWiki 里的 MySQL 与 Redis 专题,解释了索引与命中率的基本原理,对理解向量检索也有帮助。