你可能遇到过这种事:模型能看图能读字,但一让它比较两张票据、或者按图里的表格算数,就开始胡说;换一个模型好像又行了,可你并不知道为什么。这篇不讲公式,只讲多模态模型内部是怎么把图像、文字、语音拼到一起的,融合发生在哪一层,各自擅长什么、什么时候会失灵。看完你能对着一个多模态模型的说明,判断它适合接哪类活、该在提示里补什么。
你大概碰到过这种事:模型能看图能读字,单独用都还行,可一让它比较两张票据、或者照着图里的表格算个数,它就开始胡说;换个模型好像又能用了,但你也说不清为什么。问题往往不在「它够不够聪明」,而在它内部到底把图像和文字放在哪一层一起算。
这篇不讲公式,只讲多模态模型是怎么把几路信号拼到一起的:在哪一步编码、在哪儿对齐、融合点靠前还是靠后,各自擅长什么、什么时候会失灵。看完你能对着一个模型的说明文档,判断它适合接哪类活、该在提示里补什么、什么时候该换思路而不是换模型。
先把「多模态」拆开:模态、编码器、融合点
先说清楚术语,不然下面没法聊。「模态」就是信号的类型,图像、文本、音频、视频各算一路。很多产品宣传的「支持多模态」,实际意思只是「能传图片进去」,这跟模型内部真的把两路信号放到同一个表示空间里做计算,是两回事,差距很大。
- 模态
- 输入输出信号的类型,图片、文字、语音、视频各算一路,能传图不等于会融合
- 编码器
- 把某一路原始信号压成一串向量的模块,图像切块、音频切帧、文本切 token 都在这步
- 表示空间
- 各路编码结果要落到同一套坐标系里,模型才有可能比较和推理不同模态
- 融合点
- 两路信号第一次在模型内部相遇的那一层,靠前还是靠后,决定了它能做什么
对非算法读者来说,有个特别好用的判断句:这个模型是在同一层里同时看两路信号,还是先各自看完再合并?前者叫早期或中期融合,后者叫晚期融合。你不需要知道每一层的名字,只要抓住这个分界,就能大致预判它在跨模态任务上的表现上限。
早期融合、晚期融合、交叉注意:三种串法的直观差别
把三种思路想成三个人合作办事,差别就很好理解了。早期融合是三个人一上来就坐同一张桌子,边看边商量;晚期融合是各干各的,干完把结论交上来投票;交叉注意是中间开几次会对齐信息。桌子的位置不同,适合的活也不同。
| 融合方式 | 信息交互深度 | 工程代价 | 典型适用场景 |
|---|---|---|---|
| 早期融合 | 最深,进来就一起算 | 高,换任一编码器都要重训 | 模态强相关、配对数据充足的任务 |
| 交叉注意 | 较深,中间层互相查询 | 中,骨干可复用 | 图文问答、跨图比较这类推理活 |
| 晚期融合 | 浅,各跑各的最后合并 | 低,单路模型随时替换 | 图文各判一次再投票的判断型任务 |
- 早期融合交互最充分,但训练数据要求高,任一编码器换代都得重来,小团队慎选
- 交叉注意是当前主流折中:文本 token 去查询图像特征,或反过来,够深又不必重训整个骨干
- 晚期融合工程上最省事,适合「OCR 取字 + 规则判断」这种组合,但跨模态的细节关联会丢
- 什么情况不适用:任务本身不需要跨模态推理时,比如单纯从图里取文字,上复杂融合纯属浪费
- 判断标准:如果你的活是「先分别判断再汇总」,晚期融合足够;如果是「看图里的细节再推理」,就要往交叉注意那边靠
注意这里没有绝对优劣,只有匹配不匹配。见过不少团队在纯识别任务上死磕融合架构,折腾半天不如把 OCR 那条路走顺。先问清楚任务需不需要跨模态推理,再决定架构,顺序反了就是白费功夫。
图文怎么「对上」:对比学习与对齐数据从哪来
模型怎么知道这段文字说的就是这张图的哪个部分?常见做法是配对训练:把匹配的图文向量拉近,不匹配的推远,久而久之它学会「这段话大概对应这张图的某块区域」。这一步是粗粒度的整体匹配,不是精确定位。
关键在于对齐数据的覆盖度。图表、票据、手写、界面截图这类结构化或低质量图像,在通用配对数据里占比往往不高。所以模型对日常照片描述得挺准,一遇到表格里的小字就开始飘,这不是模型「变笨了」,而是这类图在训练里见得少。
- 粗粒度对齐只管整体匹配,细粒度定位要靠区域级标注或更细的监督,只做整图对齐的模型问坐标就容易答偏
- 自查动作:拿同一张图,先问整体描述,再问局部读数,前者流畅后者崩,多半是对齐粒度不够
- 缓解做法:把目标区域裁剪出来单独问,等于手工替模型做了定位,往往立刻见效
- 什么情况不适用:如果任务本身就要求模型自己在整图上定位,裁剪只能算权宜之计,选型时就该找支持细粒度定位的模型
这也能解释为什么同一个模型在不同人手里效果差很多。有人习惯把图直接丢进去问细节,有人会先裁剪再问。后者不是作弊,而是理解了对齐粒度这件事之后的正常操作。
图像进模型后算多少 token:成本和上下文的关系
图像被切成小块之后,每一块在模型眼里就接近一个 token。分辨率越高、切块越多,占的上下文越长,计费和延迟都跟着涨。这是理解多模态成本的第一原则:你付的不只是「一张图」,而是这张图展开后占掉的位置。
但别急着自己算。很多平台会做二次压缩或动态切块,实际消耗跟图片本身的分辨率、长宽比、平台自己的策略都有关。不同平台口径不一样,拿一张图直接跨平台对比是不靠谱的,容易得出错误结论。
- 图多了会挤占上下文留给对话和输出的位置,长文档加多图时先算清楚图占多少,再决定要不要分轮处理
- 同一张图,平台预处理策略不同,实际消耗可能差出不少,只能各自测,不能想当然换算
- 单价折算口径和一张图到底算多少,到站内官方 API 价格与 Token 单价换算页面按当时的数字核对,本文不写死任何数值
- 控制成本的可执行动作:能裁剪就裁剪、能降分辨率就降、能分轮就别一口气塞满,这三点比换平台更立竿见影
按任务反推:什么样的活该配什么样的多模态能力
选型最怕一句话:「我们要用多模态」。这句话什么信息都没有。正确的顺序是从任务反推能力,再看哪类架构能提供这种能力。下面按四种典型活拆开说。
| 你的任务 | 重点看什么 | 架构倾向 | 容易踩的坑 |
|---|---|---|---|
| 只要文字结果,图只是输入源 | 识别稳定性和结构化输出 | 融合深度不是重点 | 拿通用描述能力代替字段识别 |
| 跨图比较或图文推理 | 细粒度定位和跨模态推理 | 交叉注意类更合适 | 整图对齐撑不起局部对比 |
| 实时语音对话 | 语音编解码和流式输出延迟 | 跟图文融合能力无关 | 把两件事混在一起评 |
| 图像或视频生成 | 扩散类模型的独立评价标准 | 另一条技术线 | 拿「同一个多模态」当理由横向比 |
这张表最有用的地方在最后一行:生成和理解是两条线,评价标准不能混用。见过有人拿理解类模型的表现去推断生成能力,或者反过来,结论基本没用。选型时先把任务归到哪条线,比堆参数重要得多。
- 准备三类样本纯识别、跨模态推理、长输入各准备一批来自你真实业务的例子,不要用网上通用图,通用图测不出你的问题
- 各跑一遍并记录记录错在哪儿:是整句不对、关键字段不对,还是编造。分数只用来排序,别当成绝对结论
- 按结果决定动作错在字段定位就改流程或换支持细粒度的模型;错在长输入就拆轮次;错在数值计算就外接工具,别指望调提示词解决
常见的失灵场景与排查顺序
多模态任务出错,第一反应常常是「换模型」。但按顺序排查下来,相当一部分问题根本不在模型身上。下面这个顺序是按成本从低到高排的,建议照着走。
- 先查输入质量图是否模糊、旋转、分辨率被压过头。先把输入这项排除掉,再怀疑模型,这一步能省掉大量无效尝试
- 再查粒度整体描述对但局部细节错,通常是切块太粗或对齐粒度不足。裁剪到目标区域再问一次,看是否改善
- 再查上下文图多、文长时后面的内容可能被挤掉,表现为答非所问。缩短输入或分步处理,往往立刻见效
- 最后查任务类型模型本质是做模式匹配,不是精确计算。涉及数字、表格合计、坐标定位时,串联一个确定性工具比死磕模型划算
有一类情况不该继续调:任务需要严格可复现的数值结果时,多模态模型本来就不适合独立承担。这不是调参能解决的,硬调只会浪费时间和预算。早点把这类活拆给规则引擎或计算工具,反而是更专业的选择。
自己动手的三步小评测:不靠榜单也能判断
榜单能当参考,但口径和你的任务往往对不上。更靠得住的做法是自己搭一个小评测,样本来自你的真实业务,规模不用大,十来条一组就够看出差异。
- 准备三组样本:单图识别、跨图比较、图加表推理,每组十来个真实业务例子,别用网上通用图
- 记录四件事:整句对不对、关键字段对不对、有没有编造、耗时是否可接受,分数只用来排序
- 同一批样本换模型跑,重点看错法是否相同:都错在字段定位,说明任务本身难;只有一家错,才是能力差异
- 周期性复跑,模型和接口策略都会变,把结果留在本地做纵向对比,比看一次榜单有用
- 需要横向参考时,到站内多模态模型与 AI 测评榜单看当时的对照数据,注意榜单口径和你自己的任务是否一致
这套评测最大的价值不是给你一个数字,而是让你在出问题时能快速定位到是哪一类任务出了岔子。有了本地记录,下次换模型时你是有依据的,不是凭感觉。
接入之前要确认的几件事
前面讲的是理解,这一节是上线前的清单。这几条看着琐碎,但事后救火的成本远高于提前确认,尤其是多模态这块,接口能力名义和实际开放往往有差距。
- 确认接口支持你要的输入组合:多图、图加音、图加长文,不少模型名义上多模态,实际只开放一两种组合
- 确认输出格式能不能强制结构化字段,这直接决定你后处理的工作量
- 确认单次请求的大小上限和图片张数限制,重活拆成多轮,失败可重试,不要一口气塞满
- 确认版本变更节奏,多模态模型的输入预处理策略调整得比纯文本模型频繁,上线后要留回归测试
- 把这四条整理成 checklist,接入前逐条勾掉,比出问题后再回头查接口文档省事得多
最后提醒一句:如果你的场景里,任务会随业务不断变化,那评测样本也要跟着更新。一次性的评测结论很快会过期,保持周期复跑的习惯,比选一个「最好的模型」更实际。
下一步带着你自己的三类样本去跑一轮,再用站内的价格与测评页面核对当时的数字,模型的账要和你的任务对得上才算数。→常见问题
多模态模型和「能上传图片的聊天框」是一回事吗?
不完全是。能传图只说明接口收了图片,关键看模型内部有没有把图像和文本放到同一层做交互。有的产品是先用 OCR 抽文字再交给纯文本模型,看起来也能读图,但涉及位置、图表关系、跨图比较时就会露馅。
为什么同一个模型,整体描述很准,问具体数字就错?
多数多模态模型是整图级别的对齐,擅长说「这是一张账单」,不擅长定位「第三行金额」。想拿准确数值,先把图裁到目标区域再问,或者干脆走 OCR 加规则校验,别指望它一次到位。
多图输入是不是越多越好?
不是。每张图都要占上下文,图多了留给对话和输出的空间就少,模型可能开始忽略靠前的内容。常见做法是先让模型列出每张图的要点,再基于摘要做比较,分两步比一次塞十张稳。
我要判断某个模型算不算真正的多模态,看什么?
看三件事:它支持哪些输入组合、这些组合是同时进模型还是分开处理、有没有公开的跨模态任务评测。站内 多模态模型(/multimodal) 这类页面会把输入输出规格列出来,比看宣传语可靠。
自己搭一套多模态流程,最容易踩的坑是什么?
把图像预处理当成无关紧要的一步。分辨率压缩、旋转、多图拼接方式都会直接影响结果,而且不同平台策略不同。上线前用固定样本做回归,改一次预处理就跑一遍,能省掉大量排查时间。