图文检索和语义库如何构建?

考查重点:跨模态表示与图文关联。解析图像与文本并保留关联,可用跨模态共享向量空间做相似检索,或分别检索再融合;用图找文与文找图样例检查匹配

本题目录

参考答案

核心回答

图文检索需要同时解决内容怎样表示和命中后怎样找回原始图文。建库时解析正文、图片和表格,保留文档、页码、图片与周围段落的关联;再选择图片描述加文本检索,或图文共享向量空间两类路线,建立语义索引。查询时在可访问范围内召回、融合和重排,最后通过关联标识取回原文、原图与引用位置。

这里的语义库不只是向量集合,还包括可检索内容、原始素材、来源关系与元数据。图片描述适合帮助检索,但可能遗漏画面细节;因此需要保留原图,而不能只存模型生成的一段话。

怎样选择图文表示

  • 图片转文本:用视觉语言模型生成图片描述,用 OCR 提取图中文字,再用文本 Embedding 建索引。适合产品手册、截图、流程图等以自然语言问答为主的场景;描述负责主要内容和关系,OCR 补充型号、数字、标签等文字。以图找文时,也可以先把查询图片转换为文字再检索,但这会受描述遗漏影响。
  • 图文共享向量空间:使用经过图文对齐训练的模型,例如 CLIP,分别编码图片与文字,再比较向量相似度,可支持文找图、图找文和图找图。图片向量与文本向量需要来自兼容的表示空间,不能仅因维度相同就把任意两种模型的输出直接比较。CLIP 论文说明了图像编码器、文本编码器与对比学习的关系。

也可以同时保留文字描述索引和图片向量索引,分别召回后融合排名。不同通道的原始分数未必可比,应校准分数或采用排名融合,再用与输入类型匹配的重排方式处理候选。是否增加图片向量通道,要用实际图片和问题评测;密集文字与精确数值仍需核对识别结果。

语义库怎样落地

  1. 解析并保留关联。 将正文、标题、图片、表格分开处理;记录文档标识、页码或其他可用定位、图片地址及关联段落。扫描件需要文字识别,多栏和表格还要恢复阅读顺序、行列与单位,单纯拼接识别出的字会破坏含义。
  2. 生成检索单元。 正文按语义切块;图片描述、图片文字可以各建一个检索单元,共同关联同一图片和来源段落。原图放对象存储,结构与关系保存在数据库,向量索引保留回查标识。这样可以用较短描述匹配问题,命中后取回完整证据。LangChain 多向量检索说明将检索用表示与回答用原始材料分开组织。
  3. 建立并维护索引。 文本向量负责语义相近表达,关键词索引补充型号、编号等精确匹配;元数据用于知识库、版本和权限过滤。文档更新、删除或停用时,同步处理其正文块、图片派生块与索引,避免检索到旧图或已删除素材。
  4. 还原图文上下文。 查询命中描述或图片文字后,沿关联标识取回原文及原图,去重并保留来源。如果回答依赖图中未被描述的细节,应让支持视觉输入的模型读取原图;仅使用文本模型时,回答范围取决于已经提取出的文字与描述。

怎样验证效果

用真实问题分别检查:该找的图片能否进入前几条、命中图片是否对应正确段落、图中文字和表格数字是否准确、引用能否回到原图。覆盖同义问法、型号精确匹配、同文档多张相似图片,以及更新或删除后的检索。支持图片查询时,再单独测试以图找文和以图找图;不能用“文找图成功”代替这些能力的验证。

对应教程

参考资料

核心回答

WeKnora 可以把文档图片转成可检索的文字,再关联回原图和来源段落。以图片描述与文字识别这条路线为例,图片处理结果分别写入 image_caption、image_ocr 子块,使用文本内容建立索引;子块通过 ParentChunkID 关联包含图片的文本块,并携带原图信息。命中子块后,系统补齐周围正文,组装带图片引用、识别文字与描述的上下文。

图片处理可以按开关执行,也可以选用 smartocr:先观察图片属性并生成描述,再按属性策略决定是否调用 OCR。因此,这条路线的关键是把图片变成可检索的语义文字,并保住图文关联,不依赖所有图片都进入共享图文向量空间。

从图片到检索块

文档解析后,ImageResolver.ResolveAndStore() 将图片写入存储并替换正文中的图片地址。多模态阶段按图片创建后台任务;ImageMultimodalService 读取原图,选择本次任务指定的处理流水线。图片提取与任务编排、单图处理。

默认流水线按各自开关执行描述和 OCR;smartocr 则通过一次观察调用取得属性和描述,再由 DecideOCR() 决定是否继续识别文字。观察失败时,默认采用保守策略继续 OCR,这项回退也可配置。默认流水线、按需 OCR。

有非空描述或识别文字时,处理器分别创建子块,将文字存入 Content,将图片地址等信息存入 ImageInfo,并保留来源定位和 ParentChunkID。在启用相应索引能力的知识库中,indexChunks() 把这些文字内容交给 Embedding 模型和检索引擎,提供描述匹配与文字匹配入口。子块构建、文字索引。

命中后怎样找回正确图文

合并阶段识别图片子块,先找到对应文本块;启用父子分块时,再补齐更大的 parent_text 内容。同时保留命中的识别文字,并按命中文本范围和图片地址收窄图片信息,避免把同一大段中的其他图片内容混进来。图片子块的父块解析。

例如检索产品手册中的“故障灯闪三次如何处理”:图片描述可提供故障灯与操作流程的语义,OCR 可提供图中的错误码和步骤文字;召回后需要保留这张图及其对应说明。验证时同时检查错误码是否识别正确、是否关联到正确图片、前提条件是否来自同一段说明。

与直接图片向量的区别

该版本也支持单独开启图片向量:知识库启用 ImageVectorEnabled,且向量模型与调用协议支持图片输入时,才会创建 image_vector 子块并写入原图向量。这项能力默认关闭,是与图片描述索引并存的另一条检索通道。能力开关、原图向量索引。

在普通问答流水线中,模型支持视觉输入时,系统会为图片向量命中的结果附加原图;仅命中描述不自动触发这项处理。对描述遗漏、数字读错等问题,应回查原图与图片处理结果,分别定位内容提取、召回和上下文关联的问题。原图附加条件。

相关面经

4 篇

字节跳动

Agent
一面
查看原面经 →
多模态检索是怎么做的?

阿里巴巴

AI 应用开发工程师
实习一面
查看原面经 →
图文检索怎么做的;语义库是怎么构建的

公司未注明

AI Agent 研发实习岗
实习
查看原面经 →
怎么进行多模态知识检索?

字节跳动

Agent
一面
查看原面经 →
多模态检索

收录题集

6 个来源,共7 份题集

Agent 开发实战追问

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

AI 系统设计

AMIT SHEKHAR · ai-engineering-interview-questions · 1 条原题

查看题集 →

AI 与机器学习系统设计

Alireza Dirafzoon · AIMLInterviews · 2 条原题

查看题集 →

大语言模型

Datawhale · daily-interview · 1 条原题

查看题集 →

RAG 与检索系统:从 chunk 设计到多路召回

Onefly · zero2Agent · 1 条原题

查看题集 →
展开剩余 2 份题集

阿里巴巴问答汇编

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

AI多模态精华版·基石模型核心技术

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

相关题目

4 题