84

千万级向量搜索如何设计架构以支持低延迟和高吞吐?

编程能力与工程实践困难

📋 面试问题

千万级向量搜索如何设计架构以支持低延迟和高吞吐?

✅ 期望回答

架构设计: 索引优化:
  • 使用近似最近邻索引(ANN)代替精确搜索(KNN)、牺牲少量精度换数量级速度提升
  • 算法选择:HNSW(高精度,内存大)/ IVF-PQ(精度-内存平衡)/ DiskANN(SSD存储)
  • 索引参数:efConstruction(HNSW构建参数)、nlist(IVF聚类数)

分片 (Sharding):
  • 水平切分:数据按ID哈希分片到多个节点
  • 查询扇出(Scatter-Gather):请求广播到所有分片 -> 各分片独立搜索 -> 汇总归并Top-K
  • 一致性哈希:节点增减影响最小

副本 (Replication):
  • 每个分片N个副本(支持读写分离)
  • 多副本搜索:用最快的副本结果(Tail Latency优化)

缓存加速:
  • 高频Query结果缓存(Redis)
  • 向量中心点的「种子搜索」预计算

基础设施选择:
  • 100万以下 -> Qdrant/Pinecone单机(最简单)
  • 100万-1亿 -> Milvus集群(分布式)
  • 1亿+ -> Milvus + 自建分布式搜索层

延迟目标:单次向量检索 < 10ms(ANN + 内存索引 + 无磁盘IO)
#向量搜索#架构#大规模