真实面经题目 · 原创解析

文本搜图场景如何设计图片搜索系统,让用户搜“小狗”时能召回包含小狗的图片?

文本搜图系统要让用户输入“小狗”时召回包含小狗的图片,核心不是只按文件名搜索,而是建立图片内容理解、文本语义表示、索引召回和排序评估的完整链路。图片侧需要离线或实时提取对象标签、检测框、caption、OCR、视觉向量和多模态向量;查询侧需要把文本解析成语义向量和关键词;召回侧结合倒排索引、向量检索和元数据过滤;排序侧再按语义匹配、对象置信度、图片质量和用户意图重排。

出现于:京东 · 后端开发

60 秒回答模板

回答可以按离线建库、在线查询、排序评估三段展开。离线阶段先对图片做内容理解:用分类或检测模型识别是否有狗、小狗、宠物等对象,必要时保留检测框和置信度;用图文模型生成图片 embedding 或 caption embedding;再把标签、caption、OCR、拍摄时间、权限等元数据写入倒排索引和向量索引。在线阶段用户输入“小狗”后,做分词、同义词扩展和文本向量编码,同时走关键词召回和多模态向量召回,得到候选图片。排序阶段融合文本图片相似度、对象检测置信度、caption 匹配、图片质量、时效、权限和多样性,最终返回缩略图。最后说明难点:小目标、遮挡、同义词、多语言、误检漏检、冷启动、索引更新、延迟成本和 Recall@K、NDCG、人工标注集等评估。

考点 内容理解
难度 真实面经题
回答目标 让读者能设计一条完整的文本搜图链路:图片入库理解、图文语义表示、多索引召回、融合排序、权限更新和评估迭代,并能围绕“小狗”说明召回、误召和工程延迟的取舍。

深入解析

01

明确检索目标

文本搜图的目标是用自然语言描述找图片内容,而不是只匹配标题、文件名或相册名。用户搜“小狗”时,系统应召回图片内容实际包含小狗的图片,也可以按产品目标扩展到狗玩具、卡通狗或宠物用品,但这些扩展必须能被意图识别和排序控制,避免结果漂移。

02

图片离线理解

图片入库时应提取多种内容信号:通用分类给出粗粒度类别,目标检测给出狗的位置和置信度,细粒度模型区分狗、幼犬、猫等相近类别,caption 模型生成自然语言描述,OCR 识别图片文字。多信号互补可以减少单一模型漏检,例如小狗只占图片局部区域时,检测框信号比整图分类更有价值。

03

多模态向量表示

仅靠标签会受词表限制,无法覆盖用户多样表达。可以使用图文对齐模型把图片和文本映射到同一语义空间:图片侧存视觉 embedding,查询“小狗”编码成文本 embedding,向量相似度高的图片进入候选集。这样能够召回没有显式标签但语义相关的图片,也能处理幼犬、宠物狗、puppy 等表达差异。

04

索引设计

实际系统通常同时使用倒排索引和向量索引。倒排索引存标签、caption、OCR 和结构化字段,适合精确词匹配、过滤和解释;向量索引用 ANN 做语义召回,适合开放词汇和相似概念。元数据索引用于权限、用户相册、时间、地点、图片类型等过滤,确保只返回用户有权看到且符合场景约束的图片。

05

在线查询流程

用户输入后先做归一化、分词、纠错、同义词和语言扩展,再判断意图是对象、场景、文字内容、人物还是组合条件。对“小狗”可同时生成关键词条件和文本向量,分别从标签倒排、caption 倒排和向量索引召回候选。多路召回要做去重、配额控制和召回通道记录,便于后续调权。

06

排序与融合

候选排序不能只看向量相似度。应融合检测置信度、检测框面积和位置、caption 匹配度、文本图片向量相似度、图片清晰度、用户上下文、时间偏好和多样性。对于“小狗”这种对象查询,检测到 dog/puppy 且置信度高的图片应优先;只有语义相近但没有对象证据的图片可以排后或作为扩展结果。

07

系统工程链路

图片写入后需要异步特征抽取、索引更新和版本管理;在线查询要控制延迟,常用缓存、候选数量上限、分层召回和轻重排分离。模型升级时要支持 embedding 重建或双索引灰度,避免新旧向量不可比。还要考虑删除图片、权限变化和用户隐私,索引必须及时反映可见性。

08

评估和迭代

评估需要构建查询到图片的标注集,看 Recall@K、Precision@K、NDCG、零结果率和用户点击保存行为。还要按小目标、遮挡、卡通、黑白图、多狗多物体、相似动物和低清晰度图片切片分析。线上 A/B 关注点击率、首屏满意度、延迟和投诉反馈,离线高分不代表线上一定好用。

易错点

  • 把文本搜图设计成文件名或标题搜索,忽略图片内容理解。
  • 只做单一路向量检索,不设计标签、OCR、元数据过滤和权限校验。
  • 认为整图分类足够,忽视小目标、遮挡和多物体图片需要检测或区域级信号。
  • 没有区分召回和排序,把相似度最高直接当最终结果,导致误检和结果单一。
  • 忽略同义词、多语言和口语表达,导致“小狗”“幼犬”“puppy”召回不一致。
  • 索引更新只考虑新增图片,不考虑删除、权限变更、模型版本升级和向量重建。
  • 只看点击率不看召回标注集和困难切片,无法判断漏召回还是排序问题。

面试官追问

如果图片没有人工标签,怎么搜到小狗?

可以在入库时用检测、分类、caption 和图文 embedding 自动提取内容信号,查询时通过标签召回和语义向量召回共同找到相关图片。

为什么不只用向量检索?

向量检索擅长语义泛化,但精确过滤、权限控制、OCR 文本和可解释标签匹配更适合倒排与元数据索引;多路召回更稳。

小狗只出现在图片角落怎么办?

需要目标检测或区域级特征,而不是只依赖整图分类。检测框、置信度和区域 embedding 能提升小目标召回。

如何处理“小狗”和“puppy”“幼犬”的同义表达?

查询侧可以做同义词和多语言扩展,向量侧使用图文对齐模型表达语义相近性,排序时再根据对象证据校准。

如何避免搜“小狗”返回狼、狐狸或玩具?

需要细粒度分类、检测置信度阈值、负样本训练和重排规则。若产品允许卡通或玩具扩展,也应通过意图或分组展示区分。

图片删除或权限变化后索引怎么办?

索引需要有可见性过滤和增量更新机制,删除或权限变更应及时更新元数据索引,必要时查询阶段再做最终权限校验。