标准回答
一、先给出结论和背景
- 需求与指标:先澄清意图:电商找同款(强调精确)、内容找相似、还是用文字搜图(跨模态)?库规模(百万到亿级)、延迟预算(几十毫秒)、核心指标 Recall@K 与人工相关性。
- 整体架构:离线:图片入库 → 特征提取 → 建 ANN 索引。在线:查询(图或文)→ 编码 → ANN 召回 TopN → rerank → 属性过滤 → 返回。
二、拆开关键步骤和判断点
- 统一 Embedding:用 CLIP 类双塔模型把图像与文本映射到同一向量空间,使「图搜图」「文搜图」「图搜文」共用一套索引。垂直场景(如电商同款)可在领域数据上用对比学习微调,提升细粒度区分。
- 召回与索引:向量库(Qdrant/Milvus 类)用 HNSW 或 IVF-PQ 建近似最近邻索引做粗召回;亿级规模做分片 + 量化(PQ)压缩内存、平衡召回率与延迟。支持增量入库与索引重建。
三、补上落地边界和取舍
常见误区
⚠️ 常见踩坑
误区一:容易答偏的地方:只做单塔向量召回不加 rerank 与属性过滤:纯 ANN 在细粒度(同款 vs 相似款)上区分力不足;同时别忽略亿级索引的量化/分片与增量更新,否则上不了规模或延迟失控。
追问
追问 1:ANN 索引怎么选?HNSW 和 IVF-PQ 如何取舍?
HNSW 召回率高、查询快,但内存占用大、构建慢、增量更新成本高,适合中等规模、低延迟高召回场景。IVF-PQ 用倒排 + 乘积量化大幅压缩内存、支持超大规模,代价是召回率略降、需调 nprobe 平衡精度与速度。亿级常用 IVF-PQ 或 DiskANN 把向量落盘;也可两段式:PQ 粗召回 + 原始向量精排找回精度。
追问 2:亿级图片库如何做索引更新与扩展?
按 ID/类目分片,每片独立建索引并加副本提升吞吐与可用性;新图走增量入库到可写分片,定期合并重建;用量化压缩内存并把冷数据落盘(DiskANN)。更新策略:实时写入小的增量索引 + 定期全量重建主索引,查询时合并两者结果,避免频繁重建大索引的开销。
追问 3:如何评估检索质量,离线指标和线上效果怎么对齐?
离线用人工标注的相关性集算 Recall@K、mAP、NDCG,覆盖同款/相似/跨模态多类查询。但离线高不代表线上好,需线上 A/B 看点击率、加购/转化与人工抽样相关性评审。两者不一致时检查标注分布是否贴合真实查询、是否存在长尾与冷门查询未覆盖,并把线上难例回流补充标注与微调 embedding。
🔗 相似问题
同一考点的不同问法,换着练更稳
延伸学习
按主题分类的相关资源,便于系统复习
