
个人主页 for_ever_love__ 欢迎各位大佬莅临其他栏目: 大模型开发从0到1 其他栏目: iOS项目总结大全 其他栏目: 我想学python了 其他栏目: iOS UI 文章目录图文混排检索实战图片怎么进向量库、怎么被检索到一、先想清楚图片进索引的三种路线二、路线 AVLM 描述文本的标准流程2.1 描述生成提示词决定上限2.2 切分与入库图 chunks 怎么组织2.3 混合排序图文结果怎么融三、路线 BCLIP 图像向量的混合用法四、命中之后原图追溯与展示五、流水线全景一张图收尾六、成本与质量检查清单七、小结图文混排检索实战图片怎么进向量库、怎么被检索到技术文档的图表、产品手册的示意图、合同里的印章位置——看图说话类query“那个架构图里缓存层画在哪”在纯文本 RAG 里永远答不好因为图从来没进过索引。但把图片也向量化这句话说起来简单做起来有一连串工程决策图片用什么表示、描述文本怎么写、图文怎么统一排序、命中之后怎么把原图还给用户。这篇文章把这条链路完整走一遍。一、先想清楚图片进索引的三种路线路线表示方式检索方式适用A. 描述文本VLM 生成描述 → 文本向量文本语义搜索绝大多数场景的首选B. 图像向量CLIP/SigLIP 编码图像本身图搜图、文搜图以图为主的素材库C. 页级视觉ColPali 整页编码late interaction视觉密集文档前一篇三条路线的选择逻辑文档里插图是辅助配图说明正文→ 路线 A描述文本和正文一起走文本索引简单有效素材库以图为主体设计素材、商品图→ 路线 B整页都是信息财报、论文→ 路线 C。路线 A 是主力本文重点展开顺带讲 B 的混合用法。二、路线 AVLM 描述文本的标准流程2.1 描述生成提示词决定上限图片进向量库之前先用多模态模型生成一段描述文本。这段文本的质量直接决定后续检索质量——描述里没有的信息检索永远找不到。fromopenaiimportOpenAIimportbase64 clientOpenAI()defdescribe_image(image_path:str,context:str)-str:b64base64.b64encode(open(image_path,rb).read()).decode()promptf请为这张文档插图生成检索用描述。要求 1. 说明图的类型架构图/流程图/截图/照片/示意图 2. 概括图的主题和核心内容 3. 提取图中的关键文字、数字、标签如果有 4. 如果图表达了某种关系、流程、结构要说清楚。 文档上下文图片所在章节可能相关也可能无关{context}respclient.chat.completions.create(modelgpt-4o,messages[{role:user,content:[{type:text,text:prompt},{type:image_url,image_url:{url:fdata:image/png;base64,{b64}}}]}],max_tokens400)returnresp.choices[0].message.content几个决定成败的细节注入章节上下文图片在原文里往往依赖上文“下图展示了…”把图片前后的标题和段落一起喂给 VLM描述会准确得多要求提取关键文字图里的Q3 营收 18 亿这种数字是最高频的检索目标必须显式要求提取结构化优于散文让 VLM 按类型/主题/关键元素/关系分点输出切分和 embedding 都受益批量 缓存一次入库几千张图VLM 调用要并发 失败重试描述结果和图片路径一起落库——别重复生成重跑索引不重复烧钱。本地开源替代Qwen-VL、InternVL消费级显卡能跑 7B 版本描述质量够用成本是机器不是 API 费。2.2 切分与入库图 chunks 怎么组织描述文本不是孤立入库的它要嵌回文档结构图块设计一个图对应一~两个 chunk chunk-图1: [元数据] 图类型架构图, 页码12, 章节3.2 系统架构, 图片路径img/p12_fig1.png [内容] 图 3-2 系统架构图。该图展示了三层架构接入层NginxGateway、 服务层Order/Payment 微服务、数据层MySQL 主从 Redis 集群。 图中标注 QPS 峰值为 12k缓存命中率要求 95%。 chunk-图1-正文关联: [内容] 见图 3-2。接入层负责...设计要点页码 章节 图片路径进 metadata这是后面原图追溯的唯一线索描述里显式写图 3-2编号用户问3-2 那张图时能命中描述和相邻正文分别成块但互相引用检索到任一边都能带上另一边的上下文。2.3 混合排序图文结果怎么融用户查询可能命中文本 chunk也可能命中图 chunk。两路结果的融合排序是核心问题方案 1RRFReciprocal Rank Fusion——无脑融合不问分数哪来defrrf_fuse(text_results,image_results,k60):scores{}forrank,docinenumerate(text_results):scores[doc.id]scores.get(doc.id,0)1/(krank1)forrank,docinenumerate(image_results):scores[doc.id]scores.get(doc.id,0)1/(krank1)returnsorted(scores.items(),keylambdax:-x[1])方案 2rerank 统一打分——两路结果文本 chunks 图 chunks以及可选的 ColPali 命中页原图交给 cross-encoder reranker 统一排序质量最高成本也多一次模型调用。实践建议默认 RRF 融合对质量敏感的核心场景上 rerank。融合时图 chunks 可以适度加权——用户搜架构图命中的图块优先级应该高于顺带提到架构图三个字的正文。三、路线 BCLIP 图像向量的混合用法有些场景文本描述会失真——摄影图、设计图、UI 截图VLM 描述能写但看起来像不像这件事描述文本抓不住。这类图加一条 CLIP 向量索引fromtransformersimportCLIPModel,CLIPProcessor modelCLIPModel.from_pretrained(openai/clip-vit-base-patch32)processorCLIPProcessor.from_pretrained(openai/clip-vit-base-patch32)# 图 → 向量inputsprocessor(images[image],return_tensorspt)img_vecmodel.get_image_features(**inputs)img_vecimg_vec/img_vec.norm(dim-1,keepdimTrue)# 文 → 向量同一空间可以直接比inputsprocessor(text[a dashboard with bar charts],return_tensorspt)txt_vecmodel.get_text_features(**inputs)txt_vectxt_vec/txt_vec.norm(dim-1,keepdimTrue)similarity(txt_vec img_vec.T).item()# 0~1CLIP 索引的角色是**以图搜图和视觉相似度兜底**和文本索引、ColPali 页索引并列成三路RRF 融合。CLIP 对细粒度文字图里的小字不敏感别指望它做图里数字是多少的查询——那是路线 A/C 的活。CLIP 描述文本的最佳拍档描述文本负责图里有什么语义层CLIP 负责图长什么样视觉层。设计素材库、电商图搜是两个领域的标配组合。四、命中之后原图追溯与展示检索到图 chunk只是开始用户体验的最后一公里是把用户带到图本身答案里带图生成阶段如果召回里有图 chunk把metadata.图片路径对应的图片 asset URL 一并放进引用列表前端渲染成答案 引用卡片含图缩略点击定位原文档引用卡片记录文件名 页码点击跳转到 PDF 预览并定位到该页该图溯源 metadata 标准化图块的 metadata 至少包含doc_id、page、figure_no、image_path、section——缺一项追溯链路就断图片存储与索引分离原图放对象存储向量库只存路径。重建索引不搬图CDN 加速展示。五、流水线全景一张图收尾文档解析Docling/Unstructured 产出带图片占位的结构 │ ├─ 图片单独提取 → 对象存储原图 缩略图 │ ├─ 图片 章节上下文 → VLM 生成描述文本批量、缓存、并发 │ └─ 描述文本 → chunk 化 → 文本向量索引 metadata: doc_id/page/figure_no/image_path/section 用户查询 │ ├─ 文本索引检索 ──┐ ├─ CLIP 索引检索 ──┼→ RRF/rerank 融合 → Top-K └─可选ColPali ─┘ │ └→ 生成阶段召回的图 chunk → 带上原图 URL → 前端答案 带图引用六、成本与质量检查清单成本控制VLM 描述调用批量并发 结果落库缓存重建索引不重复调用描述文本控制在 200~400 token别让 VLM 写小作文低价值图片logo、装饰线提前过滤进库——用尺寸/位置启发式规则别无脑全描述。质量检查抽 20 张人工评 VLM 描述关键数字、关系、类型是否抓准构造图查询测试集“那张三层架构图”、“Q3 营收柱状图”验证图召回率混合排序调参图块权重上界下界各测一轮端到端验证答案引用里的图片能点开、页码对得上。七、小结图文混排检索的四句话首选路线是 VLM 描述文本注入章节上下文、要求提取关键文字、结构化输出、结果缓存从没人检索的图 不存在的图描述里没写的信息查询永远命中不了描述质量就是图上限融合排序走 RRF 起步图块适度加权核心场景再上 rerankmetadata 决定追溯doc_id/page/figure_no/image_path/section五件套配齐点击引用看到原图的体验才闭环。下一篇讲 GraphRAG微软开的知识图谱增强检索怎么用图的多跳能力补向量检索的短板。