84
千万级向量搜索如何设计架构以支持低延迟和高吞吐?
编程能力与工程实践困难
📋 面试问题
千万级向量搜索如何设计架构以支持低延迟和高吞吐?
✅ 期望回答
架构设计:
索引优化:
- 使用近似最近邻索引(ANN)代替精确搜索(KNN)、牺牲少量精度换数量级速度提升
- 算法选择:HNSW(高精度,内存大)/ IVF-PQ(精度-内存平衡)/ DiskANN(SSD存储)
- 索引参数:efConstruction(HNSW构建参数)、nlist(IVF聚类数)
- 水平切分:数据按ID哈希分片到多个节点
- 查询扇出(Scatter-Gather):请求广播到所有分片 -> 各分片独立搜索 -> 汇总归并Top-K
- 一致性哈希:节点增减影响最小
- 每个分片N个副本(支持读写分离)
- 多副本搜索:用最快的副本结果(Tail Latency优化)
- 高频Query结果缓存(Redis)
- 向量中心点的「种子搜索」预计算
- 100万以下 -> Qdrant/Pinecone单机(最简单)
- 100万-1亿 -> Milvus集群(分布式)
- 1亿+ -> Milvus + 自建分布式搜索层
#向量搜索#架构#大规模