直接说做法知识库里有大量图片产品图、流程图、截图想让用户能用文字问、检索到对的图——别指望直接拿图片向量去匹配文字问题跨模态对齐没那么准。更稳的土办法是入库前先让多模态模型给每张图生成一段文字描述caption把描述做 embedding 存进知识库检索时文字对文字召回又准又好排查。我在一个产品手册场景这么干效果意外地好今天讲清楚。为什么不直接用图片向量理论上有图文统一的向量模型能把图片和文字映射到同一空间照理可以直接拿用户问题去匹配图片。但我实测下来这条路对中文问法、对内容密集的图带文字的截图、复杂图表经常翻车——用户问「显示登录失败的那张错误提示图」直接跨模态检索捞回来一堆不相干的界面图。换个思路就顺了先把图变成文字。让多模态模型看图说话生成一段描述比如「一张移动端登录界面截图红色弹窗提示账号或密码错误底部有忘记密码链接」。把这段描述存进知识库用户问的是文字知识库里也是文字同语体匹配召回稳得多而且哪条检索命中了描述肉眼就能核对排查方便。落地三步1. 批量给图片生成描述。def caption_image(img_path): prompt 用一两句话描述这张图的内容包含图中可见的文字、关键元素和用途。 return vlm(prompt, imageimg_path) # 调多模态模型看图生成描述 for img in images: desc caption_image(img) store.add(textdesc, metadata{img_url: img.url}) # 描述入库图存元数据2. 描述做 embedding存进知识库。跟普通文档一样切片向量化元数据里挂上图片的 URL。3. 检索时返回图。用户问题文字检索描述命中后从元数据取出 img_url把图连同描述一起返回给模型或用户。描述怎么生成才好检索这步是质量关键我踩过坑总结几条让模型把图里的文字抠出来。截图、表格图里的文字往往就是用户要搜的关键词描述里必须带上不然检索匹配不到。加上用途/场景。光描述「一个红色弹窗」不够写清「登录失败错误提示」用户才搜得到。别让它瞎发挥。多模态模型有时会脑补图里没有的东西我会在 prompt 里加一句「只描述确实看到的看不清的别猜」并且抽查一批人工核对。检索方式中文问法召回可排查性图片向量直接跨模态匹配一般密集图差难命中原因不透明图生描述再文字检索明显更好好描述可逐条核对代价说清楚不是没成本。每张图都要过一遍多模态模型生成描述图多的话这步耗时耗钱是个一次性的预处理工程。还有就是描述质量决定上限模型描述得糙、漏了关键文字那张图基本就搜不到了得靠抽查补救。所以图特别多、又特别重要的我会人工复核重点图的描述。这套图文知识库我搭得不算重。智能体在一个零代码就能配 RAG 的平台上拖的多模态模型直接挂上去给图生描述描述和图一起进托管知识库向量化检索平台包了。省了我自己搭多模态推理和向量库的活。但「描述 prompt 怎么写、哪些图要人工复核」这些还是得自己把关平台给的是流水线喂什么进去、怎么验收还得我管。(多模态模型和 RAG 我都走讯飞星辰 MaaS现成模型和托管知识库直接调没自部署)你们图片知识库是直接跨模态检索还是也走图生描述描述质量怎么保证的评论区聊聊。