标准回答
需求与指标
先澄清意图:电商找同款(强调精确)、内容找相似、还是用文字搜图(跨模态)?库规模(百万到亿级)、延迟预算(几十毫秒)、核心指标 Recall@K 与人工相关性。
整体架构
离线:图片入库 → 特征提取 → 建 ANN 索引。在线:查询(图或文)→ 编码 → ANN 召回 TopN → rerank → 属性过滤 → 返回。
统一 Embedding
用 CLIP 类双塔模型把图像与文本映射到同一向量空间,使「图搜图」「文搜图」「图搜文」共用一套索引。垂直场景(如电商同款)可在领域数据上用对比学习微调,提升细粒度区分。
召回与索引
向量库(Qdrant/Milvus 类)用 HNSW 或 IVF-PQ 建近似最近邻索引做粗召回;亿级规模做分片 + 量化(PQ)压缩内存、平衡召回率与延迟。支持增量入库与索引重建。
Rerank 与混合检索
粗召回的 TopN 用更重的交叉编码或多特征模型 rerank,结合细粒度视觉相似与业务信号精排。叠加结构化属性过滤(类目、价格、颜色)与关键词的 混合检索,兼顾语义与精确匹配。
规模与评估
向量分片 + 副本扩展吞吐;热点缓存高频查询。离线用标注集评 Recall@K / mAP,在线用点击率、转化与人工相关性评审驱动模型与索引参数迭代。
常见误区
⚠️ 常见踩坑
只做单塔向量召回不加 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。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
🛠️ AI 工具