核心要点

  • 主链路:文档/查询过 Embedding→向量库 ANN 召回(HNSW/IVF)→可选与 BM25 混合→rerank 精排 Top-K

  • 混合检索补短板:纯向量对专有名词/精确匹配弱,叠加 BM25 关键词召回再融合(如 RRF),兼顾语义与字面

  • 工程关注点:向量库选型(Qdrant/Milvus)、增量更新与一致性、冷启动(无行为数据时靠内容相关性)

  • 建相关性评测集:用 Recall@K、NDCG、MRR 量化效果,离线评测驱动 Embedding 模型与 rerank 迭代

标准回答

需求与指标

让用户用自然语言找到语义相关的内容,而非仅字面匹配。核心指标:Recall@K、NDCG/MRR(排序质量)、查询延迟、索引更新时延。

整体架构

离线侧把文档过 Embedding 模型,写入向量库并建 ANN 索引(HNSW 或 IVF-PQ);在线侧把查询同样编码,做向量召回拿到候选集,可选并行跑 BM25 关键词召回,用 RRF 等方式融合,再用 cross-encoder rerank 精排出最终 Top-K。

关键模块

Embedding 选型决定召回上限,需与领域匹配;向量库(Qdrant/Milvus)负责 ANN、过滤与水平扩展;混合检索弥补纯向量在专有名词、ID、精确短语上的弱项;rerank 用更重的交互模型提升头部精度。

评估

构建带相关性标注的查询集,离线算 Recall@K、NDCG、MRR;线上看点击率、首条命中率,A/B 对比不同 Embedding 与 rerank 方案。

上线与监控

支持增量摄取与按 ID 更新/删除,保证索引与源数据一致;冷启动阶段无用户行为时靠内容相关性,后续接入点击行为优化排序;监控召回延迟、索引滞后与无结果率。

常见误区

⚠️ 常见踩坑

认为纯向量检索能包打天下——它对专有名词、编号、精确短语召回差,必须叠加 BM25 混合;以及忽略 rerank,仅靠 ANN 粗排会让头部相关性不足。

追问

追问 1为什么要混合检索(向量 + BM25)?

向量擅长语义相似但对字面精确匹配(专有名词、型号、ID、稀有词)容易漏召回,BM25 关键词检索恰好相反。两路并行召回后用 RRF(倒数排名融合)或加权合并,既保语义泛化又保字面精确,召回覆盖面明显优于单路,是生产语义搜索的常见配置。

追问 2向量库怎么选型?Qdrant 和 Milvus 区别?

按数据规模、过滤需求与运维成本选。Milvus 面向超大规模、分布式能力强、生态完整,适合亿级向量与高吞吐;Qdrant 轻量、带元数据过滤(payload filtering)友好、部署简单,适合中小规模与需要丰富过滤的场景。中小项目可先用 Qdrant 快速落地,规模上量再评估 Milvus。

追问 3文档频繁更新如何保证索引一致性?

走增量管道:文档变更触发重新 Embedding,按文档 ID 在向量库做 upsert/delete,避免全量重建;HNSW 删除用 tombstone 标记并定期 compaction 回收;为向量带版本与时间戳,检索后校验是否过期;定期跑对账任务确保向量库与源库一致,防止索引漂移。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • qdrant

    高性能向量数据库,6.3K+ stars。高性能、大规模向量数据库和向量搜索引擎,支持相似度检索和语义搜索

  • Milvus

    云原生向量数据库,43,875+ stars。专为 AI 应用设计的分布式向量搜索引擎,支持千亿级向量检索,广泛应用于 RAG、推荐系统和相似性搜索场景

  • Recall

    为 Claude Code 提供持久化记忆能力,完全离线运行,避免每次会话重复解释项目上下文。468 stars。